1.8 字典 1.9 字典练习 2.0/2.1 流程控制-if条件判断

字典

字典是python中的唯一的映射类型(哈希表)

字典对象是可变的,但是字典的键必须使用不可变对象,一个字典中可以使用不同类型的键值。

字典是无序的 字典的方法: - keys() //以list的形式返回所有key - values() - items() - get() //返回key对应的value - pop() //返回k对应value,并删除这组数据 - update() //D.update(E,**F) 将E,**F加入D中

创建字典

dic = {}
dic = dict()
help(dict)
dict((['a',1],['b',2]))
dict(a=1, b=2)
字典中key可以是数字,字符串,元组,但不能是list,value可为list
fromkeys(),字典元素有相同的值,默认为None。
    ddict = {}.fromkeys((‘x’,’y’), 100)
dict(zip([list1],[list2]))
会生成以list1为key,list2为value的字典
dict(x=10,y=10)
	{'x':10,'y':10}

访问字典

- 直接使用key访问:key不存在会报错,可以使用has_key()或者in和not in判断。
- 循环遍历:
for k in dic1 :
	print k,dic1[k]
    例:for k in dic.keys():

for k, v in dic.items():
	print ('{0}:{1}').format(k,v)

流程控制

if

if expression:
	statements(s)

if i == 1 and b == 2 :
	print ("True")
	
if i == 1 or b == 2 :
print ("True")
		
if i == 1 :
	pass
elif i == 2 :
	pass
else :
	pass

逻辑值(bool)包含了两个值 True :表示非空的量,所有非零数 False :表示0,None,空的量

练习

练习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码的值排序 2) 有一个字母的ASCII错了,修改为正确的值,并重新排序
  2. 用最简洁的代码,自己生成一个大写字母 A-Z 及其对应的ASCII码值的字典dict2(使用dict,zip,range方法)
  3. 将dict2与第一题排序后的dict1合并成一个dict3

1、

print sorted(dict1.iteritems(), key = lambda d: d[1], reverse = False)


for k in dict1 :
	if not ord(k) == dict1[k] :
		print k
		dict1.update({k:ord(k)})

print sorted(dict1.iteritems(), key = lambda d: d[1], reverse = False)

2、

list1=[]
list2=[]
dic2 = {}
for i in range(ord("A"),ord("Z")+1) :
	list1.append(chr(i))
for i in range(ord("A"),ord("Z")+1) :
	list2.append(i)
	dic2 = dict(zip(list1,list2))
print (dic2)

3、 dict3 = dict1 dict3.update(dict2)

练习2

  1. 输入三个整数x,y,z,请把这三个数由小到大输出。 1.程序分析:我们想办法把最小的数放到x上,先将x与y进行比较,如果x>y则将x与y的值进行交换, 然后再用x与z进行比较,如果x>z则将x与z的值进行交换,这样能使x最小。
  2. 企业发放的奖金根据利润提成。利润(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,求应发放奖金总数?

1、

x = raw_input()
y = raw_input()
z = raw_input()
if x > y :
	n = y
	y = x
	x = n
	if y > z :
		n = z
		z = y
		y = n
		if x > y :
			n = y
			y = x
			x = n
else :
	if y > z :
		n = z
		z = y
		y = n
print (x,y,z)

2、

I = input("请输入利润,单位万元")
print("奖金总数:")
if I < 10 :
	I = I * 0.1
	print(I)
elif I < 20 :
	I = (I -10 )*0.075 + 10*0.1
	print(I)
elif I < 40 :
	I = (I - 20)*0.05 + 10*0.1+10+0.075
	print(I)
elif I < 60 :
	I = (I - 40)*0.03 + 1 + 0.75 + 1
	print(I)
elif I < 100 :
	I = (I - 60)*0.015 + 1 +0.75 + 1 +0.6
	print(I)
else :
	I = (i - 100 )* 0.01 + 1+0.75+1+0.6+0.6
	print(I)

猜你喜欢

转载自my.oschina.net/u/4030294/blog/2892735
今日推荐