python 起手式:淺談 numbers

原本想說變數與型態得部分一天寫完就好,但昨天整理了一下發現原來python 的型態博大精深,有發現到另外自己以前在玩轉python沒有注意的細節。(說真的有時候寫python也很少會注意到這些細節,反正就是要寫什麼查什麼,出了錯自己debug…)

鐵人賽的好處就是為了要給別人看,所以你必須要好好整理、你寫的文章說的話都要是True,不可以隨便唬弄人,也藉著這個機會也是好好為自己學習的python做出整理。

放心,python的變數不會拖太久,我預計就特別在拉出來講numbers以及collections 就好,文字與boolean因為是蠻簡單的型態,上網查的時候也沒有發現什麼特別的點,所以就不繼續著墨這裏。
(20181007更:我發現用collections 稱呼非常不恰當,所以我決定直接以list、tuple和dictionary 稱呼並逐天深入了解介紹)

numbers 有三種

numbers就是我們現實生活中常用到的數字,舉凡整數、正整數、負數以及小數等等… 為了確保自己在numbers的理解沒有問題,我特別參考了官網對於numbers的教學:https://docs.python.org/3/tutorial/introduction.html#numbers

numbers 有三種
1.int
2.float
3.complex

簡單來說,python的numbers 就是可以加減乘除的,同時也支援我們現實的四則運算。

>>> 1+1
2
>>> 1+5*6
31
>>> (1+5)*6
36
>>> type(1+1)
<class 'int'>
>>> type(1+5*6)
<class 'int'>
>>> type((1+5)*6)
<class 'int'>

整數 int

這個型態最簡單了,就是1到9和0,現實世界中的正整數、負整數和0
要宣告負整數很簡單,像現實世界當中加個’-‘就好

>>> -1
-1
>>> type(-1)
<class 'int'>
>>> type(0)
<class 'int'>
>>> type(15)
<class 'int'>

小數/浮點數 float

float就是現實遇到的小數,只要你用’.’符號就可以囉

>>> 1.5
1.5
>>> type(1.5)
<class 'float'>

complex

這東西有點複雜,我自己也不是很能理解,由於工作的關係也鮮少使用到這個型態。意思是除了純數字及符號以外你還可以加入一些虛數,參考網址:http://www.runoob.com/python/python-numbers.html
這裏complex就定義為複數有實數和虛數構成。

>>> 5j
5j
>>> type(5j)
<class 'complex'>
>>> 6+5j
(6+5j)
>>> type(6+5j)
<class 'complex'>
>>> -3j
(-0-3j)
>>> type(-3j)
<class 'complex'>
>>> 3-3j
(3-3j)
>>> type(3-3j)
<class 'complex'>

python 起手式:來談談變數與型態

有許多人說,程式=資料結構+演算法,這句話確實沒有錯,前面我們說到演算法的部分、現在來談談“資料結構”的部分

一般來說我也不會特別去整理他,是因為今天要寫鐵人賽所以特別花時間整理一下。以免自己有漏掉或寫錯的部分(其實前面幾天也是邊查邊寫啦!不知道有沒有人也是這樣子?會不會很不專業哈哈,每支程式片段還是會花一段時間確認執行過程與執行結果。以免自己有說錯的地方)
我參考自:https://www.w3schools.com/python/python_variables.asp

前面談到程式語言的控制流程,也就是control flow,以及如果再control flow中出錯需要做的Error Handling. 我想我應該是少數幾位把control flow和exception 放在前面寫的作者吧XD 其實正常來說,綜觀程式教學書都先是變數與型態先教再說…

變數

變數其實就放放置的名稱… 恩…用一行程式說明比較快

a=6

