|
|
马上注册,结交更多好友,享用更多功能,让你轻松玩转新大榭论坛!
您需要 登录 才可以下载或查看,没有账号?注册
x
- """
, G8 a5 b: k( i( n8 V( C2 @9 v - 《信息技术》(必修二)P106 凯撒密码算法程序教科书所示源代码2 C. U1 g0 H% x# Q! w" Z
4 \3 R2 C6 F: v7 v! _) w( h- """
) H3 x1 P, I' h6 `! F3 B" a3 r - def change(code,key):* L- S+ u- |( e0 h+ h9 w3 s1 u
- code= code.lower()
4 ^* {' g+ y. b2 C - m = ord(code)& K3 k8 N3 A! U1 Q2 I' I
- if m >= 97 and m <= 122:- Y/ i, Y2 G/ h! G( J
- m = 97 + ((m - 97) + key) % 26 . N3 P+ ^5 W4 x, { ^% l
- return chr(m)
9 T+ l, i$ R1 M* v - 3 ^) h( C" \7 h3 q y
- def encrypt(code,key):
0 \6 {5 M! E4 G2 M; x1 F - code_new =""+ e2 U9 D1 [0 _4 ^
- for s in code:) i" Y `" x2 a
- code_new += change(s,key)
5 e0 B9 J( b9 _' y) b( v' D - print(code_new)
/ {& Q3 d z5 j - return code_new" X& ~& `3 ~5 |% A }+ `
- , h: l, |4 b3 ?2 |& _
- def decrypt(code,key):
; J9 p, m6 Y! O1 Z - code_new =""
( N; U3 V- H" G - for s in code:" G8 O% E. t$ H u" }# b1 Q
- m=ord(s)
; ^2 a- S, U0 K F - code_new +=chr(m-key)
9 \+ P7 U5 F' u! `8 L/ f - print(code_new) P! Q! I6 d! F. z
- return code_new
d" \5 J% Y& x0 V2 w0 v0 r
. f$ B; V1 O! z# Q, C- def main():
& N( S$ k, f$ a/ |3 a2 ^ - print("请选择数字1或2:")2 r3 U, i9 C2 A5 [; L* `
- print("1:加密")% T9 j% K% b W9 n) q: O% K8 d: }
- print("2:解密")
* l+ X, A Q4 h+ j2 s) F - select = input(), T1 z; Z T9 ~; H% ]
- if select == "1":
( g* F3 v' O% h( U - code = input("请输入加密字符串:")
1 C5 @4 b; p7 S* V& V - key = int(input("请输入偏移位数:"))% _9 o" d3 W' S; _& ]0 l& o O
- encrypt(code,key)# _' Q9 S9 ] J8 I, d
- elif select == "2":% W2 ]% B/ ~) c
- code = input("请输入解密字符串:")! Q' {, ~4 G4 S1 N
- key = int(input("请输入偏移位数:"))
3 `! Y& B9 |4 z - decrypt(code,key)! @% f3 ^5 G: F
- else:
) {2 ~- j2 C* r4 W - print("输入错误,请重试!")
* q* \& U+ Q9 {. [: H, c* Y - $ S: Z' ~# q3 _! n. t C
- if __name__ == '__main__':7 p/ F' V1 K9 r/ B' G" U: O1 d- e
- main()
5 f% c0 }: N: o9 f9 A; l -
5 @) q; n R# g2 P3 d - '''# M( P2 o! x5 ^5 L' \# O4 Q7 p
- 注:该案例所有字符串均加密为小写字母显示,请同学们想一想,如果都想转成大写字母显示该如何修改呢?
" _0 a* u k) l; [8 c! J9 Z! @ - 1 G/ |/ X1 Q Q. Z; M# J
- '''
复制代码 |
|