
外出訪友,喬遷之喜。位於城市一角,附近多是老舊住家。
驚喜發現一間傳統雜貨店,滿滿商品堆滿屋,看來,在大資本不及之處,仍有小商店生存的縫隙啊!
開心買到許多,好久不見的老飲料!
哈囉,你們,都還好嗎?我要喝你們了哦!😄😄
Posted using Partiko Android
This page is synchronized from the post: ‘哈囉,你們好嗎?’

外出訪友,喬遷之喜。位於城市一角,附近多是老舊住家。
驚喜發現一間傳統雜貨店,滿滿商品堆滿屋,看來,在大資本不及之處,仍有小商店生存的縫隙啊!
開心買到許多,好久不見的老飲料!
哈囉,你們,都還好嗎?我要喝你們了哦!😄😄
Posted using Partiko Android
This page is synchronized from the post: ‘哈囉,你們好嗎?’
呵呵,昨天跟大家分享的如果有這樣一個地方….,今天公布答案就是:
益品書店是戴董於2016年在台北仁愛路創辦,復於2017年在台中市開了第二間。定位為不賣書的書店,推廣終身閱讀,店內書都是精裝書,且都不封膜,目前以:飲食、生活、旅遊、美學與童趣等五大類書籍為範圍,提供民眾非常舒適的環境來閱讀。據說,每天下午2點半到4點,還有….
小提琴現場演奏!!
其他的福利,我在上一篇裡面都說過,這裡引述一下:
店內空間十分寬敞,裝潢設計水準,有星級飯店的等級,不只有氣質,也帶著一點悠閒感。木製桌椅與櫥櫃,大片落地窗窗外即是一個充滿綠意的小公園,客人三三兩兩坐在舒適的座位上,空調舒適,空中播放著輕音樂,一不小心,如果你太疲累,就會在這裡進入夢鄉,因為太過舒服…
令人驚喜的是,如果你還記得它的收費,這裡有個吧台,無限量供應咖啡、四種茶飲與冬瓜口味冰沙,太酷了吧?太大方了吧?老闆是佛心來的?然後,洗手間非常乾淨,也是飯店等級,還有你從來不會在任何這類店裡看過的….免治馬桶(CPP)!
收費是….. 新台幣$100元,相當人民幣$22.4,美元$3.2!
你可以待上一整天,還可以出去辦事再回來,我是不建議,但要是你渴的話,真的可以喝上好多杯飲料啊!>_<~~~~ 在這炎熱的夏天,光是吹冷氣就回本了吧!
但是,既然我在這裡跟大家推薦,也請大家要是有機會來,千萬不要抱著佔便宜的心態使用它喔!畢竟,這是人家的善念,以推廣閱讀為目的,雖然說戴董號稱他準備了3億台幣,可以賠上20年,但我們可不希望這20年就收場對吧!希望能世世代代開下去~~
一起跟著我來看看吧!^_^
大片落地窗,看似五星級飯店….
入內就有一種寧靜舒適的感覺~~
門口一個非常可愛的以書籍為主題的藝術品!
非常高雅的裝潢…
有一本留言本,寫滿訪客們的感謝之詞….
傳說中的免費暢飲飲料吧!
首先,美式咖啡…
其次,四種茶飲類….
冬瓜冰沙!夏日好朋友~~
真的超好吃的喔!感動!免費的還這麼有品質!
大木桌很舒服….
書…..
書…..書…..
書…..書…..書…..
小朋友的書!!
就是憑這一張發票,當日歡迎再次光臨…..
好話說盡,不如親臨。下次到台北或是台中,不妨親自走一趟益品書屋,感受一下,這間高質感低收費的美好書屋吧!
This page is synchronized from the post: ‘佛心來的~~益品書屋,就是這樣一個地方….’
[DA series - Learn Python with Steem] 是DA(@deanliu & @antonsteemit)關於「從Python程式語言實做Steem區塊鏈的入門」的系列,歡迎趕緊入列學習!
前情提要:[DA series - Learn Python with Steem #05] 基本資料結構

第#06堂課,今天我們來學習Python的~~函式 !
前面我們介紹完了Python基本的變數、迴圈、資料結構以及if - else判斷等等,其實結合起來已經可以做很多很多事情囉。今天我們要提的一個新概念就是Function,這算是寫程式必備的元素,雖然聽起來很Fancy但其實一點都不,它的功能是可以大大簡化我們的程式,增加易讀性。
何謂Function?在一個程式的運作過程中,我們可以把Function看做成一個「讓我們人生變簡單的東西」。例如我們之前教過的print()就是一個基本的Function,只要在print()裡面輸入想要顯示的變數等等,就可以輕鬆的把這個東西印在螢幕上。但大家仔細想想會覺得神奇,print()裡面究竟是什麼神奇的魔法,可以把東西以正確格式顯示出來到螢幕上呢?答案是,我不知道,我也不需要知道。這就是一個Function,每當我們要印出一段字的時候,我們不用寫一大段複雜的程式碼來執行,只要透過包好的這個function,輕輕鬆鬆打一個print()就完成了。
為什麼需要這樣的東西呢?設想,如果每一段print()函式的原始程式碼有100行,難道我們每次要輸出東西時都要重複打這100行嗎?這樣我們如果要輸出十筆資料就需要1000行了。所以寫程式的人喜歡把這些常用的東西寫成function,像python為了我們的方便就幫我們設計了print(),而我們在自己的程式中,也可以設計將自己常常重複使用的東西寫成function。這樣我們就可以在自己的程式中不斷重複利用。
以下是一個簡單的小例子:我們想要設計一個程式,顯示出一個人的基本資料。我們可以自己定義這樣一個簡單的Function,接這就可以不斷的重複利用:(今天的範例程式碼可以至tutorial_6.py中參考喔!)

可以看到第一行開始def (definition,定義的意思)的地方開始,就是我們定義function的地方。當我們要定義function的時候,我們首先要想好這個function的輸入是什麼,也就是這個function的參數(parameters)。在這個例子中,我們的參數就是名字、年齡以及國家 (接在我們function名字後面括號裡的(name, age, country)),這些是會改變我們Function產出的東西。
接著我們的function就可以拿這些輸入值來做他想做的事情。最後如果有需要,還要讓function回傳一個或多個值。在我們這個case裡,只有基本的列印功能,最後也沒有要回傳,因此這樣就可以拿來使用了。
可以看到我們後面的程式中,就只要用三行呼叫我們定義的Function名字,就可以執行裡面的動作。我們呼叫自己的function時,也要放入(name, age, country)相應的變數作為Function的參數,他們才能順利運作:如: print_basic_info('Anton', 22, 'no where')
執行結果:
1 | My name is Anton |
可以看到,Function的魅力在於他可以讓程式碼看起來更簡潔。在主要執行的程式裡,我們透過Function name (print_basic_info())來讓人一看就知道我們這一步是要做什麼。當然print_basic_info這種函式可能大家看了還是不知道你要print什麼,但如果是其他函式如:計算BMI、計算最大公因數等等、讀者能夠比較輕易透過function name知道你想要幹什麼。假如我們沒有使用function把這些部份分離出來的話,不但像之前說的一樣,每遇到一次要重新打一次,而且還會讓整個程式碼看起來亂糟糟的,因為大家都不知道現在發生什麼事了。
在程式設計裡,有一個重要的概念就是「模組化」。基本概念就是,我們要將我們常使用的不同功能設計成分開的「模組」,再由這些小元件(小function)組成各式各樣的大function,最終組成我們的程式碼。我們用之前做過得BMI例子,再透過「function」的概念重組一遍給大家看:

這段程式之中,我們先透過input取得我們想要的資訊並轉換成float (浮點數,有小數點的數字)後,就丟到我們先寫好的calculate_BMI()這個function裡面計算bmi。這個function就是我們說有回傳值的function,可以看到最後面有一個return,是一個python的保留字,表示function到此結束,並且把bmi這個變數回傳到呼叫這個function的地方。因此在我們主要程式碼的地方可以寫成
1 | bmi = calculate_BMI(user_height, user_weight) |
就像我們說 x = 1, my_name = 'anton'一樣,我們現在可以把右邊function算出來並回傳回來的值賦予給bmi。這就是function有回傳值的用處。而我們的最後一個function: print_warnings就跟最前面的例子一樣,只是要依照bmi不同,列印出不同的訊息,並不需要回傳值,因此在call最後一個function時不用寫什麼東西= 這個function,而是直接呼叫就可以了。
執行結果:
1 | Please enter your height: 1.78 |
當然這樣子的設計只是我開心而已啦!有些人不喜歡在function裡面列印任何東西,也可以把最後一個function設計成回傳message,而在外圍主程式部份設計成
1 | warning_message = get_warning_message(bmi) |
這樣的架構。不過這些就是個人習慣了,大家可以看看哪樣看起來比較順暢xD。今天介紹Function也就到此先告一段落了。簡單的說,在自己的程式中設計function,可以很好的增加自己程式易讀性,重複利用寫過得code,否則你寫的艱難,別人讀的也艱難呀!
今天我們來練習寫個簡單的function吧!來設計一個叫做my_average()的Function,輸入值為一個list,而輸出則為這個list扣除最大值與最小值之後,剩餘數的平均值。範例輸出輸入:
1 | my_list = [1,8,3,6,2,345,-23,7] |
我們下篇文章再見囉~下課!

image - pixabay
This page is synchronized from the post: ‘[DA series - Learn Python with Steem #06] 函式’

如果,有這樣一個地方 …
首先,是一間店,人人都可以上門,就跟很多店一樣。不用加入會員,只是上門時要付費,有點像是遊樂園一樣的收費邏輯。
收費呢,非常合理親民,進入時只收取一次費用,費用大概是平常一頓飯的價錢,人人都負擔得起,看得出來,開店的人,一點也不想從這裡賺錢。
更好的事是,同一天,只需要收取一次費用,你可以自由進出,再次來時,只要憑當日付費的發票即可進入(狡詐的我不禁想到,發票不記名啊!)。噢,對了,還沒說,學齡前兒童,不,收,費。
問題是,這間店,進去幹嘛呢?嗯,容我暫時保密,否則你就知道了。噢,對!我說的是真的!真有這麼一家店,就在台北喔,不是“如果”的。但我可以再說一下,它的一些特點…
它位於台北市的精華地段,租金肯定不低。店內空間十分寬敞,裝潢設計水準,有星級飯店的等級,不只有氣質,也帶著一點悠閒感。木製桌椅與櫥櫃,大片落地窗窗外即是一個充滿綠意的小公園,客人三三兩兩坐在舒適的座位上,空調舒適,空中播放著輕音樂,一不小心,如果你太疲累,就會在這裡進入夢鄉,因為太過舒服…
令人驚喜的是,如果你還記得它的收費,這裡有個吧台,無限量供應咖啡、茶飲與一種口味的冰沙,太酷了吧?太大方了吧?老闆是佛心來的?然後,洗手間非常乾淨,也是飯店等級,還有你從來不會在任何這類店裡看過的….免治馬桶(CPP)!
我跟老婆上週,終於去了這個傳說中的店,因此感到震撼與驚喜,對於我們所在的城市,有這樣的老闆,願意開這樣的店,而感到無比的感恩與驕傲,感恩老闆,驕傲於城市的氣質…
同時也擔心起,這樣的美好,不知能維持到何時?或許,曾經存在,就足夠驕傲了吧?呵呵….
這到底是什麼樣的一間店?呵呵,讓我下回分曉…..
image - pixabay
This page is synchronized from the post: ‘如果有這樣一個地方…. ‘
[DA series - Learn Python with Steem] 是DA(@deanliu & @antonsteemit)關於「從Python程式語言實做Steem區塊鏈的入門」的系列,歡迎趕緊入列學習!
前情提要:[DA series - Learn Python with Steem #04] 迴圈

第#05堂課,今天我們來學習Python的~~基本資料結構 !
介紹完了一些基本運算之後,我們還差一點點基本觀念就可以進入比較有「寫程式」感覺的地方了。我們這章節要教的是資料結構,也就是一些有效率儲存自己資料的方式。例如上一章的最後面我們介紹到的List(傳統稱為Array,陣列),就是一個可以想像成清單的資料結構,讓我們把東西一樣一樣的放到裡面。
在我自己的經驗裡面,最基本也最實用的資料結構就是List以及Dictionary,基本上有了這兩種資料結構之後就可以很有效的解決大部分的問題了。所以我們今天就針對這兩種最基本的資料結構來做介紹。
首先我們來說說List。
List這種資料結構應該就是你想像得到最直觀的「清單」。首先我們可以宣告一個List,之後就可以慢慢的取用裡面所紀錄的變數(或是其他資料結構)。程式碼可以參考tutorial_5_list.py

這裡我們用一個List:my_todo_list來紀錄了三個字串,分別是今天待辦的三項事物。而 count_todo 就是my_todo_list的長度:len(my_todo_list),也就是待辦事項數量。
接著透過一個For迴圈依照順序列印出裡面的內容。執行結果:
1 | I have 3 tasks on my todo list today! They are: |
List有一些非常好用的method可以使用,其中最好用的就是 .append()跟 .remove()兩個。append就是加上去的意思,會把一個新的元素加到原本List的最後面。例如剛剛的my_todo_list,可以如下加入新的元素:

首先我們先看看現在my_todo_list裡面有什麼東西,接著就把兩樣新的代辦事項加入本張清單。最後我們可以再次印出目前清單裡的任務數量。執行結果如下:
1 | ['Homework', 'Write on Steem', 'Get a haircut'] |
原本只有三個東西的list,經過我們的兩次append之後就變成五樣待辦事項了。而相反的,當我們想要移除一樣東西時,我們可以使用.remove():

執行結果:
1 | ['Homework', 'Write on Steem', 'Get a haircut', 'Watch a movie', 'Sleep'] |
更多可以使用List的操作可以參考這份官方文件。使用方法大多大同小異,就是在你的list後面加上.method名稱(參數)。
另外還有一個十分重要,如何access List裡面物件的方法就是使用它的index,也就是編號。在程式語言裡面,通常第一個元素的index都是0,然後慢慢累加。所以在上面這個長度只剩下三的my_todo_list裡面,我們可以分別使用my_todo_list[0], my_todo_list[1], my_todo_list[2]來取用這三個字串:
例如
1 | print(my_todo_list[1]) |
就會印出從頭數來第二個元素,也就是Watch a movie。
接著我們來介紹另外一個實用的資料結構,就是Dictionary。在剛剛介紹的List裡面,我們只能依照順序來存取裡面的檔案,或是只有在我們知道我們要的物件在「List的第幾個」時,才可以直接用index選用。
不過,在Dictionary裡面我們可以一次存進一個Key - Value pair,也就是一個key對應一個值,每次查詢的時候只要我們知道key就可以找到相對應的值。Dictionary在一個在生活中感覺比較容易想像的資料結構,就好像我們在查字典的時候,輸入Apple就會出現蘋果的相關介紹、輸入Zoo就會出現動物園的介紹,我們不需要知道Apple是字典裡的第幾個字、也不需要遍歷字典裡面所有的元素來找到他。
我們下面使用一個簡單的電話簿例子來操作。(範例程式位於tutorial_5_dictionary.py)。Dictionary的宣告是使用{ }符號,裡面則放滿了 key : value這樣的結構。要讀取資料時也跟List類似,是使用[]裡面放上你用來搜尋的key:

1 | 0906882331 |
這裡我們先在裡面存了兩筆紀錄,分別是我的與Alice的電話號碼。可以發現後面我們在取用前兩筆資料時都十分順利,直到第三比Bob的資料時,由於他並不在Dictionary裡面,所以程式就顯示了KeyError。
至於要怎麼增加新的key-pair到字典裡面呢?可以使用以下幾種方法:
一種是直接使用類似Assign值的方式,以後my_phone_book裡面的 Bob值就等於後面那串數字。另一種方法算是比較正規,是使用Dictionary裡面的.update() method來做更新。使用update的好處是可以一次增加好幾筆,其實也就是字面上「以後面傳入的字典幫忙這個字典更新」的意思,如:
1 | my_phone_book.update({'Joey':'4738273643', 'Rachel':'8372381298', 'Monica':'8327192039'}) |
上面的例子就是一次加入了一大堆新的資料到原本的my_phone_book裡面。
如果有一天,你想要列出所有的人還有電話,也可以使用一個for迴圈來遍歷整個字典。但是寫法有一點小小的不同,要使用dictionary.items()來當作被遞迴的主體,才能同時看到key跟value。

執行結果:
1 | Joey : 4738273643 |
其中還有其他有用的method。例如可以列出所有的key的.keys():
1 | print(my_phone_book.keys()) |
結果:
1 | ['Bob', 'Alice', 'Monica', 'Rachel', 'myself', 'Joey'] |
更多的method或細節依然可以參考比較完整的官方文件,我個人是覺得這些就滿夠用的啦!
今天我們學了兩大資料結構,就來練習一下他們與迴圈的結合吧:
題目:使用一個python程式,製造出一個dictionary和一個list:dictionary的key是1~10的整數,value分別是他們的平方。而list則是紀錄了1~10的三次方 ([1, 8, 27,…,1000])。最後分別列印出這個list和dictionary。
參考解答: tutorial_5_exercise.py
我們下篇文章再見囉~下課!

image - pixabay
This page is synchronized from the post: ‘[DA series - Learn Python with Steem #05] 基本資料結構’
D&TT ( #deantt) 是我的育兒系列,也許談養兒,談育兒,談當年生兒,談媽媽懷孕時,談家庭形成,談生命意義,談我兒TT的好笑,可愛,可憎,或記錄他的生活,我們的生活,三個人的,兩兩的…. Anything about TT。

昨天寫了暫停鍵之後,心中浮現了另一個隱喻,感到也很貼切,所以,今天改寫「快轉鍵」。
對,父母的人生是按下了暫停鍵,但,在我們眼裡,TT的成長,卻時時像是按下了「快轉鍵」一樣,怎麼一眨眼,那個襁褓中的那一個小嬰兒,怎麼就是即將上小學的小大人啦?
從出生到五六歲,這段不算長不算短的日子裡,是一個生命逐漸與這世界連結,然後發展出自我姿態的精彩時光:從連顏色都分不清楚,到能夠清楚說出各種顏色的英文;從喝那千篇一律的奶,到每天吃掉比我還多飯量的飯菜,還能對於各種甜食飲料不斷需索;從只會哭只會咿咿呀,到現在口齒伶俐到有時你都說不過他那準確無誤的邏輯;從3千多克可以隨意在手中玩弄報耍,到現在超過20公斤,真要你抱他走大概也走不遠就氣喘吁吁了;從只會爬跟吃手指,到現在能夠組合出令你驚訝的積木世界….
這,….,這,到底是怎麼發生的?一切一切,都快到令我記不住他昨日的樣子。
每天每天又新的事要操心要煩惱,沒有時間能夠一一記錄他所有的言語與影像,尤其是在四五歲後,樣子變化幅度比較小(也就是說比較成熟了),就開始不會特別留心要去記錄些什麼。而已經記錄在案的許多照片跟錄影,多半都在某硬碟深處或是雲端的哪裡,通常也沒太多時間去挖出來看。偶爾,就是臉書會在某些照片週年時刻,讓你有些驚喜,但這也只限於你有放到臉書上去的那一些些而已….
今天的他,是昨天的他變化一點點來的;昨天的他,是前天的他變化一點點來的… 如此這般下去,大概可以表示為一個積分的式子:今日TT = 對時間從出生至今積分 (出生的TT)。然後,這函數的前面,變化很快,過三個月,你就記不得他三個月前準確的樣子,有點像是去年下半到今年初的比特幣走勢一樣,是hyperbolic的。你才習慣了$3000的比特幣,怎麼一晃眼,就是$8000的,再一晃,竟然要兩萬了…. 哈哈,這比喻不錯吧~~
前一陣子,我就一直在想,TT剛會說話時,是怎麼說話的?我卻怎樣都想不起來,也還沒時間去找出影片來看。但不就是我眼前這個小人不久前的樣子嗎?老想不起來…. 不覺驚嘆,怎麼我才低頭換片尿布,轉身泡一壺奶,起身去拿過敏藥,進房去準備他睡覺,埋頭寫幼兒園聯絡簿,….,再一抬頭,這孩子已經亭亭玉立站我眼前,恍神之間,似乎他就馬上要長大成年,開口跟我說他要結婚了….
這情感的強度,讓我腦中浮現許多歌詞詩句片段,不過,多半都是描寫男女之情的。奇怪的是,用來描寫這親子之間的情感,卻又十分合適的感覺。或許,我可以好好考慮,來開闢一個全新的文學領域啊,呵呵呵~~
例如,蔡琴的【讀你】
讀你千遍也不厭倦 讀你的感覺像三月
浪漫的季節 醉人的詩篇 唔…….
讀你千遍也不厭倦 讀你的感覺像春天
喜悅的經典 美麗的句點 唔…….
你的眉目之間鎖著我的愛憐
你的唇齒之間留著我的誓言
你的一切移動左右我的視線
你是我的詩篇
讀你千遍也不厭倦
讀你千遍也不厭倦
讀你
對,就像一切美好的東西一樣,時間總是過得太快,結束,總是來得太早…..
#deantt
This page is synchronized from the post: ‘[D&TT] 快轉鍵’
Update your browser to view this website correctly. Update my browser now