float 显示为 float,但 integer 在 python 中显示为 integer

float shown as float, but integer as integer in python

所以我是新来的..这是一件简单的事情,但我无法在任何地方找到答案..

我希望用户可以输入浮点数,但如果用户输入整数,它将显示为整数,而不是浮点数..

x = float(input('input any number : '))
print(x)

如果用户输入 5

output : 5.0

我希望它只显示 5(没有小数点)..但用户仍然可以输入浮点数..

input => output
5.3 => 5.3
5 => 5

你可以尝试以下方法吗:

'%g'%(5.0)

对于您的情况如下:

x = float(input('input any number : '))
print('%g'%(x))

使用.format

x = float(input('input any number : '))
print('{0:g}'.format(x))

与float.is_integer()

x = float(input())
print(int(x) if x.is_integer() else x)

使用 f-string 和格式

x = float(input())
print(f'{x:g}')

输出:

>>> 5.3
5.3
>>> 5
5

你可以试试 decimal.Decimal(而不是 float)(取决于你还想用那个数字做什么):

from decimal import Decimal

user_input = "5"
x = Decimal(user_input)
print(x) # 5

user_input = "5.3"
x = Decimal(user_input)
print(x)  # 5.3

我对你问题的措辞有点困惑,但我认为你的意思是,如果用户输入一个整数,你希望它被视为(或显示)为一个整数,但是如果用户输入一个浮点数,然后您希望它被视为(或显示)为一个浮点数。

这里最好的选择是使用浮点数可用的 is_integer() 方法(我知道它在 python 3 中可用,但不确定 python 2)

>>> 1.4.is_integer()
False

>>> 1.0.is_integer()
True

>>> x = 12.0
>>> x.is_integer()
True

所以使用你原来的例子,你可以这样做:

x = float(input('input any number : '))
x = int(x) if x.is_integer() else x
print(x)

请注意,这会让您的用户非常信任只输入浮点数或整数。如果他们输入 'foo' 那么您的程序将引发 ValueError 异常,所以不要忘记在检查后将该值转换为 float(或 int),或者将其添加到包含 try-exception 语句的循环。

由于 Python 是围绕 try-except 原因构建的,所以这里是一个使用 try-except 块的完整示例,只有在用户输入有效值后才会继续:

While True:
    try:
        x = float(input('input any number : '))
        x = int(x) if x.is_integer() else x
        break
    except ValueError:
        print("Invalid Numerical Value (must be float or integer)"

print(x)