即使我在这里搜索了很多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”删除列表时,它使我回到循环打印“键入您的列表元素”
我在做什么错了?
谢谢。
答案 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个输入。