편집 기록

편집 기록
  • 프로필 nowp님의 편집
    날짜2020.06.01

    파이썬 함수, 딕셔너리, 반복문 등 사용하는 문제 질문입니다.


    홍길동 = list()
    홍길은 = list()
    홍길금 = list()
    book = {1:"도레미제라블",2:"위대한 소츠비", 3:"어른 왕자", 4:"아이와 산", 5:"곤충 농장",
            6:"춘추전국시대", 7:"분노의 사과", 8:"강철북", 9:"첫 번째 잎새", 10:"그리고 아무 말이나 했다"}
    borrower = {}
    
    def borrow():
        cnt = 0
        book_list = []
        while cnt !=3:
            thisbook = input("빌릴 책의 코드:")
            if thisbook =="q":
                break
            book_list.append(book[int(thisbook)])
            cnt = cnt + 1
        return book_list
    
    while True:
        a = input("회원 이름을 입력하세요.:")
        if a == 'q':
            break
        borrower[a] = borrow()
    
    print("현재 대출 자 목록")
    print(borrower)
    

    이 코드를 통해 대출자 목록이

    {'홍길동':['도레미제라블','어른왕자']. '홍길은':['춘추전국시대
    , '분노의 사과', '위대한 소츠비']}
    

    와 같이 출력됩니다. 이코드를 수정하여 만약 같은 책의 코드가 두번 입력되면 '이미 대출된 책입니다'를 출력하고 싶습니다. 따라서 input으로 빌릴 책 코드를 입력받고 입력받은 코드를 del을 통해 book 딕셔너리에서 삭제하고 그 다음 다시 입력받도록 수정하고 싶습니다. 다시 입력 받을 때 book 딕셔너리에 없는 key를 입력받았을 때 '이미 대출된 책입니다'를 출력하는 것입니다. 그래서, 중간에 def 부분을

    def borrow():
        cnt = 0
        book_list = []
        while cnt !=3:
            thisbook = input("빌릴 책의 코드:")
            del book[thisbook]                 # 제가 삽입한 부분--------------
            if thisbook not in book:
                print("대출된 책입니다.")        #--------------------
            if thisbook =="q":
                break
            book_list.append(book[int(thisbook)])
            cnt = cnt + 1
        return book_list
    

    이렇게 바꾸니 에러가 뜹니다. 사실 잘못된 코드라는 것은 감이 오는데 어찌해야할지 모르겠네요.. 도움 구해봅니다.

  • 프로필 알 수 없는 사용자님의 편집
    날짜2020.06.01

    파이썬 함수, 딕셔너리, 반복문 등 사용하는 문제 질문입니다.


    홍길동 = list()
    홍길은 = list()
    홍길금 = list()
    book = {1:"도레미제라블",2:"위대한 소츠비", 3:"어른 왕자", 4:"아이와 산", 5:"곤충 농장",
            6:"춘추전국시대", 7:"분노의 사과", 8:"강철북", 9:"첫 번째 잎새", 10:"그리고 아무 말이나 했다"}
    borrower = {}
    
    def borrow():
        cnt = 0
        book_list = []
        while cnt !=3:
            thisbook = input("빌릴 책의 코드:")
            if thisbook =="q":
                break
            book_list.append(book[int(thisbook)])
            cnt = cnt + 1
        return book_list
    
    while True:
        a = input("회원 이름을 입력하세요.:")
        if a == 'q':
            break
        borrower[a] = borrow()
    
    print("현재 대출 자 목록")
    print(borrower)
    

    이 코드를 통해 대출자 목록이 {'홍길동':['도레미제라블','어른왕자']. '홍길은':['춘추전국시대 , '분노의 사과', '위대한 소츠비']} 와 같이 출력됩니다. 이코드를 수정하여 만약 같은 책의 코드가 두번 입력되면 '이미 대출된 책입니다'를 출력하고 싶습니다. 따라서 input으로 빌릴 책 코드를 입력받고 입력받은 코드를 del을 통해 book 딕셔너리에서 삭제하고 그 다음 다시 입력받도록 수정하고 싶습니다. 다시 입력 받을 때 book 딕셔너리에 없는 key를 입력받았을 때 '이미 대출된 책입니다'를 출력하는 것입니다. 그래서, 중간에 def 부분을

    def borrow():
        cnt = 0
        book_list = []
        while cnt !=3:
            thisbook = input("빌릴 책의 코드:")
            del book[thisbook] # 제가 삽입한 부분--------------
            if thisbook not in book:
                print("대출된 책입니다.") #--------------------
            if thisbook =="q":
                break
            book_list.append(book[int(thisbook)])
            cnt = cnt + 1
        return book_list
    

    이렇게 바꾸니 에러가 뜹니다. 사실 잘못된 코드라는 것은 감이 오는데 어찌해야할지 모르겠네요.. 도움 구해봅니다.