在 Python-2.x 中接受输入时,应使用 raw_input() 而不是 input()。 input() 按字面意思接受输入,所以它只接受可以在 shell 中调用的东西:
>>> import sys
>>> print sys.version_info[0:3]
(2, 7, 6)
>>> Amelia
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'Amelia' is not defined
>>> name = input('Enter your name: ')
Enter your name: Amelia
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 1, in <module>
NameError: name 'Amelia' is not defined
>>> name = raw_input('Enter your name: ')
Enter your name: Amelia
>>>
改为将您的代码更改为以下内容:
def main():
names = sorted([raw_input("Enter a name: ") for i in range(20)]) #You can change the 20 to however many names you want
for i in names: print i
运行如下:
>>> main()
Enter a name: Bob
Enter a name: Joe
Enter a name: Sally
Enter a name: Jimmy
Enter a name: Cole
Enter a name: Brian
Enter a name: Ronald
Enter a name: Harry
Enter a name: Henry
Enter a name: Dylan
Enter a name: Coby
Enter a name: Jodie
Enter a name: Billy
Enter a name: Walter
Enter a name: Sue
Enter a name: Leon
Enter a name: Francis
Enter a name: Angela
Enter a name: George
Enter a name: Amelia
Amelia
Angela
Billy
Bob
Brian
Coby
Cole
Dylan
Francis
George
Harry
Henry
Jimmy
Jodie
Joe
Leon
Ronald
Sally
Sue
Walter
>>>
这使用列表推导来获得一定次数的输入:
>>> names = [raw_input("Enter a name for person number %d: " %(i)) for i in range(1, 6)]
Enter a name for person number 1: Angela
Enter a name for person number 2: Amelia
Enter a name for person number 3: Joe
Enter a name for person number 4: John
Enter a name for person number 5: Sam
>>> names
['Angela', 'Amelia', 'Joe', 'John', 'Sam']
>>>