1. 程式人生 > >1.8 字典 1.9 字典練習 2.0/2.1 流程控制-if條件判斷

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)