예제를 한번씩 쳐보고 있던 중에 잘못된 부분이 있어 이렇게 포스팅 합니다.


def print_menu():
    print '1. Phone Number Print'
    print '2. Phone Number Add'
    print '3. Phone Number del'
    print '4. Phone Number Search'
    print '5. Exit'
    print

def print_dic(numbers):
    print "Phone number : "
    for name in numbers:
        print "name: ",name,"\tNumber: ",numbers[name]
    print

def add_member(numbers):
    print "Phone Number Add"
    name = raw_input("name : ")
    phone = raw_input("Number : ")
    numbers[name] = phone

def remove_member(numbers):
    print "Phone Number del"
    name = raw_input("name : ")
    if name in numbers:
        del numbers[name]
    else:
        print name," No"

def lookup_member(numbers):
    print "Phone Number Search"
    name = raw_input("name : ")
    if name in numbers:
        print "Number : ",numbers[name]
    else:
        print name,"No Search"
 

#---------------------------------------------------------main

numbers = {}
menu_num = 0
print_menu()
while menu_num !=5:
    menu_num = raw_input("Number Input Plz (1-5): ")
    if menu_num == 1:
        print_dic(numbers)
    elif menu_num == 2:
        add_member(numbers)
    elif menu_num == 3:
        remove_member(numbers)
    elif menu_num == 4:
        lookup_member(numbers)
    elif menu_num == 5:
        print_menu


위 소스가 원본이구요.(몇가지 변수명은 제가 바꿨으나 코드 형태는 책과 똑같습니다.)

실행형태는 다음 이미지와 같습니다.


 

프로그램이 제대로 작동을 하지 않습니다.

메뉴를 선택하는 숫자를 입력하였음에도 불구하고 계속 입력받는 루틴만 반복이 됩니다.

문제는 if문 조건에 있습니다.

입력받는건 문자열 취급을 받는 숫자인데 숫자와 비교를 하여 if문이 실행을 하지 않았던 것 입니다.

또 5번을 누르면 종료를 해야하는데 종료는 하지 않고 메뉴를 출력해주는 이상한 코딩이 되어있습니다.

그래서 저는 아래와 같이 바꾸었습니다.



def print_menu():
    print '1. Phone Number Print'
    print '2. Phone Number Add'
    print '3. Phone Number del'
    print '4. Phone Number Search'
    print '5. Exit'
    print

def print_dic(numbers):
    print "Phone number : "
    for name in numbers:
        print "name: ",name,"\tNumber: ",numbers[name]
    print

def add_member(numbers):
    print "Phone Number Add"
    name = raw_input("name : ")
    phone = raw_input("Number : ")
    numbers[name] = phone

def remove_member(numbers):
    print "Phone Number del"
    name = raw_input("name : ")
    if name in numbers:
        del numbers[name]
    else:
        print name," No"

def lookup_member(numbers):
    print "Phone Number Search"
    name = raw_input("name : ")
    if name in numbers:
        print "Number : ",numbers[name]
    else:
        print name,"No Search"

 


#---------------------------------------------------------main


numbers = {}
menu_num = 0
print_menu()
while menu_num !=5:
    menu_num = raw_input("Number Input Plz (1-5): ")
    if menu_num == '1':
        print_dic(numbers)
    elif menu_num == '2':
        add_member(numbers)
    elif menu_num == '3':
        remove_member(numbers)
    elif menu_num == '4':
        lookup_member(numbers)
    elif menu_num == '5':
        break;


아래 이미지는 실행 결과 입니다.


이제야 프로그램이 목적대로 돌아가네요.

제가 쓰는 버전은 2.5.2 버전 입니다. 다른 버전에서는 어떻게 될지 잘 모르겠으나 적어도 제가 쓰는 2.5.2 버전에서는 이러한 현상이 나타났습니다.

'[+] Information > [-] Python' 카테고리의 다른 글

level 1  (0) 2011.10.23
level 0  (0) 2011.10.23
열혈강의 파이썬 잘못된 소스부분.  (2) 2009.08.23
두번째 연습문제.  (2) 2009.07.17
파이썬 연습문제.(while)  (0) 2009.07.16
  1. He 2011.04.16 21:28

    2.7을 안쓰셔서 소스가 다른겁니다

    • Favicon of https://maj3sty.tistory.com BlogIcon MaJ3stY 2011.07.16 17:22 신고

      헉 그렇군요 ㅠㅠ

      뭐 저렇게 공부해도 나쁘지 않지 않을까요 ㅋ

+ Recent posts