我尝试编写一个允许用户输入名称的循环,直到用户单击Enter而不输入名称(输入空字符串)。列表输入完成后,打印列表,对列表进行排序,然后打印排序列表。 这是我到目前为止所做的。
ListOfNames=[]
while True:
Name=raw_input('-->')
if Name=="":
break
else:
ListOfNames.append(Name)
print ListOfNames
ListOfNames=sorted(ListOfNames)
print ListOfNames
答案 0 :(得分:1)
您要做的是将sentinel
称为while循环。使用标记时,第一个输入将在循环之外。你可以实现这样的方法:
names = []
input = raw_input("-->")
while not input == "":
names.append(input)
input = raw_input("-->")
然后你可以对它进行排序,并对列表做任何你想做的事 在此处阅读有关哨兵的更多信息:https://en.wikipedia.org/wiki/Sentinel_value
答案 1 :(得分:0)
正确缩进后,您的代码的行为方式与我相信您的目标:
ListOfNames=[]
while True:
Name=raw_input('-->')
if Name=="":
break
else:
ListOfNames.append(Name)
print ListOfNames
ListOfNames=sorted(ListOfNames)
print ListOfNames
答案 2 :(得分:0)
ListOfNames=[]
while True:
Name=raw_input('-->')
if Name=="":
print ListOfNames
print sorted(ListOfNames)
break
else:
ListOfNames.append(Name)
答案 3 :(得分:0)
这应该这样做,尽管有很多方法可以做到:
ListOfNames=[]
while True:
Name=raw_input('-->')
if Name=="":
break
else:
ListOfNames.append(Name)
print ListOfNames
print ListOfNames.sort()
答案 4 :(得分:0)
执行此操作的最佳方法是使用您的终止条款作为您的条件。此代码要求输入名称,只要该名称不为空(等于“”),就会要求另一个名称。当用户没有给出名字时,循环终止。
ListOfNames=[]
Name = raw_input('-->')
while Name != "":
ListOfNames.append(Name)
print ListOfNames
Name = raw_input('-->')
ListOfNames=sorted(ListOfNames)
print ListOfNames
答案 5 :(得分:0)
这应该可以解决问题:
ListOfNames=[]
while True: #{
Name=raw_input('-->')
if Name=="": #{
break
#}
else: #{
ListOfNames.append(Name)
#}
#}
print ListOfNames
ListOfNames=sorted(ListOfNames)
print ListOfNames
她的一些提示: - 你的逻辑是正确的,你的缩进不是。可以把它想象成C或Java中的大括号。你不需要Python。
- 如果你想深入研究python,我建议你阅读PEP8。你不需要一心一意地遵循它,但一般来说它有助于生成干净的代码,这更容易阅读和调试。
答案 6 :(得分:0)
更易于阅读:
ListOfNames=[]
while True:
Name=raw_input('-->')
if Name != "": ListOfNames.append(Name)
else : break
print (ListOfNames,sorted(ListOfNames))
答案 7 :(得分:0)
您可以向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']