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



Более простой вариант
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



Для решения вашей задачи, вы можете использовать флаг, чтобы контролировать, была ли найдена песня в списке violator_songs
. Вот как вы можете это сделать:
pythonviolator_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]
]
special_list = []
qty = int(input('Сколько песен выбрать? '))
print()
count = 1
for _ in range(qty):
song = input('Введите название ' + str(count) + ' песни: ')
found = False # Флаг для контроля наличия песни в списке
for elem in violator_songs:
if song == elem[0]:
special_list.append(song)
found = True
break # Выход из цикла, так как песня найдена
if not found:
print('Ошибка. Такой песни в плейлисте нет!')
else:
count += 1
summ = 0
for i_time in violator_songs:
if i_time[0] in special_list:
summ += i_time[1]
print('\nОбщее время звучания песен:', round(summ, 2), 'минут')
В этом коде мы используем флаг found
, чтобы проверить, была ли найдена песня в списке violator_songs
. Если песня найдена, мы добавляем ее в special_list
, иначе выводим сообщение об ошибке.


Похожие вопросы

Топ вопросов за вчера в категории Информатика







Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili