Reputation: 23
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
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
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