비슷한 질문을 올렸지 만 올바른 대답을 얻지 못했습니다. 아마도 내 프로그램이 실행되는 방식에 대해 명확하지 않았기 때문일 수 있습니다.Python : 다른 함수의 목록에 추가
나는 간단한 프로그램 선물을 쓰고 있는데 다른 기능의 사전에있는 사람에게 선물을주고 싶다.
def main():
print("Select: ")
print("\n\n\t1. Gifts")
selection_1 = input()
if selection_1 == "1":
people_list()
return selection
else:
print("Type a number for selecting.")
main()
def people_list():
people = {"Elena":["book","candy","sweater"],
"Daria":["healthy food"],
"Petra and Rok":[],
"Nikola":["cheese"],
"Matija + Elena":["vacation"],
"Christian":["chocolate"]}
print ("""Select a person to show their gifts:
1. Elena
2. Daria
3. Petra and Rok
4. Nikola
5. Matija + Elena
6. Christian
""")
gifts(people)
def gifts(people):
selection_2 = input()
if selection_2 == "1":
person = people["Elena"]
print(people["Elena"])
manage_gifts(person, people)
return person
elif selection_2 == "2":
person = people["Daria"]
print(people["Daria"])
manage_gifts(person, people)
return person
elif selection_2 == "3":
person = people["Petra and Rok"]
print(people["Petra and Rok"])
manage_gifts(person, people)
return person
elif selection_2 == "4":
person = people["Nikola"]
print(people["Nikola"])
manage_gifts(person, people)
return person
elif selection_2 == "5":
person = people["Matija + Elena"]
print(people["Matija + Elena"])
manage_gifts(person, people)
return person
elif selection_2 == "6":
person = people["Christian"]
print(people["Christian"])
manage_gifts(person, people)
return person
else:
print("Choose a person from the list!")
people_list()
return person
def manage_gifts(person, people):
print("""
1. Add gift""")
gift_option = input()
if gift_option == "1":
print("\nType the gift you would like to add?\n")
new_gift = input()
people[person].append(str(new_gift))
print("Gift added: ", people[person])
main()
내가 목록에서 선택한 '사람'에 새로운 선물이 추가되었음을 알고 싶습니다. 내가 오류는 다음과 같습니다
Traceback (most recent call last):
File "E:/Python/Vaje_Book/Gifts.py", line 92, in <module>
main()
File "E:/Python/Vaje_Book/Gifts.py", line 10, in main
people_list()
File "E:/Python/Vaje_Book/Gifts.py", line 36, in people_list
gifts(people)
File "E:/Python/Vaje_Book/Gifts.py", line 46, in gifts
manage_gifts(person, people)
File "E:/Python/Vaje_Book/Gifts.py", line 89, in manage_gifts
people[person].append(str(new_gift))
TypeError: unhashable type: 'list'
는 당신의 도움을 주셔서 감사합니다.
gifts(people)
에서
당신은 몇 가지 새로운 변수 목록에서 값을 취득하고 new_gift를 추가 한 다음 다시 업데이트해야합니다. BTW 사전을 전달하려면 함수 manage_gift가 정의 된 인수에서 **를 사용하십시오. – babygame0ver
내가 수집 할 수있는 것부터'gifts = '에있는'person = people [ "Elena"]''person = "Elena"'등으로 변경하고 싶다.'person'을 그냥 이름으로하고 싶다. 당신이'사람들 '을 들여다 볼 수 있도록. 대신,'사람들 [ '엘레나']는 이미 가지고있는 선물을 돌려주고 있습니다. – roganjosh