它把字母表中的每个字母用其后的第13 个字母来代替。字母表中前半部分字母将被映射到后半部分,而后半部分字母将被映射到前半部分,大小写保持不变。举例来说,'a'将被替换为'n','X'将被替换为'K'; 数字和符号不进行翻译。
(b)在你的解决方案的基础上加一个应用程序,让它提示用户输入准备加密的字符串(这个算法同时也可以对加密后的字符串进行解密),如下所示: % rot13.py
Enter string to rot13: This is a short sentence. Your string to en/decrypt was: [Thisis a short sentence.].
The rot13 string is: [Guvf vf n fubeg fragrapr.]. %
% rot13.py
Enter string to rot13: Guvf vf n fubeg fragrapr. Your string to en/decrypt was: [Guvfvf n fubeg fragrapr.].
The rot13 string is: [This is a short sentence.]. 答案:不会+1
7-11.定义。什么组成字典中合法的键?举例说明字典中合法的键和非法的键。 答案:字典中的键必须是可哈希的,像列表和字典这样的可变类型,由于他们不是可哈希的,所以不能作为键。
7-12. 定义。
(a)在数学上,什么是集合?
(b)在 Python 中,关于集合类型的定义是什么? 答案:
(a)数学上,把set称作由不同的元素组成的集合,集合的成员通常被称作集合元素。 (b)Python中,集合对象是一组无序排列的可哈希的值。
7–13. 随机数。
修改练习5-17 的代码:使用random 模块中的randint()或randrange()方法生成一个随机数集合:从0 到9(包括9)中随机选择,生成1 到10 个随机数。这些数字组成集合A(A 可以是可变集合,也可以不是)。同理,按此方法生成集合B。每次新生成集合A 和B 后,显示结果 A | B 和 A & B 答案:
import random
abc = [] xyz = []
for i in range(random.randint(1,10)): abc.append(random.randint(0,9)) A = set(abc)
for i in range(random.randrange(1,10)): xyz.append(random.randrange(0,9))
B = set(xyz)
print A print B print A | B print A & B
7-14. 用户验证。修改前面的练习,要求用户输入A|B和A&B的结果,并告诉用户的答案是否正确,而不是将A|B和A&B的结果直接显示出来。如果用户回答错误,允许他修改解决方案,然后重新验证用户输入的答案。如果用户三次提交的答案均不正确,程序将显示正确结果。附加题:运用你关于集合的知识,创建某个集合的潜在子集,并询问用户此潜在子集是否真是该集合的子集,要求和主程序一样有显示更正和答案的功能。 答案:
import random
abc = [] xyz = []
answer1 = []
for i in range(random.randint(1,10)): abc.append(random.randint(0,9)) A = set(abc)
for i in range(random.randrange(1,10)): xyz.append(random.randrange(0,9)) B = set(xyz)
print A print B
for i in range(0,3): answer = raw_input('A|B = ') for j in answer.split(','): answer1.append(int(j)) C = set(answer1) if C == A | B: print 'You are right!' break elif i == 2: print 'Sorry,The correct answer is',A | B else: print 'Sorry,you are wrong.'
7–15. 编写计算器。
这个练习取材于http://math.hws.edu/ 在线免费Java 教材中的练习12.2。编写一个程序允许用户选择两个集合:A 和B, 及运算操作符。例如,in, not in, &, |, ^, <,<=, >, >=, ==, !=, 等. (你自己定义集合的输入语法,它们并不一定要像Java 示例中那样用方括号括住。)解析输入的字符串,按照用户选择的运算进行操作。你写的程序代码应该比Java 版本的该程序更简洁。 答案:不会
注:本着资源共享原则,也为更好的学习交流,本文来自于网易博客http://fangweiren843.blog.163.com/,经作者同意,首次上传在百度文库里,供大家学习交流。