Несколько переменных в операторе if в Python - PullRequest
1 голос
/ 01 апреля 2020

Я пытаюсь получить подтверждение ввода пользователя в простой программе min max. У меня есть более одного введенного целого числа, и я пытаюсь получить один оператор if для всех введенных значений, и если это не целое число, вывести сообщение об ошибке. Когда я пытаюсь сделать так, как он настроен, я могу вставить целые и нецелые числа, и в конце произойдет ошибка:

if (число1, число2, число3, число4, число5) .isdi git ():

AttributeError: у объекта 'tuple' нет атрибута 'isdi git'

Ниже приведен полный код.

# Print welcome message
print('Please enter five integers to find the minimum and maximum values.')

# Take 5 numbers from user and convert that to integer and store in variables
validInteger = False
while not validInteger:
    number1 = input('Enter your first integer: ')
    number2 = input('Enter your second integer: ')
    number3 = input('Enter your third integer: ')
    number4 = input('Enter your fourth integer: ')
    number5 = input('Enter your fifth integer: ')
    if (number1, number2, number3, number4, number5).isdigit():
        validInteger = True
else: 
    print('Please enter an integer I.E. 13.')


# Call max function to calculate max value 
max =max(number1,number2,number3,number4,number5)

# Call min function to calculate min value 
min = min(number1,number2,number3,number4,number5)

# Print max number
print('Max value is: ' + str(max))

# Print min number
print('Min value is: ' + str(min))

Ответы [ 2 ]

1 голос
/ 01 апреля 2020

Вы должны использовать:

if all(x.isdigit() for x in (number1, number2, number3, number4, number5)):
    validInteger = True

Почему вы получаете свою ошибку?

(number1, number2, number3, number4, number5) формирует кортеж, а кортеж не имеет isdigit() метод:

>>> type((number1, number2, number3, number4, number5))
<class 'tuple'>

isdigit() - это метод строки.

>>> 'abc'.isdigit()
False
>>> '123'.isdigit()
True
0 голосов
/ 01 апреля 2020

Вам необходимо вызывать метод isdigit() для каждой из входных строк по очереди:

if all(n.isdigit() for n in [number1, number2, number3, number4, number5]):
    validInteger = True

Функция all() проверяет результаты и возвращает True, если все они True .

...