Создайте цикл while, который получает ввод от пользователя и проверяет наличие отрицательных значений. - PullRequest
0 голосов
/ 25 сентября 2019

Я пытаюсь создать простой цикл while, который проверяет, является ли какое-либо из трех значений отрицательным, и если True, снова запрашивает эти три значения.

Вот мой код:

def vyohykeliput():

    rivi = input("How many AB-zone trips do you make per month?\n")
    ABmatka = int(rivi)
    rivi1 = input("How many BC-zone trips do you make per month?\n")
    BCmatka = int(rivi1)
    rivi2 = input("How many ABC-zone trips do you make per month?\n")
    ABCmatka = int(rivi2)

    while ABmatka or BCmatka or ABCmatka < 0:
        print("The given values cannot be negative!")
        rivi = input("How many AB-zone trips do you make per month?\n")
        ABmatka = int(rivi)
        rivi1 = input("How many BC-zone trips do you make per month?\n")
        BCmatka = int(rivi1)
        rivi2 = input("How many ABC-zone trips do you make per month?\n")
        ABCmatka = int(rivi2)
vyohykeliput()

Но все, что мне удалось получить в качестве вывода, - это вывод "Заданных значений ..." каждый раз, когда я запускаю программу, являются ли данные числаотрицательно или нет.Кроме того, мне удалось заставить его печатать «Заданные значения ...» бесконечное число раз.

Ответы [ 2 ]

1 голос
/ 25 сентября 2019

То, что вы хотите сделать, это:

while ABmatka < 0 or BCmatka < 0 or ABCmatka < 0:
    # ...

Сокращение (по крайней мере для большего количества значений или итерируемого значения) для этого будет

while any(x < 0 for x in (ABmatka, BCmatka, ABCmatka)):
   # ...

ABmatka or BCmatka or ABCmatka < 0 верно, если верно любое из следующих выражений:

ABmatka
BCmatka
ABCmatka < 0
0 голосов
/ 25 сентября 2019

Поместите так:

while ABmatka < 0 or BCmatka < 0 or ABCmatka < 0:

Если вы ставите только так, вы спрашиваете, не являются ли ABmatka или BCmatka None или любым другим ложным значением, например, 0, "", [],

while ABmatka or BCmatka or ABCmatka < 0:
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...