Will K
Will K

Reputation: 23

Multiple variables in an if statement in Python

I am trying to have a validation for the user input in a simple min max program. I have more than one inputted integer and I am trying to have one if statement for all the inputted values and if it is not an integer to output an error message. When I try it the way it is set up I can put in integers and non-integers and it will error out in the end saying:

if (number1, number2, number3, number4, number5).isdigit():

AttributeError: 'tuple' object has no attribute 'isdigit'

Below is the full code.

# 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))

Upvotes: 1

Views: 702

Answers (2)

Austin
Austin

Reputation: 26057

You should use:

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

Why do you get your error?

(number1, number2, number3, number4, number5) forms a tuple and tuple has no isdigit() method:

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

isdigit() is a method of string.

>>> 'abc'.isdigit()
False
>>> '123'.isdigit()
True

Upvotes: 1

quamrana
quamrana

Reputation: 39414

You need to call the isdigit() method on each of the input strings in turn:

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

The all() function examines the results and returns True if they are all True.

Upvotes: 0

Related Questions