發表文章

目前顯示的是 10月, 2017的文章

哈佛大學計算機通識課程:CS50

圖片
還記得我在第二篇文章內有提到一篇程式自學的文章, 給了我一些啟發,所以擬定了自學程式語言的計畫。 在該篇文章的結尾處, 介紹了一門課程:CS50 傳送門在此 根據文章介紹, CS50可以直接上edx去申請。 edx網址: https://courses.edx.org/ 課程名稱可以搜尋: Introduction to Computer Science 或是CS50 就可以找到了。 在edx上修課的話,可以選擇領取修課證書, 這是要付費的,今年(2017)好像要90美金, 不過修課完畢之後可以把證書連結到LinkedIn, 是不知道這樣履歷看起來有沒有比較厲害就是了XD 如果只是單純想要學習課程內容, 對證書沒有渴求的話, 選擇免費的旁聽也是可以完整修課, 就看各自的需要。 CS50原則上全英文授課, 影片有開放英文字幕。 擔心英文程度跟不上原文教學的話(我就很擔心這一點,老師授課說話速度超快的), 我提供兩個建議方案: 1. edx + youtube + Lidemy 鋰學院 算是比較原汁原味的組合技。 edx的課程頁面長這樣: 左邊是課程影片,右邊是逐字稿。 比較認真的上課方式是採用英文聽力 + 英文字幕, 看不懂的地方就從旁邊的逐字稿丟google翻譯去查詢。 如果不想這麼累,那其實這隻影片既然有打上youtube的標誌, 就表示影片也有放到youtube上, 我們可以直接點選youtube標誌開個新頁面, 連結到youtube上面的同一支影片去觀看。 youtube有自動翻譯字幕的功能, 應該不需要特別說明如何使用了吧? 雖然自動翻譯不一定那麼流暢, 但還是可以看懂就是了。 除了透過字幕了解課程內容之外, Lidemy 鋰學院 是啟發我程式自學的那篇文章的作者, 因為自己的興趣所以開設的線上課程網站, 他為了要推廣CS50, 所以做了一系列的「CS50重點整理及導讀」, 搭配edx應該會讓大家可以更容易了解CS50到底在上些什麼。 不知道是否CS50今年沒有開課, 今年的edx課程沿用去年的2016年

零基礎入門學習python_009筆記及作業_分支與循環_猜數字小遊戲V3.2

作業1:設計一個驗證使用者密碼程式,使用者只有三次機會輸入錯誤,不過如果使用者輸入的內容中包含”*”則不計算在內。 ===========================以下為第一次程式碼=========================== temp = input('請設定您的密碼:') count = 3 while True:     password = input('請輸入您的密碼:')     if count == 0:         print('錯誤太多次,程式結束')         break     elif password == temp:         print('密碼驗證成功!')         break     else:         if '*' in password:             print('輸入錯誤!')         else:             count = count -1             print('輸入錯誤,還剩',count,'次!') ======================================================================= 因為count = count -1放在第三段判斷式內, 所以會造成在count = 3的時候就先運作判斷式, 直到都不符合判斷式時才計算count -1,變成: 第一輪迴圈: count = 3   ->   輸入密碼   ->   判斷是否count = 0   ->   不符合判斷式   ->   count = 3 -1 = 2 第二輪迴圈: count = 2   ->   輸入密碼   ->   判斷是否count = 0   ->   不符合判斷式   ->   count = 2 -1 = 1 第三輪迴圈: count = 1   ->   輸入密碼   ->   判斷是否count = 0   ->   不符合判斷式 

零基礎入門學習python_007&008筆記及作業_分支與循環_三元運算子_猜數字小遊戲V3.1

