练习1:

  1. 现有一个字典dict1 保存的是小写字母a-z对应的ASCII码 dict1 = {'a': 97, 'c': 99, 'b': 98, 'e': 101, 'd': 100, 'g': 103, 'f': 102, 'i': 105, 'h': 104, 'k': 107, 'j': 106, 'm': 109, 'l': 108, 'o': 96, 'n': 110, 'q': 113, 'p': 112, 's': 115, 'r': 114, 'u': 117, 't': 116, 'w': 119, 'v': 118, 'y': 121, 'x': 120, 'z': 122}

1) 将该字典按照ASCII码的值排序 #!/usr/bin/python

-- coding:utf-8 --

list = [] dict1 = {'a': 97, 'c': 99, 'b': 98, 'e': 101, 'd': 100, 'g': 103, 'f': 102, 'i': 105, 'h': 104, 'k': 107, 'j': 106, 'm': 109, 'l': 108, 'o': 96, 'n': 110, 'q': 113, 'p': 112, 's': 115, 'r': 114, 'u': 117, 't': 116, 'w': 119, 'v': 118, 'y': 121, 'x': 120, 'z': 122} f = zip(dict1.values(),dict1.keys()) dict2 = sorted(f) dict2 = dict(dict2) print dict2 dict3 = zip(dict2.values(),dict2.keys()) dict3 = dict(dict3) print dict3

  1. 有一个字母的ASCII错了,修改为正确的值,并重新排序 错误的为o字母的ascII码 正确的是111 #!/usr/bin/python

-- coding:utf-8 --

list = [] dict1 = {'a': 97, 'c': 99, 'b': 98, 'e': 101, 'd': 100, 'g': 103, 'f': 102, 'i': 105, 'h': 104, 'k': 107, 'j': 106, 'm': 109, 'l': 108, 'o': 96, 'n': 110, 'q': 113, 'p': 112, 's': 115, 'r': 114, 'u': 117, 't': 116, 'w': 119, 'v': 118, 'y': 121, 'x': 120, 'z': 122} dict1['o']=111 f = zip(dict1.values(),dict1.keys()) dict2 = sorted(f) dict2 = dict(dict2) print dict2

dict3 = zip(dict2.values(),dict2.keys()) print dict3

  1. 用最简洁的代码,自己生成一个大写字母 A-Z 及其对应的ASCII码值的字典dict2(使用dict,zip,range方法) #!/usr/bin/python

-- coding:utf-8 --

list = [chr(i) for i in range(ord("A"),ord("Z")+1)] print list

list2 = [i for i in range(ord("A"),ord("Z")+1)] print list2

dict2 = zip(list,list2) print dict(dict2)

  1. 将dict2与第一题排序后的dict1合并成一个dict3

#!/usr/bin/python

-- coding:utf-8 --

dict1 = {'a': 97, 'c': 99, 'b': 98, 'e': 101, 'd': 100, 'g': 103, 'f': 102, 'i': 105, 'h': 104, 'k': 107, 'j': 106, 'm': 109, 'l': 108, 'o': 111, 'n': 110, 'q': 113, 'p': 112, 's': 115, 'r': 114, 'u': 117, 't': 116, 'w': 119, 'v': 118, 'y': 121, 'x': 120, 'z': 122} dict2 = {'A': 65, 'C': 67, 'B': 66, 'E': 69, 'D': 68, 'G': 71, 'F': 70, 'I': 73, 'H': 72, 'K': 75, 'J': 74, 'M': 77, 'L': 76, 'O': 79, 'N': 78, 'Q': 81, 'P': 80, 'S': 83, 'R': 82, 'U': 85, 'T': 84, 'W': 87, 'V': 86, 'Y': 89, 'X': 88, 'Z': 90}

dict3 = dict(dict1.items()+dict2.items()) print dict3

练习2

  1. 输入三个整数x,y,z,请把这三个数由小到大输出。 1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换, 然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。 #!/usr/bin/python

-- coding:utf-8 --

x = raw_input("请输入x的值: ") y = raw_input("请输入y的值: ") z = raw_input("请输入z的值: ")

list = [x,y,z] for i in range(len(list)): for j in range(i+1,len(list)): if list[i] > list[j]: list[i],list[j] = list[j],list[i] print list

  1. 企业发放的奖金根据利润提成。利润(I)低于或等于10万元时,奖金可提10%;利润高 于10万元,低于20万元时,低于10万元的部分按10%提成,高于10万元的部分,可可提 成7.5%;20万到40万之间时,高于20万元的部分,可提成5%;40万到60万之间时高于 40万元的部分,可提成3%;60万到100万之间时,高于60万元的部分,可提成1.5%,高于 100万元时,超过100万元的部分按1%提成,从键盘输入当月利润I,求应发放奖金总数?