Python核心编程 练习 第七章

#7–1. 字典方法。哪个字典方法可以用来把两个字典合并到一起?

#可以通过update来更新。
>>> dict1 = {1:'hello',2:'world'}
>>> dict2 = {2:'i',3:'i'}
>>> dict1.update(dict2)
>>> dict1
{1: 'hello', 2: 'i', 3: 'i'}
>>> 


#7–3. 字典和列表的方法。 
#(a) 创建一个字典,并把这个字典中的键按照字母顺序显示出来。 
#(b) 现在根据已按照字母顺序排序好的键,显示出这个字典中的键和值。 
#(c)同(b),但这次是根据已按照字母顺序排序好的字典的值,显示出这个字典中的键和值。 
#!/usr/bin/env python
#-*- coding:utf-8 -*-

dict1 = {"a":"d","b":"c","c":"b","d":"a"}
for i in sorted(dict1):
    print "key:", i," and value:", dict1[i]
    
for value in sorted(dict1.values()):
    for key in dict1.keys():
        if dict1[key] == value:
            print "key:", key, "and value:", value

#7-4. 建立字典。给定两个长度相同的列表,比如说,列表[1, 2, 3,...]和['abc', 'def','ghi',...],用这两个列表里的所有数据组成一个字典,像这样:{1:'abc', 2: 'def', 3: 'ghi',...}

#!/usr/bin/env python
#-*- coding:utf-8 -*-

dict1 = {}
keys = [1, 2, 3, 4, 5, 6]
values = ["Hello", "world", "I", "love", "my", "python"]
for i in range(len(keys)):
    dict1[keys[i]] = values[i]
    
print dict1
#7-7. 颠倒字典中的键和值。用一个字典做输入,输出另一个字典,用前者的键做值,前者的值做键。

#!/usr/bin/env python
#-*- coding:utf-8 -*-

dict1 = {1:"hello",2:"world"}
dict2 = {}

for key,value in dict1.items():
    dict2[value] = key
    
print dict1
print dict2


#7-8. 人力资源。创建一个简单的雇员姓名和编号的程序。让用户输入一组雇员姓名和编号。你的程序可以提供按照姓名排序输出的功能,雇员姓名显示在前面,后面是对应的雇员编号。附加题:添加一项功能,按照雇员编号的顺序输出数据。

#!/usr/bin/env python
#-*- coding:utf-8 -*-
def dit():
    dict1 = {}
    while True:
        inf = raw_input("请输入姓名和编号,格式(姓名:编号)(q结束):")
        if inf == "q":
            break
        num = inf.split(":")
        dict1[num[0]] = num[1]
    for key in sorted(dict1.keys()):
        print "姓名:%s,编号:%s" %(key, dict1[key])
        
    for value in sorted(dict1.values()):
        for key in dict1.keys():
            if dict1[key] == value:
                print "编号:%s,姓名:%s" % (key, value)
                
dit()
        


#7–10. 加密。 
(a) 用上一个练习的思路编写一个"rot13"翻译器。"rot13"是一个古老而又简单的加密方法,它把字母表中的每个字母用其后的第13 个字母来代替。字母表中前半部分字母将被映射到后半部分,而后半部分字母将被映射到前半部分,大小写保持不变。举例来说,'a'将被替换为'n','X'将被替换为'K'; 数字和符号不进行翻译。 

#!/usr/bin/env python
#-*- coding:utf-8 -*-

import string

numlower = ""
numupper = ""
numlower = string.lowercase * 2
numupper = string.uppercase * 2

def code_rot13(strTemp):
    newstring = ""
    for i in strTemp:
        if i.islower():
            newstring += numlower[numlower.find(i) + 13]
        else:
            newstring += numupper[numupper.find(i) + 13]
    return newstring
    
if __name__ == '__main__':
    while True:
        string = raw_input("Please enter the string(-1 to quit):")
        if string == '-1':
            break
        print "The code rot13 is:", code_rot13(string)
        print "the decode rot13 is", code_rot13(code_rot13(string))
        


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值