在 Python 中比较数字会给出错误的结果[重复]
- 2025-03-11 08:53:00
- admin 原创
- 31
问题描述:
如果我输入任何小于 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.')
解决方案 1:
您正在测试一个字符串值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))
-- 您应该习惯这种字符串格式,而不是使用 -- 进行字符串连接。您可以在文档+
中阅读更多相关信息。但这实际上与您的核心问题没有任何关系。
解决方案 2:
字符串'100'
确实小于字符串'24'
,因为'1'
的“字母顺序”小于'2'
。您需要比较数字。
my_age = int(input())
if my_age > 24:
解决方案 3:
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 进行比较。;
此外,通常不应将字符串相加,因为这不符合 Python 规范,而且速度很慢。尝试使用类似print ('Hello, %s' % myName)
而不是print ('Hello, ' + myName)
。
Python 字符串教程
解决方案 4:
使用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.')
相关推荐
热门文章
项目管理软件有哪些?
热门标签
云禅道AD