Всем привет!
Помогите с задачей, условие ниже (язык 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)))
Я хочу добавить контроль ввода, если вводим песню не из списка, пишет ошибка. Но не очень пойму как это сделать.
Помогите, пожалуйста. Очень желательно через флаги.
Спасибо!
Ответы на вопрос
Через флаги:
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
ok = True
while ok:
for _ in range(qty):
if ok:
song = input('Введите название ' + str(count) + ' песни: ')
for elem in violator_songs:
li.extend(elem)
if song not in li:
print('Ошибка. Такой песни в плейлисте нет!')
ok = False
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]
if ok:
print('\nОбщее время звучания песен:', float(round(summ, 2)))
break
````break
https://pastebin.com/31xaFueD
Более простой вариант
from datetime import timedelta
music = {"mus1": 4.24,
"mus2": 2.50,
"mus3": 2.05}
time = timedelta(minutes=0, seconds=0)
maxcount = int(input("Сколько песен выбрать?: ")) + 1
count = 1
while 1:
try:
name = str(music[input(f"Название {count} песни: ")]).replace(".", " ").split()
time = time + timedelta(minutes=int(name[0]), seconds=int(name[1]))
count += 1
except:
print("Такой песни нету!")
break
if count == maxcount:
print(f"Общее продолжительность песен: {int(time.total_seconds()%3600) // 60}.{int(time.total_seconds()%3600) % 60}")
break