如何让用户输入 int 而不是 float?

How do I get the user to input an int rather than a float?

我正在编写一个程序,在控制台中从用户那里获取一个值,然后将其转换为 int,如下所示:

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

我需要我的程序只与 ints 一起工作。这可以将输入到控制台的实际 int 转换为我可以在程序中使用的 int,但是如果用户输入 float,比如 3.1,那么它不会通过截断或四舍五入等方式转换为 int。

如何让用户输入整数而不是浮点数?或者如何将浮点输入转换为 int?

使用abs()它returns给定数字的绝对值

您可以使用 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)被排除在外时,它会返回请求一个数字,一旦你得到你的数字,你就可以用这个数字做一些事情,或者跳出循环然后在其他地方使用 num .

您可以使用 try except 来测试用户输入是否为整数。示例代码:

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

如果用户输入的内容不是 int

,此代码将循环回到开头

因此像“3.1”这样的字符串的 int() 当然不起作用。但是您可以将输入转换为浮点数,然后转换为 int:

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

它总是向下取整。如果你想让它四舍五入 if >= .5:

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

您可以简单地使用 eval python 内置函数。

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

对于将字符串转换为 python 代码和计算数学表达式,主要使用 eval 函数。例如,eval("2 + 3") 会给你 5。但是,如果你写 "2 + 3",那么你将只得到 '2 + 3' 作为字符串值。

尝试:

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

并且浮点数将四舍五入为整数。 如果由于任何原因无法转换数字,您还可以添加一个 try...except 方法向用户提供错误:

while True:
    try:
        num = int(float(input("Enter number: ")))
        print(num)
        break
    except ValueError:
        print("This is not a whole number")