2011-10-17 26 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 

はあなたのようなdictの何かでそれを行う

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の数字を入れて、すべての電話番号を1つずつ取得することができます)。

あなたの宿題では、最初のものだけでなく、名前に一致する電話番号を印刷することに関心があります。私たちはあなたの名前を電話番号に一対一でマッピングしていることを前提としています。したがって、0番目のphoneNumberが 'todd'に一致すると、1番目のphoneNumberは 'david'などに一致します。あなたは「アンジェラ」に到達したとき

if people[index] == searchValue: 

、その時点でのインデックスが等しくなります。あなたのリストに名前をあなたの見つけた場合、あなたは「アンジェラ」を探している、そして言うのコードの行を言います'2'。 (たぶん一時的に、この行の直後に「印刷索引」を入れて、これを自分自身に納得させるかもしれません)。

これで、phoneNumbers [2]またはphoneNumbers [index]を印刷すると、「angela」に一致する番号が印刷されます。