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

使用while循环python无法到达循环,python,for-loop,while-loop,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(fi

即使我在这里搜索了很多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”删除列表时,它使我返回到循环打印“键入列表元素”时

我做错了什么


提前感谢。

我假设您正在使用Python 2。在这里,input()计算输入。因此,您无法与字符“1”进行比较,但需要使用整数1:

while user_choice == 1:
    ...

第一个输入一次接受一个元素。因此,要用5个元素填充列表,你必须做5个输入。

你的
用户选择
在元素达到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
l=[]
choice=int(输入('choice?1-add,2-remove,3-exit'))
尽管如此:
如果选项==1:
如果len(l)<5:
l、 追加(输入(“新输入”))
印刷品(l)
choice=int(输入('choice?'))
其他:
打印('列表已满')
选项=int(输入('2-删除或3-退出'))
elif选项==2:
如果不是l:
打印('列表为空')
choice=int(输入('choice?1-add,2-remove,3-exit'))
尝试:
l、 删除(输入('remove?'))
除值错误外:
打印('无此值')
choice=int(输入('choice?'))
elif选项==3:
打破
这是相当冗长的,因为它是如何在以前,基本上,它允许你进入一个新的选择,除非你想退出。它会检查列表中的元素是否少于5个,然后再允许您追加,否则它只会打印
“列表已满”
,然后返回到提示进行新选择

与要删除项类似,它检查列表是否包含元素。如果列表为空,它将打印
列表为空
,并提示进行新选择。类似地,如果该值不在列表中,它将打印
value not found
,并提示进行新选择


最后退出只会中断整个循环。

input
返回一个字符串。您计划如何退出流?它在什么时候停止并返回您的列表。在底部的某个地方,有另一个while和break。你推荐一种退出的方式吗?如果是,请告诉我。我添加了我的答案,如果有帮助请告诉我!这并没有明确地解决这个问题。而while被清楚地显示为与字符串类型而不是int进行比较。您可能还需要注意,它不能确保您的输入在1到3的范围内。您可能需要为此添加一个助手函数。最后,如果您发现此答案解决了您的问题,您可以通过单击箭头下方的复选框来帮助他人!我承认这是非常有用和有用的,尽管我正在尝试做其他事情,尽管这帮助我弄清楚while是如何工作的。谢谢你,伯纳德。