所以我是新来的。。这是一件简单的事情,但我在任何地方都找不到答案。。
我希望用户可以输入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))