Я хотел проверить тип данных как int или float в этом простом коде, я где-то ошибся, и сообщение об ошибке «Введите целое число!» проявляется несмотря ни на что. Я уже пытался поставить == вместо != и поставить все остальные операторы после if, но проблема не устранена.
def menuLoop():
marks = input("Please Enter the Obtained Marks: ")
if type(marks) != int or float:
print("Enter an integer!")
menuLoop()
else:
if int(marks) >= 75:
print("A")
menuLoop()
elif marks >= 60:
print("B")
menuLoop()
elif marks >= 35:
print("C")
menuLoop()
elif marks < 35:
print("D")
menuLoop()
menuLoop()
Вы могли бы просто выяснить, в чем проблема, используя интерпретатор Python, просто запустите type(mark). И можно было бы узнать, в чем была проблема. Попробуйте сначала отладить, прежде чем публиковать вопрос здесь.






В Python проблема в том, что input() по умолчанию не является ни int, ни float, то есть string.
Если вы хотите проверить, находится ли вход в формаint, вы можете сделать это следующим образом:
try:
# mark is going to convert in int, if it can.
# otherwise, it will throw a ValueError
mark = int(mark)
except ValueError:
# Handle the exception
print 'Please enter an integer'
menuLoop()
Функция int() вызывает ValueError, если данный параметр не конвертируется в int. Итак, после перехвата этого ValueError мы можем показать сообщение о необходимости ввести значение integer, как я показал выше.
Это немного сложно, но это исправит логику, изменив ваше условие на:
if not marks.replace('.','',1).isdigit():
print("Enter an integer!")
menuLoop()
Он попадет внутрь if, если пользователь введет int или float.
.replace('.','',1) заменит только один ., а затем проверит, являются ли все остальные символы числовыми или нет.
Кроме того, обратите внимание, что функция, рекурсивно вызывающая себя до тех пор, пока не получит правильный ответ, может привести к всевозможным проблемам. Вместо этого используйте цикл.