如果它高于99,为什么要打印?

时间:2015-01-16 22:47:54

标签: python numbers

mySpeed = input("What is your speed? ")

if mySpeed < ("50"):

    print ("safe")

如果值大于99,为什么要打印?

5 个答案:

答案 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 ;.