如何在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