Как мне добраться туда, где диапазон составляет ВСЕГО 3-20

#python #integer

Вопрос:

Что они хотят, чтобы мы сделали, так это создали код, в котором я смогу дать им возможность получать только до 20 баллов. Они также хотят, чтобы я добавил сообщение об ошибке, если они ошибутся и перейдут либо выше, либо ниже заданных цифр. Это то, что у меня есть до сих пор.

 n=int(input("Enter an integer between 3-20: "))
a=[]
for i in range(0,n):
    grade=int(input("Enter Grade: "))
    a.append(grade)
avg=sum(a)/n
print("Average Score",round(avg,2))
if(avg >= 90):
    print("Final Grade A")
elif(avg >= 80 and avg < 90):
    print("Final Grade B")
elif(avg >= 70 and avg < 80):
    print("Final Grade C")
elif(avg >= 60 and avg < 70):
    print("Final Grade D")
else:
    print("Sorry, Failed Grade")
   
 

Ответ №1:

Если ваша версия python 3.8 , вы можете заменить первую строку на

 while not 3 <= (n := int(input('Enter an integer between 3-20: '))) <= 20:
    print('Input must be between 3-20, inclusive.')
 

«Выражение назначения» := устанавливается n в качестве входных данных. Затем (3 <= ... <= 20) проверяет, находится ли n между 3 и 20. Ввод запрашивается снова и снова, пока эта проверка не вернется True .

Ответ №2:

Это должно сработать, и это довольно просто понять.

 while True:
    n = int(input("Enter an integer between 3-20: "))
    if not (3 <= n <= 20):
        print("Number not in range 3-20, try again!")
        continue
    a = []
    for i in range(0, n):
        grade = int(input("Enter Grade: "))
        a.append(grade)
    avg = sum(a)/n
    print("Average Score", round(avg, 2))
    if(avg >= 90):
        print("Final Grade A")
    elif(avg >= 80 and avg < 90):
        print("Final Grade B")
    elif(avg >= 70 and avg < 80):
        print("Final Grade C")
    elif(avg >= 60 and avg < 70):
        print("Final Grade D")
    else:
        print("Sorry, Failed Grade")
    break