說明:這裏的‘a’ 就是我說的變數啦!python的變數宣告很簡單,只要是文字就好(然後意外試過中文也可以喔…但非常不建議這樣做

變數=5
print(變數) #Output 是5

然後根據上面我提供的參考網址W3C 有提供很清楚明確的命名變數規則:

  • 變數必須以字母或者文字或者_作為開頭及組成變數名稱的元素而已,不可以用其他的例如數字為開頭(ex. 1a, 2b 這種都是不會通過的變數名稱)
  • 不可以使用python原本有的保留字或關鍵字 (ex. class之類)
  • 變數的名稱大小寫敏感(ex.CLASS雖然是保留字卻可以當變數、a 和A是不一樣的啊)

關於python保留字的部分不想上網查的話就直接用程式查一下吧(我也是剛剛才知道的呢XD)

import keyword
print(keyword.kwlist)
'''
['False', 'None', 'True', 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
'''

相較於php變數宣告要用’$’字開頭(自然就沒有保留字和大小寫敏感問題啦XD),這點應該php就勝過了吧?!

型態

變數的命名與組合最好是要有意義的,這樣日後在維護程式或撰寫程式會比較好。而變數總要有可以放的東西,而這些東西是什麼呢?有點像是現實的東西,舉凡文字、數字與列表等…
Tips:你可以使用type()函數來查詢這個東西的型態

  • 文字 String
    • 很簡單,你可以用”或者“”包住你要包的東西就是文字型態囉
  • 數字 numbers
    • 數字就是數字,就是1~9 和0還有小數都是。如果再細分的話可以分為幾種
  • 布林 boolean
    • 請記得,如果你要宣告對或錯的話第一個字請大寫,這型態很間單,就兩個:True 和False
  • list、turples、dictionary

我發現網路上各種查的資源都不盡相同,或許有可能有疏忽的地方,總之我決定在後面的鐵人賽一一說明(同時自己也好好理解一下)

python 起手式:Error Handling-以猜數字遊戲為例

python同樣與其他語言一樣,也有他的Error Handling, 什麼是Error Handling呢?程式有輸入也有輸出,還有控制的過程,但萬一在過程當中出錯了怎麼辦?就像郵局從寄信方收到信件、最後要經過處理、透過郵差送信給收信方,在這樣繁複的過程中,有可能會出現一些問題而導致收信方收不到信件。

對於程式本身,有哪些地方會出錯呢?這裡我以短短幾年工程師生涯所遇到的雷來談談~
程式本身沒有錯,錯的是撰寫程式的人XD(好悲催~) 好啦!這也就是我們工程師存在的價值啦!沒有人能夠一定保證程式永遠都不會出錯~ Garbage in Garbage out,使用者習慣與環境千千百百種,都會有可能有當初撰寫程式者沒有預期到的輸入,況且,在軟體工程界當中:「沒有不變的需求」,可能這一段時間他可以完全無誤地跑,但有可能以後時間長了或者增加了新需求後,就不能跑了…

還有啊,有時候也不見得是程式撰寫者及程式本身的錯誤,在寫程式的過程當中,有時會呼叫外部的函式庫或外部的API,這有時也不是你的錯,但就這麼剛好他回傳或者你送出的就不是你所期待的,那麼就會噴錯了。

為了解決當程式面對這些error可以仍持續地執行下去。你就一定要有error handling,以確保使用者不會“驚嚇”到

關於python的error handling 敘述如下

try:
    {statement area}
catch (error type),(value):
    {error handing}
else:
    { statement area continue...}
finally:
    {finally area}

說明:
在python界當中,縮排和’:’很重要!請務必注意!
而catch後面的 error type和value 不一定要加,你也可以單純的’catch:‘這樣一行帶過
至於error type你可以參考這個網址
else 則是當try所包的statement無誤的時候會執行的。
最後finally子句就是無論try或有沒有取得exception,都會執行的區域,php同樣也有類似finally的敘述。

以昨天寫的猜數字小遊戲為例子,可能出錯的就是input那一塊,因為input是由使用者輸入的,萬一使用者輸入的不是數字怎麼辦呢?同時,我們也加入可以計算你猜數字的次數需求。
所以會改成底下這個樣子:


import random
ans =  random.randint(0,10) #取從1到10的亂數
times = 0
print('請猜一個0~10的數字')
play = True

while(play):
    try:
        guess = int(input('來隨便猜一個數字吧: ')) #input出來預設為str,轉型為int
    except:
        print('程式出現非預期的錯誤,遊戲結束,答案是'+str(ans))
        #str()是將數字轉文字,'+'串接的必須是同樣的型態。
        play = False
    else:
        times = times+1 #每猜一次就要+1
        if (guess > ans):
            print('喔你猜得太大囉')
        elif (guess < ans):
            print('喔你猜得太小囉')
        else:
            print('恭喜你猜對了!')
            play = False
    finally:
        print('你猜了'+str(times)+'次') 

說真的,我寫程式也很少寫error handling,我也是邊查資料邊寫邊做的。如果有錯誤或者要補充的歡迎來指教及提醒。

參考網址

python 起手式:總是要有control flow!

昨天展示了超簡單input和output的小程式,如果程式只是in and out ,那麼有什麼好繼續學的呢?當然啦,garbage in ,garbage out,如果丟程式非預期的輸入,當然程式輸出就是各種error或垃圾啦!程式的厲害之處及關鍵就是在於他的演算法,演算法你可以理解為“做事情的方法”,做事情、總是會有一套流程與一連串的動作,而在這樣的流程與動作中,我們可以分類一些路徑,在這裡我們稱之為「control flow」(控制流)

control flow 分為兩個:條件和迴圈

python的註解方法

ㄧ開始,我應該要先介紹註解,哈 昨天就應該先寫的~
註解是一個程式撰寫上的說明,你可以使用它向下次要看你程式的人(或者也可能也是你自己)說明你這段要寫的內容、可能怎麼運用、或者提醒什麼注意事項。

//這是單行註解用法
'''
這是多行註解用法
'''

python的條件敘述

python的條件敘述表示如下(此為虛擬碼-一個不是正式程式碼的表示法)

if (boolean exp1):
    #statementsA...
elif (boolean exp2):
    #statementsB...
else:
    #statementsC...

說明:
在python 中,縮排是一件非常重要的事情,有點像是php的{} ,所以python就是一種強迫你排版的程式語言(誤!
exp 是運算式,在if 和elif 用括弧把它包起來,而exp將會輸出true 或false ,就是現實中的對還是錯,如上面虛擬碼所示,如果exp1 是對的就會走statementsA;exp2是對的就會走statementsB;兩個都錯的話就走statementsC,對了 如果只有一個條件的話只要寫if…else 就好,elif的區塊可以省略。還有,else 是代表前面的敘述式都沒有對的話,最後才走的流程。

關於條件敘述你可以參考這個維基資料
** 注意if、elif、else 後面要加上“:” **
** python 沒有switch…case的敘述喔,相關資料以及要實現的可以參考此網址**

python的迴圈敘述

1) for i in range(start,stop,step):
    #statements
2) while (exp):
    #statements

