【问题标题】:Multiple variables in an if statement in PythonPython中if语句中的多个变量
【发布时间】:2020-04-01 23:41:50
【问题描述】:

我正在尝试在一个简单的 min max 程序中验证用户输入。我有多个输入的整数,我试图为所有输入的值使用一个 if 语句,如果它不是整数,则输出错误消息。当我按照它的设置方式尝试它时,我可以输入整数和非整数,最后它会出错:

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

AttributeError: 'tuple' 对象没有属性 '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))

【问题讨论】:

    标签: python validation max min


    【解决方案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
    

    【讨论】:

    • 谢谢你,这更有意义。如果我想在输入时检查每个输入的值,并在错误而不是最后显示错误消息,我是否能够使用相同的整数检查过程?
    • @WillKlingenstein,当然。您可以采用类似的方法。请不要忘记按答案左侧的勾号将有用的答案标记为已接受。
    【解决方案2】:

    你需要对每个输入字符串依次调用isdigit()方法:

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

    all() 函数检查结果并返回True,如果它们都是True

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-23
      • 2018-09-18
      • 2021-02-14
      • 1970-01-01
      • 1970-01-01
      • 2017-10-25
      • 2014-06-08
      相关资源
      最近更新 更多