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



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

我希望用户可以输入float,但如果用户输入整数,它将显示为integer,而不是float。。

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

如果用户输入5

output : 5.0

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

input => output
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

我对你问题的措辞有点困惑,但我想你的意思是,如果用户输入了一个整数,你希望它被视为(或显示(整数,但如果用户输入的是浮点,那么你希望它作为浮点被视为。

这里最好的选择是使用可用于float的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)

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

由于Python是围绕着try-except原因构建的,因此这里有一个使用try-exception块的完整示例,该块只有在用户输入有效值后才会移动:

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)

带float.is_teger((

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

带f字符串和格式

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

输出:

>>> 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))

最新更新