Информатика, вопрос задал gvozdb27 , 7 лет назад

Всем привет!
Помогите с задачей, условие ниже (язык 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 месяца
Новые вопросы