如何在python中循环ascci 32和ascii 126之间的ascii

时间:2013-04-23 07:50:21

标签: python

我正在编写一个Caesar密码程序,我需要在加密自身时保持我的值在32和126(可打印的ascii集)范围内。所以当它达到126时,它会循环回到32

这是代码

print("enter sentence to encrypt:")
string = input()
print("Please enter positive offset value:")
value = int(input())
finalstring = [ord(c) for c in string]
finalstring[:] = [c + value for c in finalstring]
finalstring = ''.join(chr(i) for i in finalstring)

1 个答案:

答案 0 :(得分:3)

假设您有一个变量v,您希望将a添加到32..126并将其限制在v = (v - 32 + a) % (127 - 32) + 32 范围内,则应执行以下操作:

v = (125 - 32 + 3) % (127 - 32) + 32
  =       96       %    95      + 32
  =                1            + 32
  =                       33

因此,例如,当添加3到125时:

def addWithConstraint (loval, hival, val, plus):
    return (val - loval + plus) % (hival + 1 - loval) + loval

更一般地说:

while plus < 0:
    plus = plus + hival + 1 - loval

请注意,某些模运算可能无法达到您对负数的预期,但您可以通过确保始终添加正数来解决这个问题。例如,您可以在该函数的开头插入类似:

{{1}}