比较数字会在Python中产生错误的结果

时间:2016-10-11 15:40:24

标签: python if-statement

抱歉,如果这是一个可怕的问题,但我对编程很陌生。我正在尝试一个简短的小测试程序。

如果我输入任何小于24的值,它会打印"你将会变老......"声明。如果我输入任何大于24的值(最多99个),它会打印"你老了"言。

问题是,如果输入的值为100或更高,它会打印"在您知道它之前,您将会变老。"言。

print ('What is your name?')
myName = input ()
print ('Hello, ' + myName)
print ('How old are you?, ' + myName)
myAge = input ()
if myAge > ('24'):
     print('You are old, ' + myName)
else:
     print('You will be old before you know it.')

4 个答案:

答案 0 :(得分:6)

您正在针对另一个字符串值myAge测试字符串值'24',而不是整数值。

if myAge > ('24'):
     print('You are old, ' + myName)

应该是

if int(myAge) > 24:
    print('You are old, {}'.format(myName))

在Python中,你可以大于/小于字符串,但它并不像你想象的那样工作。因此,如果要测试字符串的整数表示的值,请使用int(the_string)

>>> "2" > "1"
True
>>> "02" > "1"
False
>>> int("02") > int("1")
True

您可能也注意到我将print('You are old, ' + myName)更改为print('You are old, {}'.format(myName)) - 您应该习惯这种字符串格式,而不是使用+进行字符串连接 - 您可以在the docs.中详细了解它。但它与你的核心问题没有任何关系。

答案 1 :(得分:1)

字符串'100'确实小于字符串'24',因为'1'“按字母顺序”小于'2'。您需要比较数字

my_age = int(input())
if my_age > 24:

答案 2 :(得分:1)

print ('What is your name?')
myName = input ()
print ('Hello, ' + myName)
print ('How old are you?, ' + myName)
myAge = input ()
if int(myAge) > 24:
     print('You are old, ' + myName)
else:
     print('You will be old before you know it.')

关于代码的一小部分。您应该将输入从myAge转换为整数(int(数字),然后将该数字与数字24进行比较。

此外,您通常不应该将字符串添加到一起,因为它会考虑 non-pythonic 并且速度很慢。尝试print ('Hello, %s' % myName)而不是print ('Hello, ' + myName)

Python Strings Tutorial

答案 3 :(得分:0)

使用int(myAge)。我总是使用raw_input而且,你不必打印你的问题。而是将问题放入raw_inputs中,如下所示:

myName = raw_input("Whats your name?")
print ('Hello, ' + myName)
myAge = raw_input('How old are you?, ' + myName)
if int(myAge) > ('24'):
    print('You are old, ' + myName)
else:
    print('You will be old before you know it.')