說明:
python的迴圈很簡單,就是for 和while敘述,然後如果只是單純的數字迴圈就用range(start,stop) 這樣i就會從start跌代到stop(不包含B)(沒有宣告step就預設為1),舉例來說range(1,5),i就會從1,2,3到4

如果,你想要從5迭代到1呢? 你可以用range(5,0,-1) ,這樣i就會 5,4,3,2,1

當然,“:”很重要、縮排也很重要!
注意,python沒有foreach喔,如果要foreach 可以把range替換成你要的array物件,這樣就可以使用了
相關資料請參考此網址

總結:寫個猜數字小遊戲

好了,就別只光說不練,來個簡單的猜數字小遊戲,希望你們可以更加理解條件和迴圈敘述,請在你所在的目錄增加一個“game.py”,然後請參考以下這段程式碼

import random
ans =  random.randint(0,10) #取從1到10的亂數
print('請猜一個0~10的數字')
play = True
while(play):
    guess = int(input('來隨便猜一個數字吧: ')) #input出來預設為str,轉型為int
    if (guess > ans):
        print('喔你猜得太大囉')
    elif (guess < ans):
        print('喔你猜得太小囉')
    else:
        print('恭喜你猜對了!')
        play = False

接下來執行“python3 game.py“就可以玩個簡單的猜數字遊戲囉!
這個簡單的猜數字小遊戲我就不說明了,如果還是有不懂或錯誤,歡迎留言指教喔!

python 起手式:寫個Hello World吧!

安裝python

工欲善其事,必先利其器! 要學習寫python,當然就是要先安裝python啦!

首先,你要先安裝python,這裡我就不贅述了,你首先要去https://www.python.org/
找到可以downloads 這裏找到你目前用的作業系統適合的安裝檔,下載後執行它,按照畫面的提示一一去安裝~這樣就可以囉!

