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

Why does this print if it's above value 99?

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

if mySpeed < ("50"):

    print ("safe")

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

“50”是字符串,不是数字...尝试消除“”...

如果 mystring 是字符串,请尝试使用 int 函数进行强制转换 - 例如整数(我的字符串)

mySpeed < ("50") 正在检查字符串。您需要使用整数:

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

if mySpeed < (50):
    print ("safe")

试试这个:

mySpeed = int(input("What is your speed? "))
if mySpeed < 50:
    # same as before

说明:您应该读取一个数字并将其与一个数字进行比较。您的代码当前正在读取一个字符串并将其与另一个字符串进行比较,这不会给出您期望的结果。

因为你比较的是两个字符串,而不是两个整数。字符串是一个序列,序列比较有效 as follows:

The comparison uses lexicographical ordering: first the first two items are compared, and if they differ this determines the outcome of the comparison; if they are equal, the next two items are compared, and so on, until either sequence is exhausted.

因此,如果您取的数字大于 '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")

您不能将字符串当作整数来求值。将字符串想象成单词 "ten",而整数是“10”。您不能将三个字母 t-e-n 与一个整数相加并得到一个数字。但是,您可以添加“10+10”,例如得到“20”。您的代码应如下所示:

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

if mySpeed < 50:
      print ("safe")

注意:通过使用int()函数将用户的输入变成一个整数,你实际上并没有验证他们输入的内容。如果用户输入字符串,例如 "ten",您的代码将 return 出错,因为 "ten" 无法转换为整数。

我的回答不是最佳做法,但会 "work"。