无法使用while循环python到达循环

时间:2018-10-21 18:33:46

标签: python for-loop while-loop

即使我在这里搜索了很多while循环,仍然找不到我的问题!

    mylist = []

user_choice = input(' 1: Make a list\n 2: Delete a list\n 3: Delete elements from a list\n 4: Quit\n ')

while user_choice == '1':
    first_input = input('Type your list elements: ')
    mylist.append(first_input)
    if len(mylist) == 5:
        user_choice = input(' 1: Delete a list\n 2: Delete elements from a list\n 3: Quit\n ')
        if user_choice == 3:
           break
        elif user_choice == 1:
            mylist.clear()
        elif user_choice == 2:
            print('Which element you want to delete? ')
            print(mylist)

那是我的代码。

当代码到达'if user_choice == 3'及以下时,我会不断返回while循环,而我想获得if用户的选择!

用户按“ 1”键,它会输入他的列表元素,然后将追加到列表中。当我的列表达到5个元素时,它提示用户选择是否要使用pop()删除列表或列表中的元素(没有到达该列表),最后选择是否要退出。当我按“ 1”删除列表时,它使我回到循环打印“键入您的列表元素”

我在做什么错了?

谢谢。

2 个答案:

答案 0 :(得分:1)

您的user_choice一旦元素达到5,就不会更新,这就是它停留在内部循环中的原因。

看看这是否对您有用:

l = []
choice = int(input('choice? 1- add, 2- remove, 3- exit '))
while True:
    if choice == 1:
        if len(l) < 5:
            l.append(input('new input '))
            print(l)
            choice = int(input('choice? '))
        else:
            print('list is full ')
            choice = int(input('2- remove or 3-exit '))
    elif choice == 2:
        if not l:
            print('list is empty')
            choice = int(input('choice? 1- add, 2- remove, 3- exit '))
        try:
            l.remove(input('remove? '))
        except ValueError:
            print('No such value ')
        choice = int(input('choice? '))
    elif choice == 3:
        break

由于以前的情况,它有点罗y,基本上,除非您要退出,它允许您输入新的选择。在允许您追加之前,它会检查列表中的元素是否少于5个,否则它仅打印'list is full',然后返回提示您进行新的选择。

类似于您要删除的项目,它会检查列表中是否包含元素。如果列表为空,它将打印list is empty并提示您进行新的选择。同样,如果该值不在列表中,它将打印value not found并提示您进行新的选择。

最后退出只会破坏整个循环。

答案 1 :(得分:-1)

我假设您使用的是Python2。在这里,input()会评估输入。因此,您不能与char'1'进行比较,而需要使用Integer 1:

while user_choice == 1:
    ...

并且first_input一次占用一个元素。因此,要用5个元素填充列表,您必须做5个输入。