Повторяющееся исчезновение строки, проблема с циклом while - PullRequest
0 голосов
/ 01 марта 2019

* Я новичок в python, поэтому будьте осторожны ...

Общая проблема: у меня была проблема с несколькими кодами, которые я написал в последнее время, когда строки пропускаются, и это, очевидно, ошибка намоя часть.Я знаю, что, наверное, что-то не так заказываю, но просто не вижу этого.Моя последняя проблема может быть найдена здесь: Есть ли какая-то причина, по которой Python пропустил бы строку?

Теперь я хочу написать приложение для предварительной продажи ограниченного количества билетов.Вот условия:

"Каждый покупатель может купить до 4 билетов. Всего имеется 15 билетов, которые можно предварительно продать. Программа должна запросить у пользователя желаемое количество билетов.чтобы купить, а затем отобразить количество оставшихся билетов. Повторяйте, пока все билеты не будут проданы, а затем отобразите общее количество покупателей. "

Похожая проблема возникает.

buy = int()
ticket_num = 15
buyers = 0

while ticket_num > 0:
    buy = int(input("How many tickets would you like to purchase? "))
    if buy > 4:
        print("You cannot buy that many (4 max).")
        buy = input("How many tickets would you like to purchase? ")
    else:
        ticket_num = ticket_num - buy
        print("There are currently", ticket_num, "remaining.")
        buyers = buyers + 1

print() 

print("The total number of buyers was:", buyers)

Похоже, что строка для печати в структуре 'else' не читается, и я не совсем понимаю, почему ...

Может кто-нибудь помочь мне понять, чтомое общее недоразумение ..?

Ответы [ 2 ]

0 голосов
/ 02 марта 2019
buy = int()
ticket_num = 15
buyers = 0

while ticket_num > 0:
    buy = int(input("How many tickets would you like to purchase? "))
    if buy > 4:
        print("You cannot buy that many (4 max).")
        #buy = input("How many tickets would you like to purchase? ")
    else:
        if ticket_num - buy>=0:
            ticket_num = ticket_num - buy
            print("There are currently", ticket_num, "remaining.")
            buyers = buyers + 1
        else:
            print("There are currently", ticket_num, "remaining. You can buy up to", ticket_num, "tickets")
print()

print("The total number of buyers was:", buyers)

Вот решение.Проблема была в том, что вы получали информацию два раза.Во-первых, ниже времени.Во-вторых, ниже в заявлении if.

0 голосов
/ 02 марта 2019

Я понял это.У меня была пара ошибок в этой проблеме:

  • У меня не было достаточно условных выражений (elif), чтобы удовлетворить требования
  • Мне не нужно было собирать переменную buyвводите снова в операторе if, потому что цикл while уже заставил бы программу снова запросить ввод.
  • Мне вообще не нужно было иметь переменную buy ​​вне цикла while, я просто должен был ее инициализировать передиспользуя его в операторе 'if'.

Решение состоит в следующем:

tickets = 15
buyers = 0
print("There are currently", tickets, "tickets available.")

while tickets > 0 :
    buy = int(input("How many tickets would you like to purchase? "))
    if buy <= 4 and tickets - buy >= 0:
        tickets = tickets - buy
        buyers = buyers + 1
        print("There are", tickets, "tickets remaining.")
    elif buy > 4:
        print("You cannot buy that many (4 max).")
    elif tickets - buy < 0:
        print("You can only buy what remains. Please see previous 'remaining' message.")

print()
print("There was a total of", buyers, "buyers.")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...