2013-04-30 32 views
0

我創建了編號爲1-10的名稱列表。我希望用戶能夠輸入一個數字(1-10)來選擇一個名字。我有以下代碼,但尚未能得到它的工作。我是python的新手。感謝您的幫助從python列表中選擇一個項目

def taskFour(): 

    1 == Karratha_Aero 
    2 == Dampier_Salt 
    3 == Karratha_Station 
    4 == Roebourne_Aero 
    5 == Roebourne 
    6 == Cossack 
    7 == Warambie 
    8 == Pyramid_Station 
    9 == Eramurra_Pool 
    10 == Sherlock 


    print'' 
    print 'Choose a Base Weather Station' 
    print 'Enter the corresponding station number' 
    selection = int(raw_input('Enter a number from: 1 to 10')) 
    if selection == 1: 
     selectionOne() 
    elif selection == 2: 
     selectionTwo() 
    elif selection == 3: 
     selectionThree() 
+7

你需要了解Python的基本語法規則。 – thavan 2013-04-30 13:09:20

+0

這是你完整的Python代碼來做你想做的事嗎?因爲Python語法不匹配。 – 2013-04-30 13:11:30

+0

elif語句繼續到10,這是你的意思嗎? – goat 2013-04-30 13:16:16

回答

5

您正在關注的反模式。如果有一百萬個不同的電臺,或者每個電臺有多個數據,你會怎麼做?

手動完成selectionOne()selectionOneMillion()

怎麼是這樣的:

stations = {'1': "Karratha_Aero", 
      '2': "Karratha_Station", 
      '10': "Sherlock"} 

user_selection = raw_input("Choose number: ") 

print stations.get(user_selection) or "No such station" 

輸入/輸出:

1 => Karratha_Aero 
10 => Sherlock 
5 => No such station 
+0

很好的摺疊錯誤處理。 – dansalmo 2013-04-30 15:42:19

2

首先,您需要一個真正的列表。您目前擁有的(1 == Name)既不是一個列表,也不是有效的語法(除非您的變量以每個名稱命名)。您的列表改成這樣:

names = ['Karratha_Aero', 'Dampier_Salt', 'Karratha_Station', 'Roebourne_Aero', 'Roebourne', 'Cossack', 'Warambie', 'Pyramid_Station', 'Eramurra_Pool', 'Sherlock'] 

然後,你的底代碼改成這樣:然後

try: 
    selection = int(raw_input('Enter a number from: 1 to 10')) 
except ValueError: 
    print "Please enter a valid number. Abort." 
    exit 
selection = names[selection - 1] 

selection將成爲用戶的選擇的名稱。

+0

也許應該將'int(raw_input ...)'包裝在'try/except'中,以處理用戶輸入的值不能強制爲int的情況。 – 2013-04-30 13:15:15

+0

@ sr2222:謝謝。我會去做。 – Linuxios 2013-04-30 13:17:56

+0

謝謝你們,我不知道我怎麼走。應該意識到這不是一個真正的名單。 – goat 2013-04-30 13:18:54

0

這裏是一個工作代碼爲你:

def taskFour(): 
    myDictionary={'1':'Name1','2':'Name2','3':'Name3'} 
    print'' 
    print 'Choose a Base Weather Station' 
    print 'Enter the corresponding station number' 
    selection = str(raw_input('Enter a number from: 1 to 10')) 
    if selection in myDictionary: 
     print myDictionary[selection] 
     #Call your function with this name "selection" instead of print myDictionary[selection] 

taskFour() 
+0

這麼多的選擇,我會玩一下。到目前爲止我的工作沒問題,但我想我可以讓它更簡單一些。感謝eveyone – goat 2013-04-30 13:51:16

相關問題