2016-10-13 3 views
0

Мне нужна помощь с добавлением имени и номера телефона в словарь в ОДНОЙ строке с raw_input. Он должен выглядеть следующим образом: add John 123 (добавляет имя John с номером 123). Вот мой код: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 

Im получение ошибки распаковки. Какие-нибудь советы? Есть ли другой способ сделать это?

ответ

2

Следующая строка Предположим, что вы вводите ровно 3 слов разделенных пробелом:

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

Если у вас есть больше или меньше, чем 3 слова (это тот случай, когда вы используете команду поиска, ISN 't it?), вы получите сообщение об ошибке.

Вы можете получить вход в уникальной переменной, а затем проверить его первый элемент, чтобы избежать ошибки:

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». Код ищет третье значение в split (""), но не находит его.

Я не уверен, если это может помочь:

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 
Смежные вопросы