1

このコードのエラーをトラブルシューティングしようとしています:

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です。の値はユーザーによって設定され、関数は常に「F」を返しますが、zどのような文字の等級が価値があるかを決定する必要があります。z

これは私にとってかなり混乱していて(私は初心者です)、いくつかの支援を利用できます。

4

5 に答える 5

2

あなたorの s ingraderは s である必要がありますand。0 より大きい値を入力すると、最初の条件を通過するため、F になります。

于 2013-06-03T23:19:54.207 に答える
1

@Jon Clementsの(素晴らしい)回答に基づいていますが、理解しやすいと思います:

def grade(score, breakpoints, grades):
    for k, v in zip(breakpoints, grades):
        if score > k:
            return v
    return 'Error'

grade(score, breakpoints=(90, 80, 70, 60, 0), grades=('A','B','C','D','E','F'))
于 2013-06-03T23:22:23.557 に答える
0

if x>0 or x < 590以上のすべてをカバーします

or と and を混同しています

if x>0 and x < 59は 0 から 59 までの範囲のみです

しかし、次のようにもっと簡潔にすることができます 0 < x < 59

于 2013-06-03T23:19:44.397 に答える