然後請打開你任何一種的command line,無論是windows 的命令提示字元還是mac os 的terminal 或者zsh (我個人是使用zsh 啦),key 上

python3 --version 

接下來如果你看到有個python 的字樣後面接版本號,那就表示:我們可以開始寫python囉!

使用文字編輯器和python的IDLE

你可以選擇vs-code、或是subl 甚至是記事本也可以,來撰寫你的python程式。
我這裏通常用的都是vs-code, 而這裡,你也可以在command line 裡打上”python3″,進入Python的Shell,有點像是下圖:
https://i0.wp.com/ithelp.ithome.com.tw/upload/images/20181002/20106999MdQGwWAIj9.png?w=840&ssl=1

有點像是laravel 的artisan tinker 或者 php -a 或者ruby 的irb呢!
Tips:如何離開這個IDLE呢? 打上exit()就可以!

HelloWorld 程式

好了,我們可以開始寫python程式了,請再任意一個目錄之下,創造一個名為helloworld.py的檔案(python的執行副檔名基本上都是以py為結尾),然後放入

print('hello world')

然後,回到你放helloworld.py的目錄之下,使用

python3 helloworld.py

一下子,你就會看到這個’hello world’這個字樣了
https://i1.wp.com/ithelp.ithome.com.tw/upload/images/20181002/20106999EugkOXt2Nj.png?w=840&ssl=1

當然爾,你也可以使用python的Shell,那更為簡單,就是直接打下print(‘helloworld’)就可以直接看到hello world啦!

寫個問答小遊戲

如果只是一個hello world 真的還不是很夠味,所以就來寫個簡單的小問答,程式之所以叫做程式就是有input,也有output,所以,我們來寫個可以輸入些東西,然後也會輸出點東西的小程式

ans = input('what is your favorite programming language? ')
print('your favorite programming language is '+ ans)

說明:
Input 是一個小函數,他可以接受從command line輸入的任何文字,ans 這個變數接下input所收到的輸入,最後用print 把它印出來,在python中,文字串接就只要用’+’就可以了!
執行結果如下圖
https://i2.wp.com/ithelp.ithome.com.tw/upload/images/20181002/20106999IjmR49vPGr.png?w=840&ssl=1

python 第一天:廢話的前言

人生總會有第一次,人生第一次參加鐵人賽!不知道最後是否可以完賽哈哈

我是一個php方面的偏後端工程師,資歷大概也才短短的兩三年,在工作時偶爾也會碰到javascript、HTML和小小討厭的css,所以能夠和python有個連結,真的是純屬意外! 而目前很可惜在工作中也鮮少使用python,關於python的更深學習與體會都是日後自己在以前學生&下班業餘時間自學以及拿來玩樂的語言。

雖然現在有這麼多對手出來,尤其是“Go”,但不知道為什麼我還是對python情有獨鍾,甚至有時會想,到底可以將python練到怎麼樣的程度可以去應徵python相關職業呢?python 可以涵括網頁、爬蟲、機器學習與大數據,幾乎能包的都可以包,或許是這樣,我選擇python作為主題,當作一個正式學習的起點

當初遇到這個語言是因為,我那時候打了一個關鍵字「如何當駭客」,後來有文章指出當駭客有個前提就是要學會python!於是就邊玩邊做、邊學邊玩的馬馬虎虎學習這份程式語言。結果駭客沒當成,倒作了一位網頁工程師?!就是主要寫php,但“偶爾”也會被要求要看一下mysql、弄弄html\css\js的“假全端”工程師

工作後,在空閒之餘,發現有些工作的需求實在沒有必要常常重複在做,於是將有些簡單的小動作程式化,自行開始一個小小side project:office,這專案全部都適用python撰寫,可能有些在現在還可以用、有些可能工作沒用到也隨之廢棄了,但這確實帶給我對於python有著更深的認識與操作,也驚訝於它的強大

我是超新手,如果你是高高手的話而且也看到我文章的錯誤,請不用客氣,盡情地指出我的錯誤吧!
希望未來在python工作界,我們可以有機會相互切磋!

參加LaravelConf2017

前言

