如何舍入到特定的预定义数字?

2024-05-21 04:26:48 发布

您现在位置:Python中文网/ 问答频道 /正文

在python3中,我需要将数字四舍五入到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等等


Tags: 代码inputifrc1position数字差异线程
3条回答

您可以使用除法和舍入法将数字映射到最近的位置:

num = int(input())

Position= (round(num/25)*25)

print(Position)

您可以使用这样的方法来确定输入值位于预定义的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)
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())))

相关问题 更多 >