Python:编写大于和小于形式

Python:编写大于和小于形式,python,Python,所以我写了一个关于elif语句的代码,比如如果一个学生的分数低于60,他们将得到F。如果他们的分数至少为60,但低于70,他们将得到D。但是阅读这个问题突然让我对如何使用小于和大于二次混淆;-;我已经试过了,但我不确定我是否正确。这就是问题所在 下面是我的“我试过去做”状态80这个方法怎么样: print('FFFFFFDCBAA'[score // 10]) 在Python3中,分数//10将为您提供一个整数索引! 例如,75//10=7。给你。您应该添加缩进,否则会出现错误 marks =

所以我写了一个关于elif语句的代码,比如如果一个学生的分数低于60,他们将得到F。如果他们的分数至少为60,但低于70,他们将得到D。但是阅读这个问题突然让我对如何使用小于和大于二次混淆;-;我已经试过了,但我不确定我是否正确。这就是问题所在


下面是我的“我试过去做”状态80这个方法怎么样:

print('FFFFFFDCBAA'[score // 10])
在Python3中,分数//10将为您提供一个整数索引!
例如,75//10=7。

给你。您应该添加缩进,否则会出现错误

marks = int(input("Enter Marks: "))
if marks>=90:
    print("A")
elif marks>80:
    print("B")
elif marks>70:
    print("C")
elif marks>60:
    print("D")
else:
    print("F")


您需要将分数与常量进行比较,还要注意缩进:

如果得分>=90: 打印“A” elif得分>=80: 打印“B” elif分数>=70: 打印“C” elif分数>=60: 打印 其他: 打印“F” 由于elif子句仅在前面所有的if和elif都为False时运行,因此不必检查范围。只要你从最高点到最低点进行测试,它就足够了

score = 77

if score >= 90:
    print("A")
elif score >= 80:
    print("B")
elif score >= 70:
    print("C")
elif score >= 60:
    print("D")
else:
    print("F")
如果If子句看起来重复,您可以创建一个边界列表,并在循环中旋转它们。但是在这种情况下,if的执行速度会快一点

grade_levels = ((90, "A"), (80, "B"), (70, "C"), (60, "D"))
def get_grade(score):
    for lower_bound, grade in grade_levels:
        if score >= lower_bound:
            return grade
    return "F"

print(get_grade(100))
print(get_grade(80))
print(get_grade(44))
您可以使用dict将下限映射到每个等级,然后只需迭代该dict即可找到等级:

def print_grade(score):
    """
    the keys in grades must be monotonically decreasing
    """
    grades = {
        90: 'A',
        80: 'B',
        70: 'C',
        60: 'D',
         0: 'F'
    }
    
    for k, v in grades.items():
        if score >= k:
            print(v)
            break

有了它,您可以更轻松地替换等级级别,而无需更改下面的实际逻辑,从而在算法和数据之间提供更清晰的分离。这也可以使用元组或列表来完成。这样的分隔可以使您稍后将分数作为参数从函数外部传递,例如,如果您有另一段代码来计算放坡图。

请尝试使用elif 80 My bad,抱歉,您不能使用=不起作用。分数为7表示颠倒if语句的顺序,否则它总是打印BFun,但适应性不强,很难理解。@JanChristofterasa为什么?可能比太多的分支要好。不错,效率高,但对于不确定是否会出现分支的新用户来说,这可能是一个悬而未决的问题indices@GyuHyeonChoi我会一直努力回答这样一个问题,在这个问题上,OP知道他写的代码哪里出错了。这有助于他学习。给他一些高级代码作为答案,如果效率更高,会让他跳过学习曲线。我对你的回答有两点看法@GyuHyeonChoi当您将其应用于更精细或不均匀的放坡时,它不是非常灵活,它适用于此类示例,但不是编写放坡图的一种好的通用方法。
def print_grade(score):
    """
    the keys in grades must be monotonically decreasing
    """
    grades = {
        90: 'A',
        80: 'B',
        70: 'C',
        60: 'D',
         0: 'F'
    }
    
    for k, v in grades.items():
        if score >= k:
            print(v)
            break