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)
所以我是新来的..这是一件简单的事情,但我无法在任何地方找到答案..
我希望用户可以输入浮点数,但如果用户输入整数,它将显示为整数,而不是浮点数..
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)