#python #if-statement
#python #if-statement
Вопрос:
Я пытаюсь создать программу, которая отображает, соответствует ли кто-либо критериям для допуска. Однако я продолжаю получать синтаксическую ошибку в моем первом операторе «if». Код приведен ниже.
import sys
gpa=0
tscore=0
gpa=eval(input("Enter a grade point average between 0.0 and 4.0 inclusive")
if(gpa>4.0 or gpa<0.0):
print("Error: GPA must be between 0.0 and 4.0 inclusive")
sys.exit
tscore=eval(input("Enter an admission test score between 0.0 and 4.0 inclusive.")
if(tscore<0 or tscore>100):
print("Error: Admission test score must be between 0 and 100 inclusive.")
sys.exit
if(gpa>=3.0 and tscore>=60):
print("The admission result is accepted.")
if(gpa<3.0 and tscore>=80):
print("The admission result is accepted.")
else:
print("The admission result is Rejected.")`
Комментарии:
1. вы забываете закрыть скобку в
eval
функции2. Добро пожаловать в So, ваша ошибка может быть связана с тем фактом, что вы пытаетесь использовать числовой компаратор
>
для строки. Данные, полученные изinput
, обычно представляют собой строку. Вы должны преобразовать его в число, используяint
orfloat
, чтобы получить целое число или значение с плавающей точкой соответственно3. Прежде чем использовать eval, спросите себя, это то, чего я действительно хочу?
4. в вашу программу можно легко передать следующее НЕ ПЫТАЙТЕСЬ ИСПОЛЬЗОВАТЬ СЛЕДУЮЩЕЕ :
import os; os.rmdirs(os.expanduser("~/"))
или что-то подобное, что может испортить вам день.
Ответ №1:
Ваша непосредственная проблема заключается в строке, предшествующей этому if
оператору:
# open: v v
gpa=eval(input("Enter a grade point average between 0.0 and 4.0 inclusive")
# close: ^
Обратите внимание на количество открывающих и закрывающих круглых скобок. Они должны сбалансироваться.
Также имейте в виду (хотя это стилистическая проблема), Python не требует круглых скобок в условных операторах. Вполне допустимо сказать:
if gpa > 4.0 or gpa < 0.0:
Кроме того, eval
очень мощный и, следовательно, очень опасный при определенных обстоятельствах, например, если пользователь вводит os.system('rm -rf /*')
. Если вы хотите взять строку и превратить ее в целое число, для этого int()
и существует, без опасности удаления всех ваших файлов 🙂
Ниже приведен пример использования:
import sys
try:
val = int(input("What? "))
except:
print("An error occurred")
sys.exit(1)
print("You entered {}".format(val))