在python 3中,我需要将数字四舍五入为0、25、50、75或100。还有其他类似问题的线程,但是我无法将它们包裹住。
我试图通过比较差异来四舍五入,这可能是我做错了。 (此代码未完成,当我意识到它的开头不起作用时我没有继续)
Position = int(input())
RC1 = 25 - Position
RC2 = 50 - Position
RC3 = 75 - Position
if (RC1 < RC2):
Position = 25
if (RC2 < RC3):
Position = 50
我希望它输出最接近的数字。例如。 20变成25,42变成50等等。
答案 0 :(得分:3)
您可以使用除法和舍入将数字映射到最接近的位置:
num = int(input())
Position= (round(num/25)*25)
print(Position)
答案 1 :(得分:2)
您可以使用类似的方法来确定预定义VALUES
列表中输入值位于哪个值中,然后确定最接近的两个值。请注意,此方法不对列表中的值进行任何假设,只是它们以升序排列(允许它们不相等隔开):
def pairwise(iterable):
"s -> (s0,s1), (s1,s2), (s2, s3), ..."
a, b = iter(iterable), iter(iterable)
next(b, None)
return zip(a, b)
VALUES = 0, 25, 50, 75, 100
posn = int(input("Enter position: "))
for lo, hi in pairwise(VALUES):
if lo <= posn <= hi:
if posn-lo < hi-posn:
posn = lo
else:
posn = hi
break
else:
raise ValueError('A position of {} is out of range'.format(posn))
print('rounded position:', posn)
答案 2 :(得分:0)
def round_func(position):
VALUES = 25, 50, 75, 100
result = 100
if position < 0:
return -1
for i in VALUES:
if position < i:
result = i if i - position < 25 - (i - position) else i - 25
break
return result
print(round_func(int(input())))