为什么我的第一个if语句总是返回true,即使它与if标准不匹配?

时间:2016-07-20 05:03:12

标签: python

我尝试打印分数以确保它收到我输入的值,这更令人费解。防爆。我尝试输入0.85并打印出A.为什么会这样?

try:
    Score = raw_input("What is the Score? ")
    if Score >= 0.90 < 1.01:
        print Score
        print "A"
    elif Score >= 0.80 < 0.90:
        print "B"
    elif Score >= 0.7 < 0.8:
        print "C"
    elif Score >= 0.6 < 0.7:
        print "D"
    elif Score >= 0.6 >= 0.0:
        print "F"
except:
    print "ERROR: You did not enter a number or did not enter the number in the format '0.00'"

2 个答案:

答案 0 :(得分:4)

<强>更新

(我在第一个答案中说错了。)

除了@Alex之外,您需要Declare @PastFiscalYear Date Set @PastFiscalYear= DATEADD(yy, - 1, DATEADD(MONTH,(MONTH(GETDATE()) - 1) / 6 * 12 - 6,CAST(CAST(YEAR(GETDATE()) AS VARCHAR) AS DATETIME))) WHERE ([schema].[table].[DATE] >= @PastFiscalYear ) 来获取数字类型......此float(raw_input(...))声明:

if

相当于:

if Score >= 0.90 < 1.01:

你可能想要这个:

if Score >= 0.90 and 0.90 < 1.01

或者这个:

if 0.90 <= Score < 1.01:

答案 1 :(得分:1)

问题1:raw_input

From the docsraw_input“从输入中读取一行,将其转换为字符串(剥离尾随换行符),然后返回”。

您需要将其强制转换为float,以便将其与数字类型进行比较。

Score = float(raw_input("What is the Score? "))

问题2:链式比较(如@smarx答案中所示)

From the docsx < y <= z相当于x < y and y <= z,但y仅评估一次(但在两种情况下z都未评估发现x < y是假的。“

所以if 0.90 <= Score < 1.01:代替if Score >= 0.90 < 1.01: