2011-10-17 115 views
1

我有我的數組作業問題,我需要輸入一個名字,那麼程序必須返回數字,但我可以把它做的是恢復所有的人都電話號碼查找程序

def main(): 
    people = ['todd','david','angela','steve','bob','josh','ben'] 
    phoneNumbers = ['234-7654','567-1234','888-8745','789-5489','009-7566','444-6990','911-9111'] 

    found = False 
    index = 0 

    searchValue = raw_input('Enter a name to search for phone number: ') 

    while found == False and index < len(people): 
     if people[index] == searchValue: 
      found = True 
     else: 
      index = index + 1 

    if found: 
     print 'the phone number is: ',phoneNumbers 
    else: 
     print 'that name was not found' 

main() 
+1

你必須使用數組嗎?字典在這裏是一個更好的數據類型... – tobyodavies

回答

3

使用index打印你想要的電話號碼,而不是所有的人:

if found: 
    print 'the phone number is: ', phoneNumbers[index] 
+0

非常感謝你 – dmpinder

0

也許嘗試這個:

... 

searchValue = raw_input(.... 

people_numbers = dict(zip(people,phoneNumbers)) 
if searchValue in people_numbers: 
    print 'the phone number is :', people_numbers[searchValue] 
else: 
    print '..... 
1

在行:

print 'the phone number is: ',phoneNumbers 

您應該使用

print 'the phone number is: ',phoneNumbers[index] 

另一種最佳的選擇與字典類似做到這一點:

contacts = {'todd':'123-456', 'mauro': '678-910'} 
searchValue = raw_input('Enter a name to search for phone number: ') 

if contacts.has_key(searchValue): 
    print 'The %s phone number is %s' %(searchValue, contacts[searchValue]) 
else: 
    print 'that name was not found' 
2

其他人已經明確給出你答案,但基於在寫這個問題的方式上,我擔心理解。所以我會詳細介紹一下。現在,你的代碼被寫入的方式,你告訴程序打印所有的代碼。 (代碼是愚蠢的,只有不正是你告訴它!)

太行

print 'the phone number is: ',phoneNumbers 

將始終打印所有的電話號碼。現在

爲funsies,你可以試試:

print 'the phone number is: ',phoneNumbers[0] 

而且你會發現,第一個(或零索引)項目在您的手機號碼清單打印出來。 (您可以將0-6中的任何數字放在那裏,然後逐個獲取所有電話號碼)。

現在爲您的家庭作業,你關心的是打印與名稱相匹配的電話號碼,而不僅僅是第一個。我們假設您的姓名與電話號碼有一對一的映射關係。所以zeroeth phoneNumber匹配'todd',第一個phoneNumber匹配到'david'等等。如果您在列表中找到一個名字,說你正在尋找「安吉拉」,然後的代碼行,上面寫着:

if people[index] == searchValue: 

,當你到「安吉拉」,那麼指數在那個時候將等於'2'。 (也許暫時在該行之後放置一個'打印索引'來說服你自己)。

現在,如果您打印phoneNumbers [2]或phoneNumbers [index],它將打印與'angela'匹配的數字。