Как я могу заставить пользователя вводить int, а не float? - PullRequest
0 голосов
/ 29 апреля 2020

Я пишу программу, которая получает значение от пользователя, в консоли, и преобразую ее в int, например, так:

num = int(input("Enter a number: "))

Мне нужна моя программа, чтобы работать только с ints. Это работает для преобразования действительного int, введенного в консоль, в int, которое я могу использовать в программе, но если пользователь вводит число с плавающей точкой, например 3.1, то оно не приводится к int путем усечения или округления, например.

Как заставить пользователя вводить int, а не float? Или как мне преобразовать входные данные с плавающей точкой в ​​int?

Ответы [ 5 ]

2 голосов
/ 29 апреля 2020

Вы можете использовать блок try catch, чтобы гарантировать, что они дают вам только int:

while True:
    try:
        num = int(input("Enter a number: "))
        #do something with num and then break out of the while loop with break
    except ValueError:
        print("That was not a number, please do not use decimals!")

Когда ValueError (если он не может преобразоваться в int), возвращается к запросу номер, который после того, как вы получите свой номер, вы можете делать что-то с указанным номером или затем вычеркнуть из l oop и использовать num в другом месте.

1 голос
/ 29 апреля 2020

Вы можете просто использовать встроенную функцию eval python.

num = int(eval(input("Enter a number: "))).

Для преобразования строки в код python и оценки математических выражений чаще всего используется функция eval. Например, eval("2 + 3") даст вам 5. Однако, если вы напишите "2 + 3", тогда вы получите только '2 + 3' в качестве строкового значения.

1 голос
/ 29 апреля 2020

Так что int () строки типа "3.1", конечно, не работает. Но вы можете преобразовать входные данные в число с плавающей точкой, а затем в int:

num = int(float(input("Enter a number: ")))

Он всегда будет округляться. Если вы хотите, чтобы оно округлилось, если> = .5:

num = float(input("Enter a number: "))
num = round(num, 0)
num = int(num)
1 голос
/ 29 апреля 2020

Вы можете использовать try except, чтобы проверить, является ли пользовательский ввод целым числом. Пример кода:

while True:
    try:
        value=int(input("Type a number:"))
        break
    except ValueError:
        print("This is not a whole number.")

Этот код вернет l oop к началу, если пользователь введет что-то, что не является int.

0 голосов
/ 29 апреля 2020

использование abs() возвращает абсолютное значение заданного числа

...