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

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