發表文章

當一小時玩程式:「冰雪奇緣」遇到 Python Turtle Block

圖片
此篇文章說明筆者示範用【一小時玩程式:「冰雪奇緣」】與 Python Turtle 來學習 Python。 請先看一小時玩程式「冰雪奇緣」介紹影片,了解冰雪奇緣如何進行: 和安娜與艾莎一同玩程式 https://studio.code.org/s/frozen/stage/1/puzzle/1 Python Turtle 線上版本 https://trinket.io/turtle Python Turtle Block線上版本 https://trinket.io/blocks 第一關畫直線 https://studio.code.org/s/frozen/stage/1/puzzle/1 HOC Block Code: Python Block Code: HOC 與 Python 的積木有沒有很像呢? Javascript 語法: moveForward(100); Python 語法: import turtle turtle.forward(100) Javascript 與 Python 的語法有沒有很像呢? Python Turtle 結果: 從以上可以看出 Javascript 與 Python 語法有類似的地方。 筆者建議讀者可使用  https://trinket.io/turtle  來練習 Python 的語法,而當語法想不起來時, https://trinket.io/blocks  是可以用來輔助熟悉語法的。 第二關畫L型 HOC Block Code: Python Block Code: 第三、四關畫正方形 HOC Block Code: Python Block Code: 第五關畫三個正方形 HOC Block Code: Python Block Code: 第六關畫十個正方形 HOC Block Code: Python Block Code: 第七關畫十字 HOC Block Code: Python Block Code: 第八關畫五條交叉線 HOC Block Co...

資訊安全:惡作劇程式

圖片
此篇文章將使用C++程式寫些惱人的程式。測試環境為 Virtualbox 虛擬機 上的 Windows XP Pro版本,C++ IDE為 Code::Blocks 。 貪吃鬼(灌爆硬碟、吃光記憶體) 吃光記憶體C程式碼: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 #include <stdio.h> #include <stdlib.h> int main () { char * data; // the data long long int N = ( 1024 * 1024 * 1024 ); // Memory size data = ( char * ) malloc(N); // Generate Random value for ( int i =0 ;i < N;i ++ ){ data[i] = ( char ) rand(); } return 0 ; } 結果:還沒吃記憶體前,XP作業系統會刪掉此程式(當記憶體使用率 Mem Usage快暴時,下圖中的Hi.exe會突然不見)。 灌爆硬碟C程式碼: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #include <stdio.h> #include <stdlib.h> int main () { char * data; // data to be written int N = ( 1024*1024 ); // 10M for each flush data = ( char * ) malloc(N); // Generate Random value for ( int i =0 ;i < N;i ++ ){ data[i] = ( char ) rand(); } // T...

Python 串列(或陣列?)結構

圖片
注意:Python程式語言沒有內建的陣列型別(Arrays),請使用串列List。 因此,先來認識什麼是串列。 下圖為 Lists 的示意圖:     這是什麼意思呢?請繼續看下圖 以及下圖 Python字串範例程式碼: 1 2 3 4 5 6 7 8 9 10 11 12 13 CHI = "我會成為程式設計高手" ENG = "Programmer" cL = len (CHI) idx = 0 while (idx < cL): print ( "CHI[{0}] = {1}" . format(idx, CHI[idx]), end = " \t " ) print ( "ENG[{0}] = {1}" . format(idx, ENG[idx])) idx = idx + 1 # 程式碼中的 print 用法請參考底下網址: # https://docs.python.org/3/library/stdtypes.html#str.format Python字串範例程式碼輸出結果: 由以上結果,可以知道Python將字串當成字元 串列 (陣列)來對待。嚴格說,Python 3 似乎沒有字元的型別,因為從下圖就看得出來(本篇是用Python 3.8.0 Windows 64bit): 但Python串列內可以儲存的資料型別可不是只有字串喔!!!請看下圖: 請把串列先想成有很多格子的容器,每個格子都有自己的 編號 (又稱索引值),但此容器有個限制條件: 每一個格子只能放一樣東西 。所以上圖中,第 0 格放了什麼?第 3 格放了什麼?第 9 格放了什麼?OK,了解此概念後,來看一下 Python串列的語法: [expression, ... ] 。先這樣子解讀「把東西放在中括號[]內,用 , 逗號(是英文的逗號)來區隔每一個東西。」所以上圖就可以寫成: myTreasure = [ 'dog' , 'cat' , 'penguin' , 'sun...