Gpa计算器错误无法修复

2024-04-19 10:06:25 发布

您现在位置:Python中文网/ 问答频道 /正文

a = 4.0
b = 3.0
c = 2.0
d = 1.0
f = 0.0
counter = 0
gpa = 0
while True:
    grade = input("what is your grade ")
    if(grade == "A" or "a"):
        counter += 1
        gpa += a
    elif(grade == "B" or "b"):
        counter += 1
        gpa += b
    elif(grade == "C" or "c"):
        counter += 1
        gpa += c
    elif(grade == "D" or "d"):
        counter += 1
        gpa += d
    elif(grade == "F" or "f"):
        counter += 1
        gpa += f
    elif (grade == ""):
        finalgrade = (gpa/counter)
        print(finalgrade)
        break
    else:
        print ("invalid input")

所以我一直在努力得到这项工作,但无论我做什么,我不能明白。。。。。 当我使用调试器时,它并没有多大帮助,但是它说,所有的elif语句都是这样


Tags: ortrueinputyourifiscounterwhat
2条回答

这是:

if grade == "A" or "a"

并不像你想象的那样。由于python中的运算符优先级,它先计算grade=="A",然后再计算or"a"。它的计算结果总是True。你知道吗

改用in运算符:

if grade in ("A", "a"):

或者,更好的是:

if grade.lower() == "a":

而不是

grade == "A" or "a" #always True, since "a" is truthy

使用

grade == "A" or grade == "a"

或者

grade.upper() == "A"

同样地更改其他语句。你知道吗

尽管我愿意

 import itertools

 points = {'A':4, 'B':3, 'C':2, 'D':1, 'F':0}

 total = 0.
 for count in itertools.count():
     grade = input('What is your grade ')
     if not grade:
         break
     try:
         total += points[grade]
     except KeyError:
         print('invalid input')
 print(total / count)

相关问题 更多 >