三元運算子: ====================例(一)==================== if x < y:     small = x else:     small = y 等同於:small = x if x < y else y ====================例(二)==================== if 'a'=='a':     x=True else :     x=False 等同於:x=True if 'a'=='a' else False ====================例(二)==================== if x < y:     small = x     if z < small:         small = z elif y < z:     small = y else:     small = z 等同於:small = x if (x < y and x < z) else (y if y < z else z) 作業1:按照100分制,90分以上成績為A,80到90為B,60到80為C,60以下為D,寫一個程式,當使用者輸入分數,自動轉換為ABCD的形式列印。根據一般的統計規律,平均成績一般集中在 70~80 分之間,請根據統計規律,盡量改進程式以提高效率。 ==============================以下為程式碼============================== score = int(input(' 請輸入一個分數: ')) if 80 > score >= 60:     print('C') elif 90 > score >= 80:     print('B') elif 60 > score >= 0:     print('D') elif 100 >= score >= 90:     print('A

零基礎入門學習python_006筆記及作業_常用操作符

運算符: 加「+」、減「-」、乘「*」、除「/」、只取餘數「%」 地板除法(答案只會產生整數,小數點以下捨去)「//」 冪運算(指數)「**」 以下表格列出了從最高到最低優先順序的所有運算符: 運算符 描述 ** 指數  ( 最高優先順序 ) ~ + - 按位翻轉 、 一元加號和減號 ( 最後兩個的方法名為  +@  和  -@) * / % // 乘、除、取模和取整除 + - 加法減法 >> << 右移、左移運算符 & 位  'AND' ^ | 位運算符 <= < > >= 比較運算符 <> == != 等於運算符 = %= /= //= -= += *= **= 設定運算符 is, is not 身份運算符 in, not in 成員運算符 not, or, and 邏輯運算符 根據以上規則可以結論出特殊規則: -3 ** 2 = -(3 ** 2) = -9 此時-3的「-」會被python看成「減號」,所以優先執行指數計算,導致答案為「-9」; (-3) ** 2 = 9 此時則同一般計算。 作業1:請說出答案:not 1 or 0 and 1 or 3 and 4 or 5 and 6 or 7 and 8 and 9 ==============================解答及說明============================== 答案:4 說明: 1. 運算符的優先順序:not > and > or,所以原本的式子可以寫成: (not 1) or (0 and 1) or (3 and 4) or (5 and 6) or (7 and 8 and 9) 2. 0相當於False,其他數字相等於True。所以: not 1 = not True = False = 0 0 and 1 = False and True = False = 0 所以原本的式子等於: 0 or 0 or 4 or 6 or 9 3. True and True的時候,取左邊值。

零基礎入門學習python_005筆記及作業_python的數值類型_猜數字小遊戲V2.2

作業1:當使用者輸入錯誤類型的時候,及時提醒使用者重新輸入,防止程式崩潰。 原先的構想打算使用isinstance函數,判斷輸入值是否為數字(int) 程式碼考慮有: ==============================以下為程式碼============================== temp = input("guess the number from 1 to 10 : ") while isinstance(temp, int) != True:     print('Type error')     temp = input('Please key in again: ') count = 3 guess = int(temp) ---------------------------------------------------------------分隔線中的分隔線 temp = input("guess the number from 1 to 10 : ") count = 3 guess = int(temp) if isinstance(temp, int) != True:     while guess != secret and count != 0:         temp = input("So sorry, you're wrong! Please guess again: ")         guess = int(temp)         count = count -1         if count == 0:             print('so sad')         elif guess == secret:             print("Wonderful")             print("But still no reward")         else:             if guess > secret:            

零基礎入門學習python_004筆記及作業_猜數字小遊戲V2.1

==============================以下為程式碼============================== #猜數字遊戲2.0版。新版功能說明: #答案隨機產生 #新增提示猜數過大或過小的功能 #猜到對為止 #導入random模組 #變數宣告secret = 1到10中間的隨機數字 import random secret = random.randint(1,10) #螢幕顯示Elliot Production print("----------Elliot Production----------") #變數宣告temp = 玩家輸入的數字。輸入前螢幕提示guess the number from 1 to 10 temp = input("guess the number from 1 to 10: ") #變數宣告guess = 以數字形式顯示玩家所輸入的變數「temp」 guess = int(temp) #使用while循環下面縮排的程式碼:當guess不等於secret的時候,執行下列動作 #變數宣告temp = 玩家輸入的數字。輸入前螢幕提示So sorry, you're wrong! Please guess again #變數宣告guess = 以數字形式顯示玩家所輸入的temp #當guess等於secret的時候,螢幕顯示文字 while guess != secret:     temp = input("So sorry, you're wrong! Please guess again: ")     guess = int(temp)     if guess == secret:         print("Wonderful")         print("But still no reward") #當guess不等於secret的時候     else: #若guess大於secret,螢幕顯示文字         if guess > secret:             print('Hey, to

零基礎入門學習python_003筆記及作業_字串與轉譯

圖片
這篇主要記錄字串的部份。 字串就是文字。 要讓python辨認是否是字串,就看字串前後有無「'」或「"」引號。 「123」是數字; 「'123'」和「"123"」就是字串。 在字串中有時會碰到特殊的情況, 比方說想使用字串「Let's Go」, 如果輸入'Let's Go'的話會有問題, 因為python無法辨識中間的「'」引號該跟字首還是字尾的「'」引號一組。 解法1:使用雙引號「"Let's Go"」 解法2:使用轉譯符號「'Let\'s Go' 」 轉譯符號「\」會將特殊符號轉譯成單純的文字以供python識別。 轉譯符號會再衍生跳脫字元 =============================以下為跳脫字元============================= \\ 表示反斜線\ \' 表示單引號' \" 表示雙引號" \a ASCII裡的Bell,「鈴聲」 \b ASCII裡的Backspace,「倒退」 \f ASCII裡的Formfeed,「換頁」 \n ASCII裡的Linefeed,「換行」 \N{name} 在Unicode裡名為name代表的字元 \r ASCII裡的Carriage Return,「返回」 \t ASCII裡的Horizontal Tab,「水平跳格」 \uxxxx Unicode裡16位元的xxxx在16進制裡代表的字元 \Uxxxxxxxx Unicode裡32位元的xxxxxxxx在16進制裡代表的字元 \v ASCII裡的Vertical Tab,「垂直跳格」 \ooo ooo在8進制代表的字元 \xhh hh在16進指代表的字元 \0 代表ASCII裡的 NULL,但是並不中斷字串 ====================================================================== 舉例來說: >>>temp = '舉頭望明月,\n低頭思故鄉。

零基礎入門學習python_002筆記及作業_猜數字小遊戲V1.0

我的python主要是跟隨「小甲魚的零基礎入門學習python」的視頻教學。 視頻連結: youtube 、 小甲魚官網 論壇連結: 小甲魚工作室 猜數字小遊戲是第二課的教學主軸。 ==============================以下為程式碼============================== #螢幕顯示----------Elliot Production---------- print("----------Elliot Production----------") #設定變數temp #使用input函數,使變數temp等於遊戲玩家所輸入的數值 temp = input("guess the number from 1 to 10: ") #設定變數guess #因為input函數所返回的值,預設為字串,所以使用int函數將guess轉變成python可認得的數字形式 guess = int(temp) #當變數guess等於8的時候 if guess == 8: #螢幕顯示Wonderful     print("Wonderful") #螢幕顯示But still no reward     print("But still no reward") #否則 else: #螢幕顯示Stupid     print("Stupid") #螢幕顯示Game Over print("Game Over") ====================================================================== 將程式碼加註解,方便日後複習使用。 程式碼前加#字,代表該行程式碼僅為註解而不執行。 第二課的作業一: 編寫程式hello.py,要求用戶輸入姓名並列印“你好,姓名!” ==============================以下為程式碼============================== #設定變數temp #使用input函數,使變數temp等於使用者所輸入的值 temp