2016-10-13 43 views
0

raw_inputで1行の辞書に名前と電話番号を追加する際に助けが必要です。それは次のようになります:add John 123(123という名前のJohnという名前を付け加えます)。ここに私のコードです:Python - 対話型電話帳

def phonebook(): 
    pb={} 
    while True: 
     val,q,w=raw_input().split(" ") 
     if val=='add': 
      if q in pb: 
       print 
       print "This name already exists" 
       print 
      else: 
       pb[q]=w #lägger till namn + nummer i dictionary 
     if val=='lookup': 
      if q in pb: 
       print 
       print pb[q] 
       print 
      else: 
       print "Name is not in phonebook" 
       print 

私はアンパックエラーを取得します。任意のヒント?それを行う別の方法がありますか?あなたが少ないまたは3つの以上の単語(あなたが検索コマンドを使用する場合である、ISNを持っている場合は

val, q, w = raw_input().split(" ") 

:あなたは空白文字で区切られ、正確に3ワードをそれぞれ入力すること

答えて

2

次の行を想定'それ?)、あなたはアンパックエラーを取得します。

あなたはユニークな変数に入力を取得し、エラーを回避するために、その最初の要素をテストすることができます:

in_ = raw_input().split(" ") 
if in_[0] == 'add': 
    # process add action 
if in_[0] == 'lookup': 
    # process lookup action 

ボーナスヒント:あなたはそれ以来split方法にスペース文字を与える必要はありません。

raw_input().split() # will work as well 
+0

非常に役立つ、ありがとうございます! –

1

"lookup john"で誰かを検索するとアンパックエラーが発生すると思います。コードは分割( "")の3番目の値を探しますが、見つからない。

私はこれが役立つかもしれないのかはわからない:

def phonebook(): 
pb={} 
while True: 
    vals = raw_input().split(" ") 
    if vals[0] == 'add': 
     q = vals[1] 
     w = vals[2] 
     if q in pb: 
      print "This name already exists" 
     else: 
      pb[q]=w #lägger till namn + nummer i dictionary 
    elif vals[0]=='lookup': 
     q = vals[1] 
     if q in pb: 
      print 
      print str(q) + "'s number is: " + str(pb[q]) 
      print 
     else: 
      print "Name is not in phonebook" 
      print 
は私を返す

>add j 12 
>add j 12 
This name already exists 
>lookup j 

j's number is: 12 

>lookup j 12 

j's number is: 12 

>lookup k 
Name is not in phonebook