2013-04-23 35 views
0

我正在寫一個凱撒密碼程序,我需要保持我的值在32和126(可打印ascii設置)的範圍內,當它加密自己。所以當它到達126它返回到32如何在ascii 32和ascii 126之間循環ascii python

這裏是代碼

​​3210
+0

使用模運算符''% – 2013-04-23 07:51:49

+1

還有的[Python的凱撒密碼問題]負載(http://stackoverflow.com/search? q = [python] + caesar)已經在堆棧溢出了。發佈前是否通過它們進行搜索? – 2013-04-23 07:51:56

+0

http://stackoverflow.com/questions/1538935/caesars-cipher-using-python-could-use-a-little-help – Ofiris 2013-04-23 07:52:36

回答

3

假設你有一個變量v您要添加a來,並將它限制在範圍32..126包容性,這應該這樣做:

v = (v - 32 + a) % (127 - 32) + 32 

因此,例如,當添加3〜125:

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

更普遍:

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

做然而要注意你所期望的負數一些模運算可能不會做,但你可以確保你總是添加一個正數繞開這個問題。例如,你可以在這個函數像開始插入:

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