如何在Python中向列表添加临时选项并基于用户响应显示元素
我在如何在Python中向列表添加临时选项并基于用户响应显示元素,python,list,Python,List,我在python中有这个列表,它可以包含n元素。现在我要做的是一次显示这个列表中的4个元素,并添加一个选项“next”来显示下一组4个元素。如果我的清单是这样的: ['room 11','room 22','room 33','room 44','room 55','room 65','room 77'] 1. Room Number : room 11 2. Room Number : room 22 3. Room Number : room 33 4. Room Number : roo
python
中有这个列表
,它可以包含n
元素。现在我要做的是一次显示这个列表中的4个元素,并添加一个选项“next”来显示下一组4个元素。如果我的清单是这样的:
['room 11','room 22','room 33','room 44','room 55','room 65','room 77']
1. Room Number : room 11
2. Room Number : room 22
3. Room Number : room 33
4. Room Number : room 44
5. Next
def room_try():
room_list_num = 0
room_list_slot = 0
room_list = ['room 11', 'room 22', 'room 33', 'room 44', 'room 55', 'room 66', 'room 77', 'room 88', 'room 99', 'room 110', 'room 111', 'room 112']
inner_list_str = ["%d. Room number: %s" % (i, x)
for i, x in enumerate(room_list, 1)]
while room_list_slot < len(room_list):
print('Following are the available rooms. Please select the corresponding number of the room you want: \n {}'.format(
'\n '.join(inner_list_str[room_list_slot:(room_list_slot + 4)])))
room_list_num = int(input(" {}. Next\n".format(room_list_slot + 5)))
if (room_list_slot + 5 != room_list_num):
print('Room selected: ' + str(room_list[room_list_num - 1]))
return
else:
room_list_slot += 4
print("You haven't choose any room.")
if __name__ == '__main__':
room_try()
然后将其显示给用户,如下所示:
['room 11','room 22','room 33','room 44','room 55','room 65','room 77']
1. Room Number : room 11
2. Room Number : room 22
3. Room Number : room 33
4. Room Number : room 44
5. Next
def room_try():
room_list_num = 0
room_list_slot = 0
room_list = ['room 11', 'room 22', 'room 33', 'room 44', 'room 55', 'room 66', 'room 77', 'room 88', 'room 99', 'room 110', 'room 111', 'room 112']
inner_list_str = ["%d. Room number: %s" % (i, x)
for i, x in enumerate(room_list, 1)]
while room_list_slot < len(room_list):
print('Following are the available rooms. Please select the corresponding number of the room you want: \n {}'.format(
'\n '.join(inner_list_str[room_list_slot:(room_list_slot + 4)])))
room_list_num = int(input(" {}. Next\n".format(room_list_slot + 5)))
if (room_list_slot + 5 != room_list_num):
print('Room selected: ' + str(room_list[room_list_num - 1]))
return
else:
room_list_slot += 4
print("You haven't choose any room.")
if __name__ == '__main__':
room_try()
如果用户选择1
(用户选择与列表中房间对应的号码),则打印所选房间:11号房间
;如果用户选择2
,则打印所选房间:22号房间
。如果用户选择了5
,则显示列表中的下一组4个元素(如果剩余的元素少于4个,则只显示剩余的元素)
我编写了这段代码,它只是部分代码,因为我很难完全实现此功能:
room_list_num = 0
room_list_slot = 0
def room_try():
room_list = ['room 11','room 22','room 33','room 44','room 55','room 66','room 77','room 88','room 99','room 110','room 111','room 112']
inner_list_str = ["%d. Room number: %s" % (i, x)
for i, x in enumerate(room_list, 1)]
global room_list_slot
while room_list_slot < len(room_list):
room_list_num = input('Following are the available rooms. Please select the corresponding number of the room you want: \n {}'.format( '\n '.join(inner_list_str[room_list_slot:(room_list_slot+4)])))
room_list_slot += 4
print('Room selected: '+ str(room_list[room_list_num]))
if __name__ == '__main__':
room_try()
room\u list\u num=0
房间\u列表\u插槽=0
def room_try():
房间清单=[“11号房间”、“22号房间”、“33号房间”、“44号房间”、“55号房间”、“66号房间”、“77号房间”、“88号房间”、“99号房间”、“110号房间”、“111号房间”、“112号房间]
内部列表\u str=[%d.房间号:%s”%(i,x)
对于枚举中的i,x(房间列表,1)]
全局文件室\u列表\u插槽
当房间列表插槽
我遇到的困难是如何将临时值“Next”(下一步)与要显示的每组4个元素相加,然后根据用户的响应移动到列表中?您可以执行以下操作:
['room 11','room 22','room 33','room 44','room 55','room 65','room 77']
1. Room Number : room 11
2. Room Number : room 22
3. Room Number : room 33
4. Room Number : room 44
5. Next
def room_try():
room_list_num = 0
room_list_slot = 0
room_list = ['room 11', 'room 22', 'room 33', 'room 44', 'room 55', 'room 66', 'room 77', 'room 88', 'room 99', 'room 110', 'room 111', 'room 112']
inner_list_str = ["%d. Room number: %s" % (i, x)
for i, x in enumerate(room_list, 1)]
while room_list_slot < len(room_list):
print('Following are the available rooms. Please select the corresponding number of the room you want: \n {}'.format(
'\n '.join(inner_list_str[room_list_slot:(room_list_slot + 4)])))
room_list_num = int(input(" {}. Next\n".format(room_list_slot + 5)))
if (room_list_slot + 5 != room_list_num):
print('Room selected: ' + str(room_list[room_list_num - 1]))
return
else:
room_list_slot += 4
print("You haven't choose any room.")
if __name__ == '__main__':
room_try()
def room_try():
房间列表数量=0
房间\u列表\u插槽=0
房间清单=[“11号房间”、“22号房间”、“33号房间”、“44号房间”、“55号房间”、“66号房间”、“77号房间”、“88号房间”、“99号房间”、“110号房间”、“111号房间”、“112号房间]
内部列表\u str=[%d.房间号:%s”%(i,x)
对于枚举中的i,x(房间列表,1)]
当房间列表插槽
这将对您有所帮助
room_list_num = 0
room_list_slot = 0
def room_try():
room_list = ['room 11','room 22','room 33','room 44','room 55','room 66','room 77','room 88','room 99','room 110','room 111','room 112']
inner_list_str = ["%d. Room number: %s" % ((i%4)+1, x)
for i, x in enumerate(room_list, 0)]
global room_list_slot
counter = 0
while counter*4 < len(room_list):
room_list_num = int(input('Following are the available rooms. Please select the corresponding number of the room you want: \n {}'.format( '\n '.join(inner_list_str[room_list_slot:(room_list_slot+4)]) + ['\n 5. Next\n','\n'][room_list_slot+4>=len(room_list)])))
room_list_slot += 4
if room_list_num == 5:
counter += 1
continue
break
print('Room selected: '+ str(room_list[counter*4+room_list_num-1]))
if __name__ == '__main__':
room_try()
room\u list\u num=0
房间\u列表\u插槽=0
def room_try():
房间清单=[“11号房间”、“22号房间”、“33号房间”、“44号房间”、“55号房间”、“66号房间”、“77号房间”、“88号房间”、“99号房间”、“110号房间”、“111号房间”、“112号房间]
内部列表\u str=[%d.房间号:%s”%((i%4)+1,x)
对于枚举中的i,x(房间列表,0)]
全局文件室\u列表\u插槽
计数器=0
当柜台*4=len(room_list)])
房间\u列表\u插槽+=4
如果房间列表数量=5:
计数器+=1
持续
打破
打印('所选房间:'+str(房间列表[柜台*4+房间列表编号-1]))
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
房间
当我选择5
时,它应该会显示接下来的4个房间,但它只是以打印Room selected:Room 55
结束。你是个骗子)。这是一个输出)以下是可用的房间。请选择所需房间的相应号码:1。房间号:11-2房间。房间号:223房间。房间号:334房间。房间号:44号,下一个房间是5号。以下是可用的房间。请选择所需房间的相应号码:5。房间号:556房间。房间号:667房间。房间号:778房间。房间号:889,下一个。我为什么要撒谎?首先,我在第print('Room selected:'+str(Room\u list[Room\u list\u num-1])行得到错误TypeError:str和int不支持的操作数类型。然后我将room\u list\u num
放入int()
中。然后,当我输入5以查看接下来的4个元素时,它只需输入55房间,您使用的python版本是什么?我有python 3.6,在最后一组元素之前,它的执行是正确的。当没有下一组元素可用时,它也会将next
显示为一个选项。因此,当已经显示上次设置时,它不应该显示next
,因为如果用户当时选择next
,它将抛出错误,从而修复问题。我还通过在while循环中添加另一个if条件进行了修复,以检查它是否是最后一组元素。另一个问题是,假设列表中只有9个元素,那么最后一个集合只有1个元素。但是next
前面的number选项在应该显示2
时仍将显示5
。