如何在此程序中实现范围功能?

我正在制作一个程序,使学生可以在每个学年末预测自己的进度。

表1:大学规定定义的升学结果。 每个级别的信贷量 拳头数字为通行证 第二个数字是Defer 第三位数是失败

我已经将此添加到了我的程序中。但是我被要求在程序中实现范围功能,因此,如果有人输入了0、20、40、60、60、80,100和120以外的任何值,则他们将得到一个错误消息,提示“不在范围内”,并再次要求他们输入再次数字。

print(“欢迎来到威斯敏斯特大学成绩计算器”)

while True:
    passCR = input("Enter your pass credits")
    if passCR.isdigit():
        passCR = int(passCR)
        break
    else:
        print("Not an integer Value!try again")

while True:
    deferCR = input("Enter your defer credits")
    if deferCR.isdigit():
        deferCR = int(deferCR)
        break
    else:
        print("Not an integer Value!try again")

while True:
    failCR = input("Enter your fail credits")
    if failCR.isdigit():
        failCR = int(failCR)
        break
    else:
        print("Not an integer Value!try again")

def input_valid_number(which="pass"):
    while True:
        n = input("enter your {} credits: ".format(which))
        try:
            n = int(n)
            if 0 <= n <= 120 and (n % 20) == 0:
                return n
        except:
            pass
while True:
    passCR = input_valid_number("pass")
    deferCR = input_valid_number("defer")
    failCR = input_valid_number("fail")
    if sum([passCR,deferCR,failCR]) == 120:
        break
    print("Your Total credits do not add up to 120. Please try again!")

if passCR == 120 and deferCR == 0 and failCR== 0:    #1
    print("Your pass,defer and fail credits are",passCR,failCR)
    print ("progress")   
elif passCR == 100 and deferCR == 20 and failCR== 0: #2
    print("Your pass,failCR)
    print ("progress - module trailer")
elif passCR == 100 and deferCR == 0 and failCR== 20: #3
    print("Your pass,failCR)
    print ("progress - module trailer")
elif passCR == 80 and deferCR == 40 and failCR== 0: #4
    print("Your pass,failCR)
    print ("Do not progress - module trailer")
elif passCR == 80 and deferCR == 20 and failCR== 20: #5
    print("Your pass,failCR)
    print ("Do not progress - module trailer")
elif passCR == 80 and deferCR == 0 and failCR== 40: #6
    print("Your pass,failCR)
    print ("Do not progress - module trailer")
elif passCR == 60 and deferCR == 60 and failCR== 0: #7
    print("Your pass,failCR)
    print ("Do not progress - module trailer")
elif passCR == 60 and deferCR == 40 and failCR== 20: #8
    print("Your pass,failCR)
    print ("Do not progress - module trailer")
elif passCR == 60 and deferCR == 20 and failCR== 40: #9
    print("Your pass,failCR)
    print ("Do not progress - module trailer")
elif passCR == 60 and deferCR == 0 and failCR== 60: #10
    print("Your pass,failCR)
    print ("Do not progress - module trailer")
elif passCR == 40 and deferCR == 80 and failCR== 0: #11
    print("Your pass,failCR)
    print ("Do not progress - module trailer")
elif passCR == 40 and deferCR == 60 and failCR== 20: #12
    print("Your pass,failCR)
    print ("Do not progress - module trailer")
elif passCR == 40 and deferCR == 40 and failCR== 40: #13
    print("Your pass,failCR)
    print ("Do not progress - module trailer")
elif passCR == 40 and deferCR == 20 and failCR== 60: #14
    print("Your pass,failCR)
    print ("Do not progress - module trailer")
elif passCR == 40 and deferCR == 0 and failCR== 80: #15
    print("Your pass,failCR)
    print ("Exclude")
elif passCR == 20 and deferCR == 100 and failCR== 0: #16
    print("Your pass,failCR)
    print ("Do not progress - module trailer")
elif passCR == 20 and deferCR == 80 and failCR== 20: #17
    print("Your pass,failCR)
    print ("Do not progress - module trailer")
elif passCR == 20 and deferCR == 60 and failCR== 40: #18
    print("Your pass,failCR)
    print ("Do not progress - module trailer")
elif passCR == 20 and deferCR == 40 and failCR== 60: #19
    print("Your pass,failCR)
    print ("Do not progress - module trailer")
elif passCR == 20 and deferCR == 20 and failCR== 80: #20
    print("Your pass,failCR)
    print ("Exclude")
elif passCR == 20 and deferCR == 0 and failCR== 100: #21
    print("Exclude",failCR)
    print ("Do not progress - module trailer")
elif passCR == 0 and deferCR == 120 and failCR== 0: #22
    print("Your pass,failCR)
    print ("Do not progress - module trailer")
elif passCR == 0 and deferCR == 100 and failCR== 20: #23
    print("Your pass,failCR)
    print ("Do not progress - module trailer")
elif passCR == 0 and deferCR == 80 and failCR== 40: #24
    print("Your pass,failCR)
    print ("Do not progress - module trailer")
elif passCR == 0 and deferCR == 60 and failCR== 60: #25
    print("Your pass,failCR)
    print ("Do not progress - module trailer")
elif passCR == 0 and deferCR == 40 and failCR== 80: #26
    print("Your pass,failCR)
    print ("Exclude")
elif passCR == 0 and deferCR == 20 and failCR== 100: #27
    print("Your pass,failCR)
    print ("Exclude")
elif passCR == 0 and deferCR == 0 and failCR== 120: #28
    print("Your pass,failCR)
    print ("Exclude")

1-如何实现仅允许用户输入0、20、40、60、80、100、120的范围功能?

2-该程序还应该让用户知道通过,推迟和失败的总和不是120,那么他们应该得到一条消息“总计不正确”。然后重新运行相同的问题。

我在下面提供了我程序的图像,以使图像更清晰。

https://imgur.com/0PzgE3J  https://imgur.com/sSURE4h

qqcoboo 回答:如何在此程序中实现范围功能?

对于第1部分,一个简单的func可以测试输入值是否存在于两个最终值之间,并且是20的倍数。'mod'func对多个部分都有好处

def input_valid_number(which="pass"):
    while True:
        n = input("Enter your {} credits: ".format(which)).strip()
        if n.isdigit():
            n = int(n)
            if 0 <= n <= 120 and (n % 20) == 0:
                return n
            else:
                print("Invalid Selection. Please enter 0,20,40,60,80,100,or 120!")
        else:
            print("Not an Integer Value. Please try again!")

对于第2部分,下面应该可以解决问题...

while True:
    passCR = input_valid_number("pass")
    deferCR = input_valid_number("defer")
    failCR = input_valid_number("fail")
    if sum([passCR,deferCR,failCR]) == 120:
        break
    print("Your Total Credits do not add up to 120. Please try again!")
本文链接:https://www.f2er.com/3128336.html

大家都在问