Ответ 1
my_input = int(my_input)
Нет более короткого пути, чем использование функции int
(как вы упомянули)
Обычно я делаю это для преобразования строки в int:
my_input = int(my_input)
но мне было интересно, есть ли менее неуклюжий путь, потому что он кажется довольно длинным.
my_input = int(my_input)
Нет более короткого пути, чем использование функции int
(как вы упомянули)
Может быть, вы надеялись на что-то вроде my_number = my_input.to_int
. Но в настоящее время невозможно сделать это изначально. И, как ни странно, если вы хотите извлечь целочисленную часть из плавающей строки, вам нужно сначала преобразовать ее в float
, а затем в int
. Или же вы получите ValueError: invalid literal for int()
.
Надежный способ:
my_input = int(float(my_input))
Например:
>>> nb = "88.8"
>>> int(nb)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: '88.8'
>>> int(float(nb))
88
Если это пользовательский ввод, скорее всего, пользователь ввел строку. Так что лучше поймайте исключение и с try
:
user_input = '88.8'
try:
user_input = int(float(user_input))
except:
user_input = 0
print(user_input)
Что если у меня есть данные типа 1135, которые я хочу преобразовать в int. при использовании int (float (UserInput)) и int() оба не решают задачу, оба выдают исключения ValueError: не удалось преобразовать строку в float: '1,135'