2017-02-20 36 views
1

我想讓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,並要求用戶輸入五個數字。但是,如果我輸入多個號碼則表示無效,如果我只輸入一個號碼,則表示謝謝並再次顯示該菜單。我哪裏錯了?

回答

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) 
0

@DmitryShilyaev已經正確診斷出這個問題。如果要在單行中讀取5個數字,可以使用split分割input返回的字符串,並將該列表中的每個元素轉換爲int

+0

謝謝。你介意讓我看看會是什麼樣子? –

2

這將工作,假設用戶輸入由空格分隔的數字。

+0

非常感謝!當我嘗試將其切換到此選項後,它會繼續說「無效,請重試。」一遍又一遍地。 –

+0

@ J.Gunter因爲你在'if num <0'行在比較列表和0。這裏num是一個數字列表。你應該嘗試:'如果有的話(而不是x [0]中的x​​ [x]):'。 –