Python 使用循环创建用户输入名称列表
我试图编写一个允许用户输入名称的循环,直到用户单击Enter而不输入名称(输入空字符串)。列表输入完成后,打印列表,对列表进行排序,然后打印排序后的列表。 这就是我目前所拥有的Python 使用循环创建用户输入名称列表,python,Python,我试图编写一个允许用户输入名称的循环,直到用户单击Enter而不输入名称(输入空字符串)。列表输入完成后,打印列表,对列表进行排序,然后打印排序后的列表。 这就是我目前所拥有的 ListOfNames=[] while True: Name=raw_input('-->') if Name=="": break else: ListOfNames.append(Name) print ListOfNames ListOfNames=sorte
ListOfNames=[]
while True:
Name=raw_input('-->')
if Name=="":
break
else:
ListOfNames.append(Name)
print ListOfNames
ListOfNames=sorted(ListOfNames)
print ListOfNames
当缩进正确时,您的代码将按照我认为的方式运行:
ListOfNames=[]
while True:
Name=raw_input('-->')
if Name=="":
break
else:
ListOfNames.append(Name)
print ListOfNames
ListOfNames=sorted(ListOfNames)
print ListOfNames
您要做的是使用
sentinel
调用while循环。当使用sentinel时,第一个输入将在循环之外。您可以实现这样的方法:
names = []
input = raw_input("-->")
while not input == "":
names.append(input)
input = raw_input("-->")
然后,您可以对列表进行排序,并对列表执行任何操作。阅读更多关于哨兵的信息:这应该可以做到,尽管有很多方法可以做到:
ListOfNames=[]
while True:
Name=raw_input('-->')
if Name=="":
break
else:
ListOfNames.append(Name)
print ListOfNames
print ListOfNames.sort()
最好的方法是使用您的终止条款作为您的while条件。这段代码要求输入一个名称,只要该名称不为空(等于“”),就要求输入另一个名称。当用户没有给出名称时,循环终止
ListOfNames=[]
Name = raw_input('-->')
while Name != "":
ListOfNames.append(Name)
print ListOfNames
Name = raw_input('-->')
ListOfNames=sorted(ListOfNames)
print ListOfNames
这应该可以做到:
ListOfNames=[]
while True: #{
Name=raw_input('-->')
if Name=="": #{
break
#}
else: #{
ListOfNames.append(Name)
#}
#}
print ListOfNames
ListOfNames=sorted(ListOfNames)
print ListOfNames
她的建议如下:
-你的逻辑是正确的,你的缩进不是。可以把它想象成C或Java中的花括号。Python中不需要它们
-如果您想深入研究python,我建议您阅读。您不需要背诵它,但通常它有助于生成干净的代码,这更易于阅读和调试。更易于阅读:
ListOfNames=[]
while True:
Name=raw_input('-->')
if Name != "": ListOfNames.append(Name)
else : break
print (ListOfNames,sorted(ListOfNames))
您可以向iter提供一个可调用和哨兵值。这将调用callable,直到它生成sentinel值。演示:
>>> ListOfNames = list(iter(raw_input, ''))
nameB
nameA
nameC
>>> print(ListOfNames)
['nameB', 'nameA', 'nameC']
>>> ListOfNames.sort()
>>> print(ListOfNames)
['nameA', 'nameB', 'nameC']
如果需要提示,请结合functools.partial
:
>>> from functools import partial
>>> ListOfNames = list(iter(partial(raw_input, '--> '), ''))
--> nameB
--> nameA
--> nameC
-->
>>> print(ListOfNames)
['nameB', 'nameA', 'nameC']
>>> ListOfNames.sort()
>>> print(ListOfNames)
['nameA', 'nameB', 'nameC']
你能把代码的格式弄清楚一点吗?
>>> from functools import partial
>>> ListOfNames = list(iter(partial(raw_input, '--> '), ''))
--> nameB
--> nameA
--> nameC
-->
>>> print(ListOfNames)
['nameB', 'nameA', 'nameC']
>>> ListOfNames.sort()
>>> print(ListOfNames)
['nameA', 'nameB', 'nameC']