Skip to main content
 首页 » 编程设计

Python整数到字母等级问题

2025年05月04日10jillzhang

我正在尝试解决这段代码中的错误:

import time 
 
while1 = True 
 
def grader (z): 
    if   z >= 0 or z <= 59: 
        return "F" 
    elif z >= 60 or z <= 62: 
        return "D-" 
    elif z >= 62 or z <= 66: 
        return "D" 
    elif z >= 67 or z <= 69: 
        return "D+" 
    elif z >= 70 or z <= 62: 
        return "C-" 
    elif z >= 73 or z <= 76: 
        return "C" 
    elif z >= 77 or z <= 79: 
        return "C+"    
    elif z >= 80 or z <= 82: 
        return "B-" 
    elif z >= 83 or z <= 86: 
        return "B" 
    elif z >= 87 or z <= 89: 
        return "B+" 
    elif z >= 90 or z <= 92: 
        return "A-" 
    else: 
        return "A" 
 
 
 
while while1: 
    z = int(input("I will tell you the grade of this number, enter from 1 - 100\n")) 
    if z < 0 or z > 100: 
        print "Between 1 and 100 PLEASE!\n" 
        while1 = True 
    print grader(z) 
    print "New number now\n" 
    time.sleep(100) 
    while1 = True 

这种情况下的参数是整数z。 z 的值由用户设置,然后该函数应确定 z 的字母等级值,尽管它始终返回“F”。

这让我很困惑(我是新手),我需要一些帮助。

请您参考如下方法:

你的问题是这样的:

if   z >= 0 or z <= 59: 

使用:

if 0 <= z <= 59: 

这减轻了您在使用 or 而不是 and 时遇到的问题,并且更具可读性。

但是你应该看看bisect模块:

>>> def grade(score, breakpoints=[60, 70, 80, 90], grades='FDCBA'): 
        i = bisect(breakpoints, score) 
        return grades[i] 
 
>>> [grade(score) for score in [33, 99, 77, 70, 89, 90, 100]] 
['F', 'A', 'C', 'C', 'B', 'A', 'A']