Как мне реализовать функцию диапазона в этой программе? - PullRequest
0 голосов
/ 10 ноября 2019

Я создаю программу, которая позволяет студентам прогнозировать их прогресс в конце каждого учебного года.

1 б: Результаты прогрессирования в соответствии с правилами университета. Объем кредита на каждом уровне. Первая цифра Pass - вторая цифра Pass Defer, третья цифра - Fail

Я уже внес это в свою программу. однако меня попросили внедрить в программу функцию диапазона, так что если кто-то вводит что-либо, кроме 0, 20, 40, 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, deferCR, failCR)
    print ("progress")   
elif passCR == 100 and deferCR == 20 and failCR== 0: #2
    print("Your pass, defer and fail credits are",passCR, deferCR, failCR)
    print ("progress - module trailer")
elif passCR == 100 and deferCR == 0 and failCR== 20: #3
    print("Your pass, defer and fail credits are",passCR, deferCR, failCR)
    print ("progress - module trailer")
elif passCR == 80 and deferCR == 40 and failCR== 0: #4
    print("Your pass, defer and fail credits are",passCR, deferCR, failCR)
    print ("Do not progress - module trailer")
elif passCR == 80 and deferCR == 20 and failCR== 20: #5
    print("Your pass, defer and fail credits are",passCR, deferCR, failCR)
    print ("Do not progress - module trailer")
elif passCR == 80 and deferCR == 0 and failCR== 40: #6
    print("Your pass, defer and fail credits are",passCR, deferCR, failCR)
    print ("Do not progress - module trailer")
elif passCR == 60 and deferCR == 60 and failCR== 0: #7
    print("Your pass, defer and fail credits are",passCR, deferCR, failCR)
    print ("Do not progress - module trailer")
elif passCR == 60 and deferCR == 40 and failCR== 20: #8
    print("Your pass, defer and fail credits are",passCR, deferCR, failCR)
    print ("Do not progress - module trailer")
elif passCR == 60 and deferCR == 20 and failCR== 40: #9
    print("Your pass, defer and fail credits are",passCR, deferCR, failCR)
    print ("Do not progress - module trailer")
elif passCR == 60 and deferCR == 0 and failCR== 60: #10
    print("Your pass, defer and fail credits are",passCR, deferCR, failCR)
    print ("Do not progress - module trailer")
elif passCR == 40 and deferCR == 80 and failCR== 0: #11
    print("Your pass, defer and fail credits are",passCR, deferCR, failCR)
    print ("Do not progress - module trailer")
elif passCR == 40 and deferCR == 60 and failCR== 20: #12
    print("Your pass, defer and fail credits are",passCR, deferCR, failCR)
    print ("Do not progress - module trailer")
elif passCR == 40 and deferCR == 40 and failCR== 40: #13
    print("Your pass, defer and fail credits are",passCR, deferCR, failCR)
    print ("Do not progress - module trailer")
elif passCR == 40 and deferCR == 20 and failCR== 60: #14
    print("Your pass, defer and fail credits are",passCR, deferCR, failCR)
    print ("Do not progress - module trailer")
elif passCR == 40 and deferCR == 0 and failCR== 80: #15
    print("Your pass, defer and fail credits are",passCR, deferCR, failCR)
    print ("Exclude")
elif passCR == 20 and deferCR == 100 and failCR== 0: #16
    print("Your pass, defer and fail credits are",passCR, deferCR, failCR)
    print ("Do not progress - module trailer")
elif passCR == 20 and deferCR == 80 and failCR== 20: #17
    print("Your pass, defer and fail credits are",passCR, deferCR, failCR)
    print ("Do not progress - module trailer")
elif passCR == 20 and deferCR == 60 and failCR== 40: #18
    print("Your pass, defer and fail credits are",passCR, deferCR, failCR)
    print ("Do not progress - module trailer")
elif passCR == 20 and deferCR == 40 and failCR== 60: #19
    print("Your pass, defer and fail credits are",passCR, deferCR, failCR)
    print ("Do not progress - module trailer")
elif passCR == 20 and deferCR == 20 and failCR== 80: #20
    print("Your pass, defer and fail credits are",passCR, deferCR, failCR)
    print ("Exclude")
elif passCR == 20 and deferCR == 0 and failCR== 100: #21
    print("Exclude",passCR, deferCR, failCR)
    print ("Do not progress - module trailer")
elif passCR == 0 and deferCR == 120 and failCR== 0: #22
    print("Your pass, defer and fail credits are",passCR, deferCR, failCR)
    print ("Do not progress - module trailer")
elif passCR == 0 and deferCR == 100 and failCR== 20: #23
    print("Your pass, defer and fail credits are",passCR, deferCR, failCR)
    print ("Do not progress - module trailer")
elif passCR == 0 and deferCR == 80 and failCR== 40: #24
    print("Your pass, defer and fail credits are",passCR, deferCR, failCR)
    print ("Do not progress - module trailer")
elif passCR == 0 and deferCR == 60 and failCR== 60: #25
    print("Your pass, defer and fail credits are",passCR, deferCR, failCR)
    print ("Do not progress - module trailer")
elif passCR == 0 and deferCR == 40 and failCR== 80: #26
    print("Your pass, defer and fail credits are",passCR, deferCR, failCR)
    print ("Exclude")
elif passCR == 0 and deferCR == 20 and failCR== 100: #27
    print("Your pass, defer and fail credits are",passCR, deferCR, failCR)
    print ("Exclude")
elif passCR == 0 and deferCR == 0 and failCR== 120: #28
    print("Your pass, defer and fail credits are",passCR, deferCR, failCR)
    print ("Exclude")

1 - как я могу реализовать функцию диапазона, которая позволяет пользователю вводить только 0,20, 40,60,80,100,120?

2 - программа также должна сообщить пользователю, что если общая сумма прохода, отсрочки и сбоя не равна 120, тогда он должен получить сообщение «Неверный итог». затем повторите тот же вопрос.

PS Я включил изображения моей программы ниже для более четкого изображения.

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

1 Ответ

0 голосов
/ 10 ноября 2019

Для части 1 простой функционал может проверить, что входное значение существует между двумя конечными значениями и кратно 20. Функция 'mod' хороша для множественной части

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!")
...