Всем привет!
Помогите с задачей, условие ниже (язык Python):

Мы пишем приложение для удобного прослушивания музыки. У Вани есть список из девяти песен группы Depeche Mode. Каждая песня состоит из названия и продолжительности с точностью до долей минут:
Из этого списка Ваня хочет выбрать N песен и закинуть их в особый плейлист с другими треками. И при этом ему важно, сколько времени в сумме эти N песен будут звучать.
Напишите программу, которая запрашивает у пользователя количество песен из списка и затем названия этих песен, а на экран выводит общее время их звучания.

Пример:
Сколько песен выбрать? 3
Название 1 песни: Halo
Название 2 песни: Enjoy the Silence
Название 3 песни: Clean
Общее время звучания песен: 14.93 минут


Мой код:

violator_songs = [
['World in My Eyes', 4.86],
['Sweetest Perfection', 4.43],
['Personal Jesus', 4.56],
['Halo', 4.90],
['Waiting for the Night', 6.07],
['Enjoy the Silence', 4.20],
['Policy of Truth', 4.76],
['Blue Dress', 4.29],
['Clean', 5.83]
]

li = []
special_list = []
qty = int(input('Сколько песен выбрать? '))
print()

count = 1
for _ in range(qty):
``song = input('Введите название ' + str(count) + ' песни: ')
``for elem in violator_songs:
````li.extend(elem)
````if song not in li:
``````print('Ошибка. Такой песни в плейлисте нет!')
``````break
````else:
``````special_list.append(song)
``````count += 1

``summ = 0
``for i_time in violator_songs:
````if i_time[0] in special_list:
````summ += i_time[1]
print('\nОбщее время звучания песен:', float(round(summ, 2)))


Я хочу добавить контроль ввода, если вводим песню не из списка, пишет ошибка. Но не очень пойму как это сделать.

Помогите, пожалуйста. Очень желательно через флаги.


Спасибо!

Ответы

Ответ дал: tutu007
0

Ответ:

violator_songs = {

'World in My Eyes': 4.86,

'Sweetest Perfection': 4.43,

'Personal Jesus': 4.56,

'Halo': 4.90,

'Waiting for the Night': 6.07,

'Enjoy the Silence': 4.20,

'Policy of Truth': 4.76,

'Blue Dress': 4.29,

'Clean': 5.83

}

li = {}

qty = int(input('Сколько песен выбрать? '))

print()

count=1

while count!=qty+1:

   song=input("Введите название " + str(count) + " песни: ")

   if song not in violator_songs:

       print("Ошибка. Такой песни в плейлисте нет или вы")

   elif song in li:

       print("Ошибка. Вы уже выбрали эту песню")

   else:

       li[song]=violator_songs[song]

       count+=1

print('Общее время звучания песен:',round(sum(li.values()),2), "минут")

Объяснение:

вы слишком много лишних "телодвижений" в коде устраиваете, хотя видно, что с программированием знакомы, были какие то языки до этого?


gvozdb27: в вашем варианте список в таких {} скобках, а в условии задачи списки в с одном общем, [[ ]] в таких скобках. Поэтому когда проверяешь условным оператором, он выдаёт ошибку на любую песню, даже которая есть в списке, потому что он её не видит
gvozdb27: языков никаких не было, учу python 3 месяца
Вас заинтересует