Я думаю, x = int(5.5)
не привело к ошибке значения. Первая проблема, да, вы не можете напрямую сравнить входной результат с int или float. Чтобы убедиться в этом, давайте проведем этот небольшой эксперимент:
>>> x = input()
>>? 20
>>> print(type(x))
>>> <class 'str'>
Из этого эксперимента вы увидите, что даже если вы введете «любое число» для ввода, он вернет ваш ввод в виде строки. И давайте проверим, что происходит с операцией int(input())
:
x = int(input())
5.5
Traceback (most recent call last):
File "<input>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '5.5'
Эта проблема возникает, когда вы пытаетесь «напрямую» преобразовать число с плавающей точкой в целое число. Python не может конвертировать буквально float в int напрямую. Есть еще один способ помочь, назначив float в качестве числа исходного типа данных. Это происходит, когда мы посмотрим, добавим ли мы float в качестве другого синтаксического анализатора:
x = int(float(input()))
5.5
print(type(x))
<class 'int'>
Решение простое, просто проанализируйте входные данные как int, а затем сравните их:
x = int(float(input()))
if x == 5 or x == int(5.5):
#do something
Надеюсь, это поможет вам. Удачи!