profile
Размещено 4 года назад по предмету Информатика от gvozdb27

Всем привет!

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


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

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


Спасибо!

  1. Ответ на вопрос
    Ответ на вопрос дан vanisherxxx

    Через флаги:

    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

    1. Ответ на вопрос
      Ответ на вопрос дан vanisherxxx
      ````for i in violator_songs:
    2. Ответ на вопрос
      Ответ на вопрос дан vanisherxxx
      ``````if i[0] in li:
    3. Ответ на вопрос
      Ответ на вопрос дан vanisherxxx
      ````````su += i[1]
    4. Ответ на вопрос
      Ответ на вопрос дан vanisherxxx
      ````print('nОбщее время звучания песен:', float(round(su, 2)))
    5. Ответ на вопрос
      Ответ на вопрос дан vanisherxxx
      Хотя легче сделать так:
      https://pastebin.com/31xaFueD
  2. Ответ на вопрос
    Ответ на вопрос дан merkkaa

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

    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

    1. Ответ на вопрос
      Ответ на вопрос дан gvozdb27
      import, split ещё не проходил, нельзя ими пользоваться
    2. Ответ на вопрос
      Ответ на вопрос дан merkkaa
      в условиях задачи этого не было обговорено
Не тот ответ на вопрос, который вам нужен?
Найди верный ответ
Самые новые вопросы
tegysigalpa2012
Русский язык - 6 лет назад

Помогите решить тест по русскому языку тест по русскому языку «местоимение. разряды местоимений» для 6 класса 1. укажите личное местоимение: 1) некто 2) вас 3) ни с кем 4) собой 2. укажите относительное местоимение: 1) кто-либо 2) некоторый 3) кто 4) нам 3. укажите вопросительное местоимение: 1) кем-нибудь 2) кем 3) себе 4) никакой 4. укажите определительное местоимение: 1) наш 2) который 3) некий 4) каждый 5. укажите возвратное местоимение: 1) свой 2) чей 3) сам 4) себя 6. найдите указательное местоимение: 1) твой 2) какой 3) тот 4) их 7. найдите притяжательное местоимение: 1) самый 2) моего 3) иной 4) ничей 8. укажите неопределённое местоимение: 1) весь 2) какой-нибудь 3) любой 4) этот 9. укажите вопросительное местоимение: 1) сколько 2) кое-что 3) она 4) нами 10. в каком варианте ответа выделенное слово является притяжательным местоимением? 1) увидел их 2) её нет дома 3) её тетрадь 4) их не спросили

Информация

Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.