|
马上注册,结交更多好友,享用更多功能,让你轻松玩转新大榭论坛!
您需要 登录 才可以下载或查看,没有账号?注册
x
- """6 J [$ H* l5 h! X K
- 《信息技术》(必修二)P106 凯撒密码算法程序教科书所示源代码
; `, Y. b+ I6 C - , G+ ?; I! s* w
- """
) u8 ?$ N" S1 j9 b! G- i6 W5 o - def change(code,key):
Q$ m4 J, u% A% P: N8 e4 D8 x - code= code.lower()7 x: x$ a3 ]) ~/ \
- m = ord(code)/ V. A% m1 S/ b8 [7 s; y
- if m >= 97 and m <= 122:
5 A! S5 ^: `4 y' R1 {$ B - m = 97 + ((m - 97) + key) % 26
* E- Q* X% g( Z - return chr(m)
) R. v$ l. O0 P) s - 6 _! K0 h* b* j4 w
- def encrypt(code,key):* s$ R( e8 I" n [# E
- code_new =""
4 N/ Q6 Y, e# w0 I - for s in code:
1 n. Z$ @1 S y - code_new += change(s,key)4 O% t# c8 q. B1 M6 p. j
- print(code_new)
( H; @2 l7 \8 f, o# [ - return code_new
) H1 B' o$ K! N/ k* ^4 z+ p - 8 {$ f$ R9 Q# ~
- def decrypt(code,key):! c8 D! |( h0 n" i- k( X& y% N
- code_new =""8 X4 z, K: n; _: M
- for s in code:+ W- t6 h* l0 Z9 t& Z' I; y
- m=ord(s)
. u# l& F9 E* ^* R6 l - code_new +=chr(m-key)$ X' p# A" U6 V' f/ c1 @& Z1 f
- print(code_new)
' j& u( m5 o L3 ~; f8 x - return code_new+ W* Y9 ^ F4 l- C9 N6 W. J7 }
: H& E$ G/ y, G- def main():5 M' h e& q& h2 i4 _; @) y
- print("请选择数字1或2:")* c8 r0 ~" @3 Y
- print("1:加密")( ^3 S1 u: E* a& \- _' f
- print("2:解密")" y7 T! i$ G, s
- select = input()
2 e B$ R/ K7 q% z. C# f- ?6 ~ - if select == "1":
" \& W( ?- m% G: W( R! m- a8 P3 V - code = input("请输入加密字符串:")0 }; r8 m% f- M/ b6 {2 Y; J( ~. @
- key = int(input("请输入偏移位数:"))% }. F9 X+ R% ^, H* e' v8 n
- encrypt(code,key)
( k1 Q7 `& h/ Y; [/ c: G - elif select == "2":
0 a. E7 Q$ _2 q: g+ ?# v - code = input("请输入解密字符串:")1 p& L9 t6 w$ P
- key = int(input("请输入偏移位数:"))5 ?; V/ U7 Q: {; ]- K
- decrypt(code,key)
4 m* L9 [4 Y8 d) [( p z - else:: T7 L/ M" W, z+ M* j1 q4 J4 b
- print("输入错误,请重试!")3 ^: W4 U2 A- u9 l( v. i" v
-
, T8 X- U0 N: v; w - if __name__ == '__main__':+ U& |& `# W1 }4 B N4 J
- main()" A* O# x' b( D9 F& F+ y& F
-
( |5 w7 R0 h. n9 s6 i& z# Y7 o# ? - '''
( A5 v8 ]* {* x- @* Z* z - 注:该案例所有字符串均加密为小写字母显示,请同学们想一想,如果都想转成大写字母显示该如何修改呢?1 S- x1 {$ n" H0 O) o" O1 X
-
3 _8 z- W3 }0 x - '''
复制代码 |
|