Найти - Пользователи
Полная версия: Подсчёт стоимости билeтов для конференции
Начало » Центр помощи » Подсчёт стоимости билeтов для конференции
1
Rikin
Здравствуйте,
начинаю решать задачу но требуется помощь, пока погряз…в неопределённости:

Для конференции необходимо написать программу, которая будет подсчитывать общую стоимость билетов. Программа должна работать следующим образом:

1. В начале у пользователя запрашивается количество билетов, которые он хочет приобрести на мероприятие.

2. Далее для каждого билета запрашивается возраст посетителя, в соответствии со значением которого выбирается стоимость:

- Если посетителю конференции менее 18 лет, то он проходит на конференцию бесплатно.
- От 18 до 25 лет — 990 руб.
- От 25 лет — полная стоимость 1390 руб.

3. В результате программы выводится сумма к оплате. При этом, если человек регистрирует больше пяти человек на конференцию, то дополнительно получает 20% скидку на полную стоимость заказа.


Ниже - то что придумалось на данный момент, не окончено, сырая заготовка, начало.
Собираю подсказки по реализации:

 Nr_Tickets = int(input("please enter which number of tickets do you need: "))
first = Nr_Tickets[0] # сохраняем первый Ticket
count = 0 # заводим счетчик
result = '' # и результирующую строку
for i in range Nr_Tickets                          # Idea: to go all Nr_Tickets through and to ask for age for each Ticket
    age(i) = int(input("please enter your age: "))
        i += 1
# Then needed to count Ticktes in each age-cathegory. How to realise it?
        
# if age < 18:
#    Preis_a18 = 0
#    print('entry free of cost')
# elif 18 <= age < 25:
#    Preis_18a25 = 990
#    print('your costs are 990 RUB per Ticket')
# else:
#    Preis_a25 = 1390
#    print(print('your costs are 1390 RUB per Ticket'))

far4ikg

Rikin
Для конференции необходимо написать программу, которая будет подсчитывать общую стоимость билетов.
Сам я начинающий, сделал вот такое:
 price_all = 0
while True:
    try:
        ticket_number = input('Сколько билетов вы хотите приобрести на мероприятие? ')
        ticket_number = int(ticket_number)
        if type(ticket_number) == int:
            break
    except ValueError:
        print('Введите целое число')
for i in range(ticket_number):
    i += 1
    while True:
        try:
            age_for_ticket = input(f'Для какого возраста билет №{i}? ')
            age_for_ticket = int(age_for_ticket)
            if age_for_ticket < 18:
                print('Билет бесплатный')
            elif 25 > age_for_ticket >= 18:
                price_all += 990
                print('Стоимость билета: 990 руб.')
            else:
                price_all += 1390
                print('Стоимость билета: 1390 руб.')
            if type(age_for_ticket) == int:
                break
        except ValueError:
            print('Введите целое число')
if ticket_number > 5:
    price_all = price_all - ((price_all / 100) * 20)
    print(f'Сумма к оплате {price_all} руб. с учетом 20%-ой скидки на полную стоимость заказа за регистрацию больше 5-и человек')
else:
    print(f'Сумма к оплате {price_all} руб.')
Дальше допиливайте сами )
Rikin
far4ikg
Большое вам спасибо.
Импульс получен.

Я тут немного по-своему написать удумал и несколько мыслей:

После for i in range (Nr_Tickets) требуется ли еще i += 1 (оно в цикле подразумевается само собой?)?


Отличная идея- подсказка, чтобы выйти из локальных условий if elif по возрастно-ценовым категориям (без него попадение в бесконечный цикл после последнего ввода)
while True:
if ……
elif …..
continue

и перейти к выводу общей суммы к оплате:
print('Сумма к оплате руб.: ‘, price_all)

что за буква и скобки f’…{price_all} в print(f'Сумма к оплате {price_all} руб.') - то мне еще предстоит узнать.

С проверкой ввода == int:
буду завтра разбирать

far4ikg
Rikin
После for i in range (Nr_Tickets) требуется ли еще i += 1 (оно в цикле подразумевается само собой?)?

В цикле for отсчет начинается с 0, а не с 1. Допустим в цикле
 for i in range(ticket_number)
значение переменной ticket_number = 5, цикл начнет отсчитывать от 0 по 4, что приведет в операции
 age_for_ticket = input(f'Для какого возраста билет №{i}? ')
нумерации первого билета не к №1, а к №0, второго не к №2, а к №1 и т.д.

Rikin
Отличная идея- подсказка, чтобы выйти из локальных условий if elif по возрастно-ценовым категориям (без него попадение в бесконечный цикл после последнего ввода)
while True:
if ……
elif …..
continue

Тоже можно, только в этом случае не будет отображаться надпись о том, что билет бесплатный. А если делать так:
 if age_for_ticket < 18:
    print('Билет бесплатный')
    Continue
нет смысла вставлять
 Continue

Rikin
что за буква и скобки f’…{price_all} в print(f'Сумма к оплате {price_all} руб.') - то мне еще предстоит узнать.

это называется f-строкой. Это
 input(f'Для какого возраста билет №{i}? ')
равнозначно этому
 input('Для какого возраста билет № ', i, '?', sep='')
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB