我想找出用户输入的3个数字的平均值。
val1, val2, val3 = int(sys.argv[1]), int(sys.argv[2]), int(sys.argv[3])
print val1, val2, val3
avr = ((val1 + val2 + val3) / 3)
print avr
print "%02.f" % avr
给定3个数字60、39和92,并在终端中键入python.exe calculator.py 60 39 92
,我得到:
输出:
60 39 92
63
63.00
输出应该显示平均值为63.67,而不是63.00。我哪里错了?
发布于 2020-01-16 02:59:49
在python 2中,尝试用int除法总是会产生一个int,即使结果通常是一个浮点数。这个问题的解决方案是将int转换为浮点数(完全不同的数据类型),或者使用3.0
而不是3
(因为前者被读取为浮点数,而后者是整数):
val1, val2, val3 = float(sys.argv[1]), float(sys.argv[2]), float(sys.argv[3])
或
avg = (val1 + val2 + val3) / 3.0
当所有涉及的数字都是浮点数而不是整数时,结果将是一个浮点数。
如果您要使用Python3(您应该使用Python3;python2已不再受官方支持),这将是不成问题的:整数除法有自己的运算符//
,如果答案不是整数,这种类型的运算将始终生成浮点数。
发布于 2020-01-16 02:58:57
你将变量作为整数输入,那么平均结果也将是整数。然后你把它打印成浮点数,这就是你错的地方。如果您仍然想要浮点型结果,请尝试:
val1, val2, val3 = float(sys.argv[1]), float(sys.argv[2]), float(sys.argv[3])
发布于 2020-01-16 03:00:41
在Python 2中,如果将一个整数除以另一个整数,则会得到一个整数。您可以除以浮点数来修复此问题:
avr = (val1 + val2 + val3) / 3.0
https://stackoverflow.com/questions/59762408
复制相似问题