小派拾貝目錄
歡迎來稿,簡短即可。
07
本期故事編寫:藍調百香果WAS等。
本期內容說明:問題來源於最近幾位學界大咖對中小學編程教育中要不要學或者是否要看重Python獨特的算法。或者是,基於最基礎的算法描述就可以了嗎?這些事,一線老師的咱們,也不太容易明白,但是編程的時候還真是遇見這些問題的。今天的學習就遇上了,分享給大家,就當技術小實驗,學不學、教不教不在本文討論之列的!
各位,咱們最近學Python,這東東真是迷一樣的存在!
各種神語法妙算法,我學得可帶勁了。可是我個人就不建議小朋友們學習哦~~哎呀,其實太簡單了,我都不樂意再深入了!
能能~你這「凡爾賽大餐」還是很香嘛!跟我這大強小朋友說一說吧~
大強,你們且學且珍惜,跟我慢慢試驗喔!
{'a':1,'b':2,'c':3}['b']
知道啥意思不?
知道得出什麼結果不?
大強!我們運行一下不就行了嘛!
結果是2啊?!
{'a':1,'b':2,'c':3}['c']結果就是3了——
大強!我知道了,這是字典的一種很Python的訪問方式。通用的算法該是這樣:
dic= {'a':1,'b':2,'c':3}
print(dic['a'])
你只是省了一個字典變量嘛,就牛大了,咱也懂了懂了!
那再來啊!
下面這個估計聰明的小麗、誠實的大強、老練的小明、學霸的王寧、優秀的張霞... ...誰也不會懂的!
from operator import *
def c(a, b, k):
return {
'+': add,
'-': sub,
'*': mul,
'/': truediv,
'**': pow
}[k](a, b)
print(c(20, 40, '+'))
print(c(40, 2, '/'))
print(c(2, 3, '**'))
能能,你也真會「拉採」了!
我這就召集大家,一塊研究研究。
哇!試驗發現,原來是個小小計算器呢!我們再來搜索、研究一下。
operator模塊是python中內置的操作符函數接口,它定義了一些算術和比較內置操作的函數,功能好強大的。operator模塊是用c實現的,所以執行速度比python代碼快。
add(x,y)就是做加法。
pow(a,b)就是求a的b次方!
這些單詞不能自己隨意寫,是模塊裡規定好的。
自定義函數c就是返回一個自定義的運算的結果。
運算功能是[k]產生的。
[k]是從字典裡找的一個運算函數名,add或者sub或者.
然後,就可以運算(a,)啦!
c自定義函數的k值最巧妙,可以把運算符號當成key,代表的不同運行命令當成value(值)。
可見呢,Pyhton的特點也有他的優點呢,很容易設計,不然得在裡面加好多if elif呢!
if k=="*":
r=add(a,b)
elif k=="/":
r=sub(a,b)
...
else:
return none
大家說的都很有道理呢!
也許有的人認為if else比字典的機巧更容易懂呢~~
不同的人喜歡吃不同的花樣美食吧,食材差不多,做的怎樣吃,消化後變成的成分差不多,各有各的特點嘛!
其實,這個程序最基礎的算法內涵差不多,都是:根據不同的運算符號來進行運算功能的選擇使用的,語法方式和效率不一樣吧?
既然Python這麼優秀,它的長處我們也不能視而不見的啊!