之前之所以知道這個conf 是因為有參加一些Laravel 的社群和團體而得知有這樣的大會…….我對此非常期待,在他開始的時候就馬上買了”熱血贊助票”來參與這樣的盛會之中。這是我人生中第一場參加的實體Conf ,如果之前硬要說有參加conf的經驗的話….那就是高雄前端大會的”直播票” XD  是個可以繼續宅在家裡的大會XDDD 覺得還是參加實體Conf 實際聽聽 與大大高手們交流品質會更好些……因為在家裡總會有些”惰性”嘛哈哈。在這裡我不會特別分享在大會的一些筆記以及學習,而是很單純的心得分享,如果你想看看筆記可以去看看大會提供的共筆(連結),或者等之後大會提供的影片……這裡我就不討論這些….而是談談第一次參加實體conf的感覺

另外這是自己寫的筆記

還有很大的成長空間

目前我有兩個專案,兩個專案都是使用native php 開發(淚~),其中一個還是累積了20幾年的前人(智慧?!) 所撰寫出來的網站,那時我接得時候其實覺得還好,但直到我碰過有人把CRUD 包裝成Function,還有Laravel 框架之後,再回來維護這個專案時…… 我! 已! 經! 不! 知! 道! 怎! 樣! 維! 護!

哈哈,於是趁著今年這個專案還很久之後才會啟動的時候,趕緊的將其重寫! 在經過公司主管同意之下,我們決定使用Laravel 做為開發…….而偷偷ps 一下,因為我所負責的這兩個專案,其實規模不大,也是公司的人力配置的政策之下,我是”單打獨鬥”的! 除了有設計師幫我設計美美的圖以外,其他前端、後端、測試皆是由我一手包辦……覺得難過XD

然而,我對於Laravel 其實就是上過Hahow的課以外,當成玩具在玩,完全沒有實戰過在正式專案上……在重寫這個專案的過程中,我就「邊學邊做」,遇到雷的話就除雷,看看google 看看stackoverflow 等等,我也沒和太多人交流,通常問題也在google 中就會解決,就按! 照! 自! 己! 意! 思! 寫!

參加的心得與收穫

參加完這次的conf,我覺得我超後悔沒有和這麼多人交流甚至是投入社群中, 原來,我只有引入”半套”的Laravel ,對於公司的貢獻,就是引入Laravel XDDDD  而且尷尬點是,我這個專案開發到現在已經快完成了,看來….只能靠後面重構再慢慢修正回來囉~~  錯過太多Laravel 提供的好東西,真是超級可惜!!! 同時,我也必須承認conf 的每一場內容我也不是每一場完全聽得懂……就像主辦人說過的,這個conf 只是一個起頭,後面仍是我們要繼續付出時間與代價去挖、去看、甚至是去寫…… 說真的我已經開始在摩拳擦掌了……..覺得很莫名的興奮感阿!!!!!!

希望未來的我能夠寫出越來越好的程式碼、成為一個夠強的工程師! 這是我對我自己的期許! 希望可以達成

感謝LaravelConf 2017全體工作人員,因為有你們才讓寫Laravel 的人不孤單、讓Laravel更加精采! 同時也提醒我,不要只是”閉門造車”,而是要參加不同的活動不同的交流,看看別人怎麼想,看看別人怎麼做 ! LaravelConf 是我第一個Conf ,我期待未來我也可以參加各種不同的Conf 擴展自己視野,如果可以,也希望自己可以強到能夠成為一名講者 (畢竟我也是許願要在TED 演講的人XDDDD)

期待明年能繼續有 LaravelConf 2018 ! 我相信到時的我對於Laravel會有更不同的想法、對於寫程式一定有更多的進步空間!!!

備註:共筆傳送門

實踐

做而言不如起而行, 我想我要有一些方案來實踐收獲這次的conf內容,未來的一年(可能也是數年?!),我也來學著寫寫看一些講者們說的東西

1.再度拿出Laravel 啟動與運行這本書,再好好的每一個章節每個內容好好看過甚至都操作一遍,尤其是後面的章節,以寫一個簡單的 blog網站為目標(計畫重新撰寫用laravel 做一個簡單的部落格網站這一篇文章,之前寫的太草率了),加入socket 、job/queue 和 storage 等等

2.使用Docker 佈署看看Laravel

小君曰: 買熱血贊助票有紀念章和T恤,感覺非常不錯呢!

新佈景-JimmyFDesigner

前言

