如果不是整数,如何显示小数点?

Siy*_*yah 4 python

我用谷歌搜索,但找不到合适的答案.

假设我们有浮动,我们得到他们的平均值.他们的平均值是这样的:

3.5
2.5
5
7
Run Code Online (Sandbox Code Playgroud)

所以我们有4个号码(不在列表中).带小数和两个整数的两个数字.

我想要做的是,打印这些数字并保持这样.但问题是,当我使用时%.1f,它从5和7开始产生5.0和7.0,而我想保持原样(所以保持它们为整数).

所以我想完全按原样打印它们,但我不知道怎么做.Float decimal为整数增加了分数.将它们转换为a int,删除所需的小数.

这两个选项都不是我想要的.

有人能指出我正确的方向吗?

编辑:相关代码,如下所示:

# I have a list of numbers and I am calculating their average and rounding them first.
get_numbers = map(float, line[-1])
average_numbers = sum(get_numbers) / len(get_numbers)
rounded_numbers= round(average_numbers * 2) / 2

# So now, I've got the numbers: 3.5, 2.5, 5, 7

print "The numbers are: %.1f" % (rounded_numbers)
Run Code Online (Sandbox Code Playgroud)

Dee*_*ace 11

您可以使用浮动的is_integer方法.它返回True如果浮子可以被表示为一个整数(换言之,如果是形式的X.0):

li = [3.5, 2.5, 5.0, 7.0]

print([int(num) if float(num).is_integer() else num for num in li])
>> [3.5, 2.5, 5, 7]
Run Code Online (Sandbox Code Playgroud)

编辑

OP添加他们的代码后:

您应该使用与计算出的平均值相同的逻辑,而不是像上面的原始示例中那样使用列表理解:

get_numbers = map(float, line[-1])  # assuming line[-1] is a list of numbers
average_numbers = sum(get_numbers) / len(get_numbers)
average = round(average_numbers * 2) / 2
average = int(average) if float(average).is_integer() else average
print average  # this for example will print 3 if the average is 3.0 or
               # the actual float representation. 
Run Code Online (Sandbox Code Playgroud)