如何创建一个以“done”python 3.4结尾的循环

时间:2014-10-07 03:16:04

标签: python python-3.x

我试图创建一个程序,使用列表来存储一些着名名人的名字。我需要使用循环来提示用户输入名称并将其添加到列表中。当用户输入"完成"循环应该停止。然后该程序应输出输入的名人数量。最后,程序应该使用另一个循环来显示名人姓名,每个名称都在自己的行上,并且"完成"不应该在名人列表中我在哪里出错了,因为它显示了"名人姓名"一遍又一遍地。 如果这对任何人有帮助,那就是我的教授不得不说的话。

你的名人计划真的需要更多背景。我看了你的代码,可以告诉我该怎么做,但对于一个用户来说,它一遍又一遍地显示了名人的名字。

list = []
while(1):
    name = input("enter celebrity name:") 
    if name == "done":
        break;
    else:
        list += [name] 

print(len(list))

for i in range(len(list)):
    print(list[i])

2 个答案:

答案 0 :(得分:3)

好的:

  1. 永远不要将列表用作变量名称 - 这是不好的形式,最终会让你陷入困境。
  2. 有一种更简单的方法来循环列表的内容,您不需要使用索引。
  3. 您的程序没有告诉用户如何使用该程序,或者如何停止输入名称 - 也许您的教授建议您的程序应该生成一些有用的说明。此外,当它完成它只是打印一个数字,一个名单,也许一些有用的信息也会有所帮助。
  4. 最好在Python中使用While True,而不是while (1)
  5. 代表2 - 这段代码的作用是什么:

    a=["a","b","c","d","e"]
    for i in a:
        print (i)
    

答案 1 :(得分:1)

您必须从用户的角度考虑这一点。让我们运行您的代码,看看它在控制台上的外观:

enter celebrity name:Celeb 1
enter celebrity name:Celeb 2
enter celebrity name:Celeb 3
enter celebrity name:Celeb 4
enter celebrity name:Done
enter celebrity name:DONE
enter celebrity name:Celeb 5
enter celebrity name:done
7
Celeb 1
Celeb 2
Celeb 3
Celeb 4
Done
DONE
Celeb 5

大。首先要求我输入名人姓名。一旦完成,我按回车键,它会问完全相同的事情。一遍又一遍。没有用户说明。他们怎么知道什么时候结束?我需要输入多少?是否有错误,因为它一再说enter celebrity name:?我做错了吗?

接下来,请注意我输入了DoneDONE,两者都有意外结果。它继续该计划。解决这个问题的一个选择是

if name.lower() == "done":

使用此功能,您始终可以检查输入文本的小写版本是否为done

接下来,你吐了一个数字。 7。这是什么意思?在print语句中添加描述性内容:

print("You input {} celebrities!".format(len(list)))

最后,你的名人名单。这告诉用户什么?为您的输出提供一些上下文。


一些代码批评:

  • 您使用变量list。不要使用reversed word。 (IE。celebrities_list
  • 你最后的循环过于复杂。您可以在不使用range(索引)
  • 的情况下遍历列表

例如:

for c in celebrities_list:
    print(c)