使用" Done"的输入终止我的While循环。

时间:2014-10-02 20:56:47

标签: python list if-statement python-3.x while-loop

我正在为我的编程类简介编写一个程序。要求是让用户输入名人姓名列表,将他们添加到列表中,打印输入了多少名人,然后打印输入的名人列表。我必须使用一个循环,所以我使用了一个while循环;但是,当用户将Done输入到名称输入字段时,我无法结束。

下面是代码,我尝试使用if else语句来控制循环。

def main():
    celebs = []

    again = 'y'

    while again == 'y':
        name = input('Enter a name: ')
        if name == 'Done':
            again == 'n'
        else:
            again == 'y'


        celebs.append(name)



    print('You entered ',len(celebs), 'celebrities to the list')
    print('   ')
    print('The ',len(celebs),'celebrities you entered were: ')

    for name in celebs:
        print(name)
main()

5 个答案:

答案 0 :(得分:5)

在if / else中的语句中将double equals更改为单个equals。您需要再次为'分配一个值,但是双等于仅仅是比较。

或者,您可以查看“休息”的使用情况。声明。

答案 1 :(得分:1)

使用==进行比较,使用=进行分配。这应该可以解决问题。

答案 2 :(得分:1)

避免添加'完成'到列表中,跳到下一个迭代:

while again == 'y':
    name = input('Enter a name: ')
    if name == 'Done':
        again = 'n'
        continue
    else:
        again = 'y'
    celebs.append(name)

可以简化为:

while again == 'y':
    name = input('Enter a name: ')
    if name == 'Done':
        again = 'n'
        continue
    celebs.append(name)

最好在这里使用bool值:

again = True
while again:
    name = input('Enter a name: ')
    if name == 'Done':
        again = False
        continue
    celebs.append(name)

或者您可以使用break

while True:
    name = input('Enter a name: ')
    if name.strip() == 'Done':
        break
    celebs.append(name)

答案 3 :(得分:0)

如果名字=="完成",你应该这样做:

again = 'n' # not again == 'n'

(类似于再次设置=' y',虽然我认为该行是不必要的,因为再次已经等于' y'。)

答案 4 :(得分:0)

您的代码中有比较运算符而不是赋值。

again == 'n'更改为again = 'n'again == 'y'again = 'y'