Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何创建以“完成”python 3.4结尾的循环_Python_Python 3.x - Fatal编程技术网

如何创建以“完成”python 3.4结尾的循环

如何创建以“完成”python 3.4结尾的循环,python,python-3.x,Python,Python 3.x,我正在尝试创建一个程序,使用一个列表来存储一些著名名人的名字。我需要使用一个循环来提示用户输入名称并将其添加到列表中。当用户输入done时,循环应该停止。然后,程序应输出输入的名人数量。最后,程序应该使用另一个循环来显示名人的名字,每一个都在自己的行上,并且done不应该在名人列表中,我在这里哪里出错了,因为它一遍又一遍地显示了庆祝者的名字。 这就是我的教授说的,如果这有帮助的话 你的名人节目真的需要更多的背景。我看了看你的代码,知道该怎么做,但对一个用户来说,它一次又一次地显示了名人的名字 l

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

你的名人节目真的需要更多的背景。我看了看你的代码,知道该怎么做,但对一个用户来说,它一次又一次地显示了名人的名字

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])
好:

永远不要使用列表作为变量名——它的形式很糟糕,最终会给您带来麻烦。 有一种更简单的方法可以循环列表的内容,您不需要使用索引。 您的程序没有告诉用户如何使用该程序,或者如何停止输入姓名-也许您的教授建议您的程序应该生成一些有用的说明。而且,当它完成时,它只打印一个数字和一个名字列表,也许一些有用的信息也会有帮助。 在Python中使用While True比使用While 1更好。 对于数字2-此代码的作用是:

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

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

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
太好了。首先让我输入一个名人的名字。一旦这样做了,我按下回车键,它会问同样的问题。一遍又一遍。没有针对用户的说明。他们怎么知道什么时候结束?我需要输入多少?是否有错误,因为它不断地说输入名人姓名:重复?我做错什么了吗

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

if name.lower() == "done":
使用此选项,您将始终检查输入文本的小写版本是否已完成

接下来,你吐出一个数字。7.这是什么意思?在打印报表中添加描述性内容:

print("You input {} celebrities!".format(len(list)))
最后,你的名人名单。这告诉用户什么?为输出提供一些上下文

一些代码批评:

您可以使用变量列表。不要用铅笔。名人榜 最后的循环过于复杂。您可以在列表中循环,而不使用范围索引 例如:

for c in celebrities_list:
    print(c)

我想知道我做了什么或没有做什么他不喜欢的事。我通过了我所做的,我只是想知道我可以做些什么来让这更准确,这样我就可以从中了解到一些建议。虽然JB333有一些很好的建议,但我很肯定你的教授的抱怨是,虽然你的程序运行正常,但它并不能提供很好的用户体验。用户只需知道键入单词done会导致循环中断并完成程序。你应该以某种方式告诉用户。否则,他们可能会认为这是一个什么都不做的程序,只是一遍遍地打印名人信息。尽量采用未经培训的用户的观点。@JB333-他使用的是python 3-因此原始输入不存在。我所知道的是,这就是他回复的内容。过去几周我给他发电子邮件时,他花了几周时间才回复这门在线课程。我只是好奇他想要的更多的上下文是什么。NP,很好地总结了这里的改进。再看一次,教授提到的大概是第三位。不管你的代码有多好,如果用户不知道如何使用它,它就没有价值@JB333-我同意-我认为profs关注的焦点是3,但我建议学习者应该同时做可用性和代码质量转换单词??像齐尔从技术上讲,列表是不保留的,否则它将是一个语法错误。你是对的,这是个坏主意