我试图让Python提示用户选择五个数字并将它们存储在系统中。到目前为止,我有:
def main():
choice = displayMenu()
while choice != '4':
if choice == '1':
createList()
elif choice == '2':
print(createList)
elif choice == '3':
searchList()
choice = displayMenu()
print("Thanks for playing!")
def displayMenu():
myChoice = '0'
while myChoice != '1' and myChoice != '2' \
and myChoice != '3' and myChoice != '4':
print ("""Please choose
1. Create a new list of 5 integers
2. Display the list
3. Search the list
4. Quit
""")
myChoice = input("Enter option-->")
if myChoice != '1' and myChoice != '2' and \
myChoice != '3' and myChoice != '4':
print("Invalid option. Please select again.")
return myChoice
#This is where I need it to ask the user to give five numbers
def createList():
newList = []
while True:
try:
num = (int(input("Give me five numbers:")))
if num < 0:
Exception
print("Thank you")
break
except:
print("Invalid. Try again...")
for i in range(5):
newList.append(random.randint(0,9))
return newList
一旦我运行程序,它允许我选择选项1并要求用户输入五个数字。但是,如果我输入多个号码,则表示无效,如果我只输入一个号码,则表示谢谢并再次显示菜单。我哪里错了?
答案 0 :(得分:2)
numbers = [int(x) for x in raw_input("Give me five numbers: ").split()]
这将假设用户输入由空格分隔的数字。
答案 1 :(得分:1)
使用raw_input()而不是input()。
使用Python 2.7 input()将输入评估为Python代码,这就是您遇到错误的原因。 raw_input()返回用户输入的逐字字符串。在python 3中你可以使用input(),raw_input()就不见了。
my_input = raw_input("Give me five numbers:") # or input() for Python 3
numbers = [int(num) for num in my_input.split(' ')]
print(numbers)
答案 2 :(得分:0)
@DmitryShilyaev已正确诊断出此问题。如果要在一行中读取5个数字,可以使用split
拆分input
返回的字符串,并将该列表的每个元素转换为int
。