Python 使用循环创建用户输入名称列表

Python 使用循环创建用户输入名称列表,python,Python,我试图编写一个允许用户输入名称的循环,直到用户单击Enter而不输入名称(输入空字符串)。列表输入完成后,打印列表,对列表进行排序,然后打印排序后的列表。 这就是我目前所拥有的 ListOfNames=[] while True: Name=raw_input('-->') if Name=="": break else: ListOfNames.append(Name) print ListOfNames ListOfNames=sorte

我试图编写一个允许用户输入名称的循环,直到用户单击Enter而不输入名称(输入空字符串)。列表输入完成后,打印列表,对列表进行排序,然后打印排序后的列表。 这就是我目前所拥有的

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']