Проблема заключается в том, что цикл while просит пользователя вводить исполнителя и название альбома каждую итерацию, но он ничего не делает с этой информацией.Он просто спрашивает пользователя снова и снова, пока он не скажет «нет».Только тогда словарь создается из пары «последний исполнитель - альбом».
Когда вы говорите, что хотите иметь несколько пар «ключ-значение», вы уже это делаете.Если я запускаю программу и ввожу имя исполнителя "freddy" и альбом "my_album", я получаю:
Please tell me the name of your favourite artist:
artist name: freddy
album title: my_album
Would you like to enter another response? (yes/no) no
{'title': 'my_album', 'name': 'freddy'}
Обратите внимание, что у меня есть ключ "title" со значением "my_album" и ключ "name""со значением" Фредди ".Таким образом, есть 2 пары ключ-значение.
Когда вы сказали, что хотите иметь несколько пар ключ-значение, я предполагаю, что вы хотите отслеживать нескольких исполнителей и пары имен альбомов.Если это так, лучший способ сделать это в Python - использовать кортеж.Вы можете иметь ('freddy','my_album')
в качестве кортежа.Используя кортеж, вам не нужно иметь никаких ключей.Вместо этого позиция каждого элемента говорит вам, что это означает.В этом случае первый элемент кортежа - это имя исполнителя, а второй - имя альбома.
Затем, используя кортежи, вы можете получить их список для отслеживания всего исполнителя, альбома.пары:
def make_album(artist_name,album_title):
"""Return a tuple of information about album."""
return (artist_name, album_title)
all_tuples = []
while True:
print("\nPlease tell me the name of your favourite artist:")
art_name =input("artist name: ")
alb_title=input("album title: ")
musician = make_album(art_name, alb_title)
all_tuples.append(musician)
repeat = input("Would you like to enter another response? (yes/no) ")
if repeat == 'no':
break
print(all_tuples)
Вам даже не нужна функция для создания кортежа: musician = (art_name, alb_title)
или, еще лучше, all_tuples.append((art_name,alb_title))