Programming300 Ответов: 3

В чем же проблема?


Write a program to prompt for a score between 0.0 and
1.0. If the score is out of range, print an error message. If the score is
between 0.0 and 1.0, print a grade using the following table:
Score Grade
3.11. EXERCISES 41
>= 0.9 A
>= 0.8 B
>= 0.7 C
>= 0.6 D
< 0.6 F
Enter score: 0.95
A
Enter score: perfect
Bad score
Enter score: 10.0
Bad score
Enter score: 0.75
C
Enter score: 0.5
F


Что я уже пробовал:

Score = input('Enter your grade from 0.7 to 1.0: ')
print("Received input is: ", Score)
if Score >= 0.9:
    print("A")
elif Score >= 0.8 and Score < 0.9:
    print("B")
elif Score >= 0.7 and Score < 0.8:
    print("C")
elif Score >= 0.6 and Score < 0.7:
    print("D")
else:
    print('F')

if Score != range(0.6 and 1.0): # how to do it in Python? 
    print('Bad score')

3 Ответов

Рейтинг:
1

Richard MacCutchan

elif Score >= 0.8 and Score < 0.9:

Вы уже определили, что оценка меньше 0,9 в предыдущем операторе if, поэтому все, что вам нужно здесь, это:
elif Score >= 0.8

И аналогично для остальных утверждений.
Оператор в конце является избыточным, так как вы уже напечатали F для значений меньше 0,6. что вам нужно, так это тест в начале (после входного оператора), чтобы убедиться, что значение находится в диапазоне. Что-то вроде:
if score > 1.0 or score < 0.0: # too large or negative
    print("Bad value")
else:
# remaining code follows here


Рейтинг:
0

Christian Graus

Наверное, сначала прочтите вопрос?

Ваше утверждение else предполагает, что входные данные действительны, и это единственная ошибка, которую я вижу, кроме того, что вы не читаете вопрос. Я не уверен, что диапазон делает то, что вы ожидаете, используйте <= и >=


Рейтинг:
0

Patrice T

Цитата:
В чем же проблема?

Во-первых, вы забыли сказать, в чем проблема. Совет: используйте отладчик, чтобы увидеть, что на самом деле делает ваш код.
Ваш код слишком сложен:
if Score >= 0.9:
    print("A")
elif Score >= 0.8 and Score < 0.9: # when you are here, it is because 'Score >= 0.9' failled
                                   # and it imply that Score < 0.9 is true, you don't need to test it again
    print("B")
elif Score >= 0.7 and Score < 0.8: # same here
    print("C")
elif Score >= 0.6 and Score < 0.7: # and here
    print("D")
else:
    print('F')


Ваш код ведет себя не так, как вы ожидаете, или вы не понимаете, почему !

Существует почти универсальное решение: запускайте свой код на отладчике шаг за шагом, проверяйте переменные.
Отладчик здесь, чтобы показать вам, что делает ваш код, и ваша задача-сравнить с тем, что он должен делать.
В отладчике нет никакой магии, он не знает, что должен делать ваш код, он не находит ошибок, он просто помогает вам, показывая, что происходит. Когда код не делает того, что ожидается, вы близки к ошибке.
Чтобы увидеть, что делает ваш код: просто установите точку останова и посмотрите, как работает ваш код, отладчик позволит вам выполнять строки 1 на 1 и проверять переменные по мере их выполнения.

Отладчик - Википедия, свободная энциклопедия[^]

Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]
Базовая отладка с помощью Visual Studio 2010 - YouTube[^]

27.3. ПДБ — отладчика Python — питон 3.6.1 документации[^]
Отладка в Python | Python покоряет Вселенную[^]
pdb – интерактивный отладчик - Python модуль недели[^]

Отладчик здесь только для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.