如何停止循环

时间:2014-09-22 01:50:49

标签: python list loops input

我写了这段代码,我试图让它发挥作用。我想要做的是提示用户输入员工的姓名,并使用列表来存储名称。

现在我遇到问题的部分是循环,循环假设在用户键入' done'时停止,然后显示输入的名称数量,以及另一个循环,显示各自输入的名称。

我不知道我在使用代码时遇到了什么问题,但是在用户输入了名称之后,它会说:'按Enter继续添加名称'它还会说:'如果您想停止添加名称,请输入= done'

如果用户点击进入,则应该询问另一个名称并重复问题以查看用户是想添加更多还是停止。但由于某种原因,即使用户按Enter键继续添加名称,它仍会输出输入的名称数量和名称列表。我不希望这种情况发生,我只是试图将它显示在仅显示结果的位置,如果用户键入“完成”的话。但是单词“完成”,无法在输出中显示。我已经仔细查看了代码,无法弄清楚如果做错了会怎样。

这是我的代码:

employee_list=[]

stop='done'

while stop == 'done':

    employee_name=input('Enter name of employee:')

    employee_list.append(employee_name)

    print('Press enter to continues adding names')

    enter_another=input('If you would like to stop adding names, type=done  ')

      print()

    list_size=len(employee_list)

    print('The number of employees you have entered: ', list_size)

    for index in range(list_size):
        print(employee_list[index])

2 个答案:

答案 0 :(得分:1)

如果某人输入done,您就无法检查代码。

例如:

if enter_another == "done":
    stop == "finished now"

但这没有意义,你的支票是说“如果停止完成然后继续”,这在语义上毫无意义。

请改为尝试:

more_employees = True
while more_employees: # Never do thing == True
    # ... your code

    enter_another=input('If you would like to stop adding names, type=done  ')

    if enter_another == "done":
        more_employees = False

    # ... the rest of your code

如上所述,PEP8 recommends against comparing thing == True

  

不要使用==。

将布尔值与True或False进行比较
Yes:   if greeting:
No:    if greeting == True:
Worse: if greeting is True:

答案 1 :(得分:0)

试试这个。我把你的印刷条件放在了循环之外。

employee_list=[]
stop='done'

while stop == 'done':
    employee_name=raw_input('Enter name of employee: ')

    employee_list.append(employee_name)

    print 'Press enter to continue adding names'

    enter_another=raw_input('If you would like to stop adding names, type=done  \n')

    if enter_another == 'done': 
        stop = 'random'

print 
list_size=len(employee_list)
print 'The number of employees you have entered: ', list_size

for index in range(list_size):
    print employee_list[index],