從前幾年我就在自己撰寫自己的WordPress 的主題了。 之前是第一版的FangJRdesigner ,但我一直不滿意我這個第一版的設計,總覺不夠好看,後來就採用了官方主題。 但是,寫自己的佈景主題仍然是我的夢之一! 如今做成了,大家喜歡嗎?歡迎大家留言告訴我哪裡還可以改進的喔~你們的留言都會成為我下次改版的動力與改變

另外,我也為了這個新佈景主題的來到,我也將一些文章隱藏或者設私密、刪除了,希望能夠帶給大家比較好的閱讀體驗。將比較差的文章拿走,留下好的東西給大家:))

撰寫WordPress 佈景主題需要甚麼技巧呢

說真的,撰寫這個WordPress 的主題真的不難,我想我這麼弱的人都會了,你們一定也都會了! 首先,寫這樣的WordPress 佈景主題只需要有HTML 、CSS 以及PHP的技巧。 夠簡單吧?! 而且也不需要太高深的PHP能力! 因為很多WordPress 都幫你寫好在那裡的,你可以去參考WordPress-codeX,剩下的,就是要學會Google 問題和了解自己的需求~~ 同時,在寫的過程中,可以精進個人對於PHP (尤其Native PHP)的能力! 筆者我就是從這個過程當中練起來的呢! 非常鼓勵大家來寫自己的佈景主題,因為想加甚麼外掛就自己寫、想要長甚麼樣子就自己刻! 這才是Wordpress 的「終極奧義」阿!  擁有非常自由靈活的操作與內容管理!!

JimmyFDesigner?

說真的,原本我是想拿前一版FangJRDesigner 來改的說~ 不過後來引完bootstrap ,卡關了好一陣子~ 另外整個大改也讓我煞費心力~ 於是就決定廢棄原版的FangJRDesinger ,從JimmyFDesigner 出發啦!!!!! 在本次的主題當中,我特別加入最近很紅的bootstrap 框架ㄎㄎ,另外比起很久以前做的主題又多了比較多的後端功能,例如:歷史的這一天、相關文章等。為了響應公益,在404及沒有找到搜尋結果的頁面上加入失蹤人口的frame!!!  希望這些小朋友能早點被找到!!  等下我會介紹這些小功能的><

  • 歷史的這一天(只有在當天有寫過文章的時候才出現!!)
    • 全站
      在以前有歷史的文章,在導覽列旁邊會有個按鈕! 當點開就會出現歷史文章的畫面
      導覽列按鈕點開後頁面如下
      歷史的這一天頁面
    • 文章
      至於文章則會如此顯示
      歷史的這一天文章頁面
  • 相關文章
    參考Goole 來的相關文章函數,另外為了美觀下達了亂數,以標籤為特性產出文章的相關文章
    相關文章
  • 404 協尋兒童
    這真是一個很好的idea 以及響應公益的時候,鼓勵大家如果有個人網站的話一起來加入此專案!
    http://404page.missingkids.org.tw/
    404

特別值得拿來說嘴的……

另外,在這次的設計當中,我在一定程度上活用的bootstrap ,讓整個網站自適應化,在平板、手機上面,利用hidden css 的技術讓偏功能面的siderbar隱藏起來,我相信,在行動裝置上月讀這個網站,會有比較好的閱讀體驗,而不會有太多的雜訊。另外,我其實也蠻歡迎大家來列印我的文章,所以我使用了hidden-print 這個class,好讓列印之後,沒有那麼多東西,而是文章本身(這也大大提醒小弟我要好好寫文章啦~ 汗!)。 另外,小弟也偷偷使用了affix.js 這個東西,真的覺得很不錯用呢呵呵呵

總之,我是蠻滿意我這次的作品的!!!!!!! 呵呵

未來展望

1.學會SASS 來客製化管理Bootstrap

2.寫一個讓人上傳封面照片,可以換掉上面那個圖,提供客製化的選項,本人不太喜歡將這個封面圖片寫死了說…..
小弟找了很久solution 耶~  如果有大大會的話麻煩告訴小弟呀!

附上Github 連結。 歡迎大家下載或者修正

https://github.com/r567tw/JimmyFDesginer

小君曰:「終於寫完了這個佈景主題,希望可以繼續的加油囉!」