我正在编写一个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)
答案 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}}