Найти - Пользователи
Полная версия: Задача на словарь
Начало » Python для новичков » Задача на словарь
1
NiG
Нужно построить словарь, где вводится имя музыканта, название альбома и кол-во дорожек.
Написать нужно с помощью функции.
Написал программу, но она сохраняет в словарь только последние введенные значения. Как сделать так, что бы сохранялись и прошлые значения.

 def make_album(name_musican, name_album, quantity=''):
	
	album={'Name':name_musican,'Name album': name_album}
	if quantity:
		album['Quantity']=quantity
	
	return album
my_album={}
polling_active = True
while polling_active:
	
	name=input("Enter n_m ")
	alb=input("Enter n_a ")
	qty=input("Enter qty track ")
	isit = make_album(name,alb,qty)
	repeat=input("Again?(yes/no)")
	if repeat == 'no':
		polling_active = False
print(my_album)
PEHDOM
NiG
Как сделать так, что бы сохранялись и прошлые значения.
куда эти прошлые значения должны сохраняться? в список? в словарь? если в словарь то по какому ключу?
AD0DE412
очевидно в my_album={} ключ генирировать по количеству циклов while, например или qty. значение ключа - isit, как то так, наверное.
NiG
PEHDOM
куда эти прошлые значения должны сохраняться? в список? в словарь? если в словарь то по какому ключу?


в словарь
AD0DE412
имхо как то так

 # python2.7
# coding: utf-8
def make_album():
    name=raw_input("Enter n_m: ")
    alb=raw_input("Enter n_a: ")
    qty=raw_input("Enter qty track: ")
    return [qty, [alb, name]]
my_album={}
while True:
    isit = make_album()
    my_album[isit[0]] = isit[1]
    repeat=raw_input("Again?(y/n): ")
    if repeat == 'n':
        break
print(my_album)

или так

 # python2.7
# coding: utf-8
def make_album():
    name=raw_input("Enter n_m: ")
    alb=raw_input("Enter n_a: ")
    qty=raw_input("Enter qty track: ")
    return [qty, [alb, name]]
my_album={}
while True:
    isit = make_album()
    my_album[isit[0]] = isit[1]
    if raw_input("Again?(y/n): ") == 'n':
        break
print(my_album)

или так

 # python2.7
# coding: utf-8
my_album={}
while True:
    my_album[raw_input("Enter track: ")] = [raw_input("Enter name: "), raw_input("Enter albom: ")]
    if raw_input("Again?(y/n): ") == 'n':
        break
print(my_album)
еще вот
 # python2.7
# coding: utf-8
def yieldfunk():
    my_album={}
    while True:
        my_album[raw_input("Enter track: ")] = [raw_input("Enter name: "), raw_input("Enter albom: ")]
        yield my_album
        if raw_input("Again?(y/n): ") == 'n':
            break
print ([i for i in yieldfunk()][0])

зы создавать дубль темы было не к чему.
ззы на сколько понимаю у вас python 3.x, замените raw_input на input
—-
исправлен вызов print под 3 версию pythjn -a
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB