我正在尝试通过一个简单的min max程序来验证用户输入。我有多个输入的整数,并且正在尝试为所有输入值使用一个if语句,并且如果它不是输出错误消息的整数。当我尝试使用它的设置方式时,我可以输入整数和非整数,并且最终会出错:
如果(数字1,数字2,数字3,数字4,数字5).isdigit():
AttributeError:“元组”对象没有属性“ isdigit”
下面是完整代码。
# 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))
答案 0 :(得分:1)
您应该使用:
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
答案 1 :(得分:0)
您需要依次对每个输入字符串调用isdigit()
方法:
if all(n.isdigit() for n in [number1, number2, number3, number4, number5]):
validInteger = True
all()
函数检查结果,如果结果全部为True
,则返回True
。