菜鳥(niǎo) or 老司機(jī)?寫段代碼看看吧
有的小伙伴可能用Python寫代碼已經(jīng)非常久了,可能覺(jué)得已經(jīng)是個(gè)高手了,那么看看下面這個(gè)簡(jiǎn)單的實(shí)現(xiàn)需求,你會(huì)寫怎樣的Python代碼呢?通過(guò)你寫的代碼,應(yīng)該可以大約評(píng)估下你到底是菜鳥(niǎo)還是一個(gè)老司機(jī)了,試試吧,如果是菜鳥(niǎo),就繼續(xù)修煉吧。

1、問(wèn)題說(shuō)明
為簡(jiǎn)單起見(jiàn),我們使用Python語(yǔ)言,寫一個(gè)簡(jiǎn)單的子程序,這個(gè)子程序僅接收一個(gè)輸入?yún)?shù),當(dāng)輸入?yún)?shù)為數(shù)字1、2、3、4、5時(shí),打印出其對(duì)應(yīng)的英文單詞即one、two、three、four、five等單詞,當(dāng)輸入為其它值時(shí),打印出提示信息:“input error!”。
這應(yīng)該是個(gè)非常簡(jiǎn)單的問(wèn)題,看看下面兩段代碼吧。
2、代碼段1
先看下第一部分代碼,這應(yīng)該是大部分小伙伴在第一時(shí)間想到的代碼吧:
- def myPrint1(val):
- if val == 1:
- print('one')
- elif val == 2:
- print('two')
- elif val == 3:
- print('three')
- elif val == 4:
- print('four')
- elif val == 5:
- print('five')
- else:
- print('input error!')
- myPrint1(5)
3、代碼段2
再看下另一段代碼:
- def myPrint2(val):
- d = {
- 1: 'one',
- 2: 'two',
- 3: 'three',
- 4: 'four',
- 5: 'five',
- }
- if val in d:
- print(d[val])
- else:
- print('input error!')
- myPrint2(5)
4、菜鳥(niǎo) or 老司機(jī)?
這兩段Python代碼針對(duì)題目要求都能得到正確的結(jié)果,但大家有沒(méi)有發(fā)現(xiàn)他們的區(qū)別之處?看出菜鳥(niǎo)與老司機(jī)的區(qū)別了么?
可能大部分人寫的都是第1段代碼的形式。
很明顯,相比于第1段代碼,第2段用字典結(jié)構(gòu)代替了多重的if-elif-else結(jié)構(gòu),將多種選擇情況放在了數(shù)據(jù)表里面,做到了數(shù)據(jù)與邏輯代碼的完全分離,要更簡(jiǎn)潔明了,并且在擴(kuò)充性方面要好的多。
如果你能自然而然地在第一時(shí)間就寫出了第2段代碼,那么恭喜你,你基本上已經(jīng)脫離了新手的范疇而進(jìn)入了老司機(jī)的圈子了。
新手到老司機(jī)僅有一步之遙,努力吧。。。。。