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 언팩 오류가 발생했습니다. 어떤 팁? 그것을 할 다른 방법이 있습니까?

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

당신이 작은 경우 또는 3 개 이상의 단어를 (당신이 조회 명령을 사용할 때 어떤 경우인지, ISN :

답변

2

다음 줄은 정확히 공백 문자로 구분 된 세 단어 각각을 입력한다고 가정 '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"으로 누군가를 찾을 때 언팩 오류가 발생한다고 생각합니다. 코드에서 분할 ("")의 세 번째 값을 찾지 만 코드를 찾지 못합니다.

난이 도움이 될 수 있는지 확실하지 않습니다 :

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