7-1 字典方法。哪一个字典方法能够用来把两个字典合并到一块儿?node
7-2 字典的键。咱们知道字典的值能够是任意的Python对象,那字典的键又如何呢?请试着将除数字和字符串之外的其余不一样类型的对象做为字典的键,看一看哪些类型能够,哪些不行?对那些不能做为字典的键的类型,你认为是什么缘由呢?python
字典的键通常都为不可变类型算法
元组能够,列表不行,列表为不可哈希对象dom
7-3 字典和列表的方法。函数
(a)建立一个字典,并把这个字典中的键按照剪切字母顺序显示出来。加密
(b)如今根据已按照字母顺序排序好的键,显示出这个字典中的键和值。spa
(c)同(b),但此次是根据已按照字母顺序排序好的字典的值,显示出这个字典中的键和值(注意:对字典和哈希表来讲,这样作通常没什么实际意义,由于大多数访问和排序(若是须要)都是基于字典的键,这里只把它做为一个练习)翻译
(a)对象
(b)排序
(c)
7-4 创建字典。给定两个长度相同的列表,好比说,列表[1,2,3,...]和['abc','def','ghi,...],用这两个列表的全部数据组成一个字典,像这样:{1:‘abc’,2:'def',3:'ghi',...}
7-5 userpw2.py。下面的问题和例题7.1中管理名字-密码的键值对数据的程序有关。
(a)修改那个脚本,使它能记录用户上次的登陆日期和时间(用time模块),并与用户密码一块儿保存起来。程序的界面有要求用户输入用户名和密码的提示。不管用户名是否成功登陆,都应有提示,在用户名登陆成功后,应更新相应用户的上次登陆时间戳。若是本次登陆与上次登陆在时间上相差不超过4个小时,则通知该用户:‘You already logged in at:<last_login_timestamp>.’
(b)添加一个‘管理’菜单,其中有如下两项:(1)删除一个用户(2)显示系统中全部用户名字和他们的密码的清单.
(c)口令目前没有加密。请添加一段对口令加密的代码
(d)为程序添加图形界面,例如,用Tkinter写。
(e)要求用户名不区分大小写。
(f)增强对用户名的限制不容许出现符号和空白符。
(g)合并‘新用户’和‘老用户’两个选项
7-6 列表和字典。建立一个简单的股票证券投资数据系统。其中应至少包含4项数据:股市行情显示器符号、所持有的股票、购买价格及当前价位——你能够随意添加其余数据项,好比收益率,52周最高指数、最低指数,etc。
7-7 颠倒字典中的键和值。用一个字典作输入输出另外一个字典,用前者的键作值,前者的值作键。
7-8 人力资源。建立一个简单的雇员姓名和编号的程序,让用户输入一组雇员姓名和编号。你的程序可提供按照姓名排序输出的功能,雇员姓名显示在前面,后面是对应的雇员编号。附加题:添加一项功能,按照雇员编号的顺序输出数据。
7-9 翻译。
(a)编写一个字符翻译程序(功能相似于Unix的tr命令)。咱们将这个函数叫作tr(),它有三个字符串作参数:源字符串、目的字符串、基本字符串语法定义以下:
def tr(srcstr, dststr, string)
srcstr的内容是你打算‘翻译’的字符集合,dsrstr是翻译后获得的字符集合,而string是你打算进行翻译操做的字符串。举例来讲,若是srcstr == ‘abc’,dststr == ‘mno’,string == ‘abcdef’,那么tr()的输出将是‘mnodef’。注意到这里len(srcstr) == len(dststr)。
在这个练习中,你可使用内建函数chr()和ord(),但它们并不必定是解决这个问题所必不可少的函数。
(b)在这个函数里增长一个标志参数,来处理不区分大小写的翻译问题。
(c)修改你的程序,使它可以处理删除字符的操做。字符串srcstr中不可以映射到字符串dststr中字符的多余字符都将被过滤掉。换句话说,这些字符没有映射到dststr字符串中的任何字符所以就从函数返回的字符里被过滤掉了。举例来讲:若是srcstr==‘abcdef’,dststr==‘mno’,string ==‘abcdefghi’,那么tr()将输出‘mnoghi’.注意这里len(srcstr)>=len(dststr)。
7–10. 加密。
(a) 用上一个练习的思路编写一个"rot13"翻译器。"rot13"是一个古老而又简单的加密方法,它把字母表中的每一个字母用其后的第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.].
7-11定义。什么组成字典中合法的键?举例说明字典中合法的键和非法的键。
大多数python对象
非法的键:字典和列表
合法的键:数字、字符串
7-12定义。(a)在数学上,什么是集合?
(b)在Python中关于集合类型的定义是什么?
(a)由不一样元素组成的集合
(b)集合对象是一组是无序排列的可哈希的值
7–13. 随机数。
修改练习5-17 的代码:使用random 模块中的randint()或randrange()方法生成一个随机数集合:
从0 到9(包括9)中随机选择,生成1 到10 个随机数。这些数字组成集合A(A 能够是可变集合,
也能够不是)。同理,按此方法生成集合B。每次新生成集合A 和B 后,显示结果 A | B 和 A & B
7-14用户验证。修改前面的练习,要求用户输入A|B和A&B的结果,并告诉用户的答案是否正确,而不是将A|B和A&B的结果直接显示出来。若是用户回答 错误,容许他修改解决方案,而后从新验证用户输入的答案。若是用户三次提交的答案均不正确,程序将显示正确结果。附加题:运用你关于集合的知识,建立某个 集合的潜在子集,并询问用户此潜在子集是否真是该集合的子集,要求和主程序同样有显示更正和答案的功能。
7–15. 编写计算器。这个练习取材于http://math.hws.edu/ 在线免费Java 教材中的练习12.2。编写
一个程序容许用户选择两个集合:A 和B, 及运算操做符。例如,in, not in, &, |, ^, <,<=, >, >=, ==,
!=, 等. (你本身定义集合的输入语法,它们并不必定要像Java 示例中那样用方括号括住。)解析
输入的字符串,按照用户选择的运算进行操做。你写的程序代码应该比Java 版本的该程序更简
洁。