파이썬 함수, 딕셔너리, 반복문 등 사용하는 문제 질문입니다.
조회수 832회
홍길동 = 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
이렇게 바꾸니 에러가 뜹니다. 사실 잘못된 코드라는 것은 감이 오는데 어찌해야할지 모르겠네요.. 도움 구해봅니다.
-
(•́ ✖ •̀)
알 수 없는 사용자 - 〉
1 답변
-
홍길동 = list() 홍길은 = list() 홍길금 = list() book = {1:["도레미제라블",1],2:["위대한 소츠비",1], 3:["어른 왕자",1], 4:["아이와 산",1], 5:["곤충 농장",1], 6:["춘추전국시대",1],7:["분노의 사과",1], 8:["강철북",1], 9:["첫 번째 잎새",1], 10:["그리고 아무 말이나 했다",1]} borrower = {} def borrow(): cnt = 0 book_list = [] while cnt !=3: thisbook = input("빌릴 책의 코드:") if thisbook =="q": break else: if book[int(thisbook)][1] != 0: book_list.append(book[int(thisbook)][0]) book[int(thisbook)][1] -= 1 cnt = cnt + 1 else: print("해당 책이 없서용 다시 입력해주세용") return book_list #이하 생략
이런 방식으로 하면 좋을거 같은데용
댓글 입력