mySpeed = input("What is your speed? ")
if mySpeed < ("50"):
print ("safe")
如果值大于99,为什么要打印?
答案 0 :(得分:4)
试试这个:
mySpeed = int(input("What is your speed? "))
if mySpeed < 50:
# same as before
说明:您应该读取一个数字并将其与数字进行比较。您的代码当前正在读取字符串并将其与另一个字符串进行比较,这不会给出您期望的结果。
答案 1 :(得分:2)
因为您要比较两个字符串,而不是两个整数。字符串是一个序列,序列比较工作as follows:
比较使用词典排序:首先比较前两个项目,如果它们不同,则确定比较的结果;如果它们相等,则比较接下来的两个项目,依此类推,直到任一序列用完为止。
因此,如果您使用大于'99'
的数字,例如'100'
它将使用第一个字符'1'
并将其与'5'
('50'
的第一个字符)进行比较。 '1'
小于ascii中的'5'
('1'==49
和'5'==53
)。因此,这种比较已经终止,结果确实'100'
小于'50'
。
出于同样的原因,'9'
不小于'50'
:
In [1]: b'9'<b'50'
Out[1]: False
您应该比较整数,如下所示:
mySpeed = int(input("What is your speed? "))
if mySpeed < 50:
print ("safe")
答案 2 :(得分:1)
&#34; 50&#34;是一个字符串,而不是一个数字...尝试消除&#34; &#34; ...
如果mystring是一个字符串,请尝试使用int函数进行强制转换 - 例如INT(MyString的)
答案 3 :(得分:0)
mySpeed < ("50")
正在检查字符串。你需要使用整数:
mySpeed = input("What is your speed? ")
if mySpeed < (50):
print ("safe")
答案 4 :(得分:0)
您无法将字符串计算为整数。将字符串视为单词&#34; ten&#34;,而整数是&#34; 10&#34;。您不能将三个字母t-e-n添加到整数并生成数字。但是,您可以添加&#34; 10 + 10&#34;例如,以产生&#34; 20&#34;。您的代码应如下所示:
mySpeed = int(input("What is your speed? "))
if mySpeed < 50:
print ("safe")
注意:使用int()
功能转换用户&#39;输入一个整数,你实际上并没有验证他们输入什么。如果用户输入一个字符串,例如&#34; ten&#34;,您的代码将返回错误,因为&#34; ten&#34;无法转换为整数。
我的答案不是最佳做法,但它会“#34; work&#34 ;.