М
Молодежь
К
Компьютеры-и-электроника
Д
Дом-и-сад
С
Стиль-и-уход-за-собой
П
Праздники-и-традиции
Т
Транспорт
П
Путешествия
С
Семейная-жизнь
Ф
Философия-и-религия
Б
Без категории
М
Мир-работы
Х
Хобби-и-рукоделие
И
Искусство-и-развлечения
В
Взаимоотношения
З
Здоровье
К
Кулинария-и-гостеприимство
Ф
Финансы-и-бизнес
П
Питомцы-и-животные
О
Образование
О
Образование-и-коммуникации
марина200008
марина200008
02.12.2021 12:25 •  Информатика

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

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

. Очень желательно через флаги.

!

👇
Ответ:
eliseevivan
eliseevivan
02.12.2021

Через флаги:

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

4,4(24 оценок)
Ответ:
Sokolova2327
Sokolova2327
02.12.2021

Более простой вариант

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

4,7(5 оценок)
Открыть все ответы
Ответ:
SemMandarenova
SemMandarenova
02.12.2021
Таких систем исчисления всего две.  Основание а = 9 и основание а =367, но в системе с основанием 367 проблематично записывать числа (символов не хватит).
Если число 3306(10) в системе исчисления с основанием а заканчивается цифрой 3, то тогда
число 3303 делится на основание системы а.
Отсюда алгоритм поиска.  Находим все делители числа 3303.
3303 = 3*1101 = 3*3*367.  Число 367 - простое. Поэтому основаниями системы исчисления 
могут быть только 3, 9, 367.  Основание =3 не подходит, так как по условию число должно заканчиваться на 3  -> основание больше 3.  Остаются 9, 367.
4,6(15 оценок)
Ответ:
liza73578
liza73578
02.12.2021
1 задание) ответ: 1323141;
Двигаемся в обратном порядке 2324142 (идём с конца) ей противоположные 1323141
2 задание) ответ: 2949;
мы должны получить 11 и 13 причем минимально . можем только так 9+2 и 9+4 . значит 2949
3 задание)   ответ: 3;
чтобы добраться до 21 нам нужно выполнить 1 команду 6 раз и 3 раза вторую , нас спрашивают про вторую пишем ответ 3
4 задание) ответ: 1;
нам нужно число которое делится на 5 то есть 4 отпадает , и также нам нужно чтобы модуль разности был не более 2 и во втором и в третьем модуль разности больше 2 , остается 1.
5 задание)  ответ: 1112221;
Я всегда начинаю с обратного 
57-56-28-14-7-6-5-4  собираем с конца 1112221 
4,5(41 оценок)
Это интересно:
Новые ответы от MOGZ: Информатика
logo
Вход Регистрация
Что ты хочешь узнать?
Спроси Mozg
Открыть лучший ответ