contact = {}
contact_list = []
while 1:
contact['name'] = raw_input("please input name: ")
contact['phone'] = raw_input("please input phone number: ")
contact_list.append(contact.copy())
go_on = raw_input("continue?\n")
if go_on == "yes":
pass
elif go_on == "no":
break
else:
print "you didn't say no\n"
i = 1
for contact in contact_list:
print "%d: name=%s" % (i, contact['name'])
print "%d: phone=%s" % (i, contact['phone'])
i = i + 1
首先是回憶一下字符串
字符串既能夠用""也能夠用''。然后是很有特色的%操作,起到格式化字符串的作用,前面僅僅在字符串中有一個%s,現(xiàn)在有%d和%s兩個,分別代表插入十進制數(shù)值和字符串于%x標記的位置處。
然后是列表
列表是順序的序列,用append在后面附加,也能構(gòu)用索引值索引。所以我們完全可以用一個變量保存len(contact_list)得到的長度,然后一個個的遍歷,不過這里展示了另外一種非常方便的方法。而且值得注意的是append()中的參數(shù),我使用了contact.copy(),你可以嘗試著把copy()給去掉,觀察結(jié)果你就知道了所謂的append是怎么干的了,特別是你對指針之類的東西很有感覺的話(但是在Python中是沒有指針這個概念的)
再來看看字典
字典是鍵(key)和值(value)的對應(yīng)組合成的無序的序列。所以你存的時候要指明鍵(name或者phone),而且取的時候也是一樣的。
接下來是判斷
if是很好用的,==表示判斷兩個是否相等,=表示把右邊的賦給左邊的。而且可以直接判斷字符串是否相等,這個太方便了,如果你曾經(jīng)用過strcpy()的話,就知道了。elif是表示else if的意思,如果if不滿足就判斷elif的條件是否滿足,最后是到else中去。
循環(huán)是個主體
while和for都是循環(huán)。不過這里while就沒什么說的了,又是很經(jīng)典的while 1,死循環(huán),然后必須在里面用break來跳出。for和C中的for是不一樣的,for in才是一個完整的語句,指的是從一個能夠逐一取值的序列中(比如list),一個一個的取出值賦給for后面指定的變量中,直到取空,循環(huán)結(jié)束。其實回想一般用C中的for的經(jīng)歷,也大體如此。而且你還可以用for i in range(1,100)來指定一個范圍從多少到多少??梢哉ffor in充分體現(xiàn)了python的體貼周到,用起來很直觀,不會繞彎。
接下來就是運行了,大家慢慢調(diào)試吧。下次可能是講異常處理,因為我覺得在深入到使用各種高級的要素之前,先要學會怎么去處理異常。最常見的異常應(yīng)該是input(),然后你給出的輸入是一個無法轉(zhuǎn)換為數(shù)字的字符串了,那么我們就要來處理它。