{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# Python程式語言"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Python變數在使用前一定記得先指定初值,如下所示:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"grade = 76\n",
"height = 175.5\n",
"weight = 75.5\n",
"\n",
"print(\"成績 = \" + str(grade))\n",
"print(\"身高 = \" + str(height))\n",
"print(\"體重 = \" + str(weight))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Python變數可以指定成整數值,和執行相關運算如下所示:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"x = 5\n",
"print(type(x)) # 顯示 \"<class 'int'>\"\n",
"print(x) # 顯示 \"5\"\n",
"print(x + 1) # 加法: 顯示 \"6\"\n",
"print(x - 1) # 減法: 顯示 \"4\"\n",
"print(x * 2) # 乘法: 顯示 \"10\"\n",
"print(x / 2) # 除法: 顯示 \"2.5\"\n",
"print(x // 2) # 整數除法: 顯示 \"2\"\n",
"print(x % 2) # 餘數: 顯示 \"1\"\n",
"print(x ** 2) # 指數: 顯示 \"25\"\n",
"x += 1\n",
"print(x) # 顯示 \"6\"\n",
"x *= 2\n",
"print(x) # 顯示 \"12\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Python變數可以指定成浮點數值,和執行相關運算,如下所示:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"y = 2.5\n",
"print(type(y)) # 顯示 \"<class 'float'>\"\n",
"print(y, y + 1, y * 2, y ** 2) # 顯示 \"2.5 3.5 5.0 6.25\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Python語言的布林(Boolean)資料型態可以使用True和False關鍵字來表示"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"x = True\n",
"y = False\n",
"\n",
"print(x)\n",
"print(y)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"當在Python程式建立字串後,我們就可以顯示字串、計算字串長度、連接2個字串告格式化顯示字串內容"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"str1 = 'hello' # 使用單引號建立字串\n",
"str2 = \"python\" # 使用雙引號建立字串\n",
"print(str1) # 顯示 \"hello\"\n",
"print(len(str1)) # 字串長度: 顯示 \"5\"\n",
"str3 = str1 + ' ' + str2 # 字串連接\n",
"print(str3) # 顯示 \"hello python\"\n",
"str4 = '%s %s %d' % (str1, str2, 12) # 格式化字串\n",
"print(str4) # 顯示 \"hello python 12\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Python字串物件提供一些好用的方法來處理字串,如下所示:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"s = \"hello\"\n",
"print(s.capitalize()) # 第1個字元大寫: 顯示 \"Hello\"\n",
"print(s.upper()) # 轉成大寫: 顯示 \"HELLO\"\n",
"print(s.rjust(7)) # 右邊填空白字元: 顯示 \" hello\"\n",
"print(s.center(7)) # 置中顯示: 顯示 \" hello \"\n",
"print(s.replace('l', 'L')) # 取代字串: 顯示 \"heLLo\"\n",
"print(' python '.strip()) # 刪除空白字元: 顯示 \"python\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 練習"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"請設定兩個變數name, id, class為自己的姓名、學號與班級,並且進行輸出"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"將華氏溫度轉換為攝氏溫度"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"f = input ( '請輸入華氏溫度: ' )\n",
"c = \n",
"print ( ' %.1f華氏度= %.1f攝氏度' % (f, c))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"輸入半徑計算圓的周長和面積"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import math\n",
"\n",
"radius = float ( input ( '請輸入圓的半徑: ' ))\n",
"perimeter = 2 * math.pi * radius\n",
"area = math.pi * radius * radius\n",
"print ( '周長: %.2f ' perimeter)\n",
"print ( '面積: %.2f ' area)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 條件控制 – if單選條件敘述\n",
"判斷氣溫決定是否加件外套的if條件敘述,如下所示:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"t = int(input(\"請輸入氣溫 => \"))\n",
"if t < 20:\n",
" print(\"加件外套!\")\n",
"print(\"今天氣溫 = \" + str(t))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"學生成績以60分區分是否及格的if/else條件敘述"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"s = int(input(\"請輸入成績 => \"))\n",
"if s >= 60:\n",
" print(\"成績及格!\")\n",
"else:\n",
" print(\"成績不及格!\")"
]
},
{
"attachments": {},
"cell_type": "markdown",
"metadata": {},
"source": [
"Python多選一條件敘述是if/else條件的擴充,在之中新增elif關鍵字來新增一個條件判斷,就可以建立多選一條件敘述,在輸入時,別忘了輸入在條件運算式和else之後的「:」冒號。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"輸入年齡值來判斷不同範圍的年齡,小於13歲是兒童;小於20歲是青少年;大於等於20歲是成年人,因為條件不只一個,所以需要使用多選一條件敘述"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"a = int(input(\"請輸入年齡 => \"))\n",
"if a < 13:\n",
" print(\"兒童\")\n",
"elif a < 20:\n",
" print(\"青少年\")\n",
"else:\n",
" print(\"成年人\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Python語言並不支援「條件運算式」(Conditional Expressions),我們可以使用單行if/else條件敘述來代替,其語法如下所示:\n",
" 變數 = 變數1 if 條件運算式 else 變數2"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"12/24制的時間轉換運算式如下所示:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"h = h-12 if h >= 12 else h"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 練習"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"成績轉換為等級"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"score = input ( '請輸入成績: ' )\n",
"if score >= 90\n",
" grade = ' A '\n",
"else if score >= 80\n",
" grade = ' B '\n",
"else if score >= 70\n",
" grade = ' C '\n",
"else if score >= 60 \n",
" grade = ' D '\n",
"else\n",
" grade = ' E '\n",
"print ( '對應的等級是: ' , grade)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 迴圈控制 – for計數迴圈"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"在for迴圈的程式敘述中擁有計數器變數,計數器可以每次增加或減少一個值,直到迴圈結束條件成立為止。\n",
"\n",
"基本上,如果已經知道需重複執行幾次,就可以使用for計數迴圈來重複執行程式區塊。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"在輸入最大值後,可以計算出1加至最大值的總和"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"m = int(input(\"請輸入最大值 =>\"))\n",
"s = 0\n",
"for i in range(1, m + 1):\n",
" s = s + i\n",
"print(\"總和 = \" + str(s))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"range(101)可以產生一個0到100的整數序列。\n",
"\n",
"range(1, 100)可以產生一個1到99的整數序列。\n",
"\n",
"range(1, 100, 2)可以產生一個1到99的奇數序列,其中2是步長,即數值序列的增量。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# while條件迴圈"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"while迴圈敘述需要在程式區塊自行處理計數器變數的增減,迴圈是在程式區塊開頭檢查條件,條件成立才允許進入迴圈執行。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"使用while迴圈來計算階層函數值"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"m = int(input(\"請輸入階層數 =>\"))\n",
"r = 1\n",
"n = 1\n",
"while n <= m:\n",
" r = r * n\n",
" n = n + 1\n",
"print(\"階層值! = \" + str(r))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 練習"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"猜數字遊戲"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"import random\n",
"\n",
"answer = random.randint( 1 , 100 )\n",
"counter = 0 \n",
"while True\n",
" counter += 1 \n",
" number = int ( input ( '請輸入: ' ))\n",
" if number < answer\n",
" print ( '大一點' )\n",
" elif number > answer\n",
" print ( '小一點' )\n",
" else \n",
" print ( '恭喜你猜對了! ' )\n",
" break\n",
"print ( '你總共猜了%d次' %counter)\n",
"if counter > 7\n",
" print ( '你的智商餘額明顯不足' )"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"輸入一個正整數判斷它是不是質數"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"from math import sqrt\n",
"\n",
"num = int ( input ( '請輸入一個正整數: ' ))\n",
"end = int (sqrt(num))\n",
"is_prime = True \n",
"for x range ( 2 , end)\n",
" if num % x = 0 :\n",
" is_prime = False \n",
" break \n",
"if is_prime and num != 1 :\n",
" print ( ' %d是質數' % num)\n",
"else :\n",
" print ( ' %d不是質數' % num)\n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 函數 – 定義函數"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"在Python程式建立沒有參數列和傳回值的print_msg()函數,如下所示:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def print_msg():\n",
" print(\"歡迎學習Python程式設計!\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"上述函數名稱是print_msg,在名稱後的括號定義傳入的參數列,如果函數沒有參數,就是空括號,在空括號後不要忘了輸入「:」冒號。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Python函數如果有傳回值,我們需要使用return關鍵字來傳回值。\n",
"\n",
"例如:判斷參數值是否在指定範圍的is_valid_num()函數,如下所示:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def is_valid_num(no):\n",
" if no >= 0 and no <= 200.0:\n",
" return True\n",
" else:\n",
" return False"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"再來是一個執行運算的convert_to_f()函數,如下所示:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def convert_to_f(c):\n",
" f = (9.0 * c) / 5.0 + 32.0\n",
" return f"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 函數 – 函數呼叫"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Python程式碼呼叫函數是使用函數名稱加上括號中的引數列。因為print_msg()函數沒有傳回值和參數列,呼叫函數只需使用函數名稱加上空括號,如下所示:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"print_msg()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"函數如果擁有傳回值,在呼叫時可以使用指定敘述來取得傳回值,如下所示:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"f = convert_to_f(c)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"如果函數傳回值為True或False,例如:is_valid_num()函數,我們可以在if條件敘述呼叫函數作為判斷條件,如下所示:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"if is_valid_num(c):\n",
" print(\"合法!\")\n",
"else:\n",
" print(\"不合法\")"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 練習"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"實作判斷一個數是不是質數的函數"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"def is_prime ( num ):\n",
" for factor in range ( 2 , num):\n",
" if num % factor == 0 :\n",
" return False \n",
" return "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 清單"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Python語言的「清單」(Lists)類似其他程式語言「陣列」(Arrays),中文譯名有清單、串列和列表等。\n",
"\n",
"不同於字串型態的不能更改,清單允許更改(Mutable)內容,我們可以新增、刪除、插入和更改清單的項目(Items)。"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Python清單(Lists)是使用「[]」方括號括起的多個項目,每一個項目使用「,」逗號分隔,如下所示:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"ls = [6, 4, 5] # 建立清單\n",
"print(ls, ls[2]) # 顯示 \"[6, 4, 5] 5\"\n",
"print(ls[-1]) # 負索引從最後開始: 顯示 \"5\"\n",
"ls[2] = \"py\" # 指定字串型態的項目\n",
"print(ls) # 顯示 \"[6, 4, 'py']\"\n",
"ls.append(\"bar\") # 新增項目\n",
"print(ls) # 顯示 \"[6, 4, 'py', 'bar']\"\n",
"ele = ls.pop() # 取出最後項目\n",
"print(ele, ls) # 顯示 \"bar [6, 4, 'py']\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Python清單可以在「[]」方括號中使用「:」符號的語法,即指定開始和結束來分割清單成為子清單,如下所示:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"nums = list(range(5)) # 建立一序列的整數清單\n",
"print(nums) # 顯示 \"[0, 1, 2, 3, 4]\"\n",
"print(nums[2:4]) # 切割索引2~4(不含4): 顯示 \"[2, 3]\"\n",
"print(nums[2:]) # 切割索引從2至最後: 顯示 \"[2, 3, 4]\"\n",
"print(nums[:2]) # 切割從開始至索引2(不含2): 顯示 \"[0, 1]\"\n",
"print(nums[:]) # 切割整個清單: 顯示 \"[0, 1, 2, 3, 4]\"\n",
"print(nums[:-1]) # 使用負索引切割: 顯示 \"[0, 1, 2, 3]\"\n",
"nums[2:4] = [7, 8] # 使用切割來指定子清單\n",
"print(nums) # 顯示 \"[0, 1, 7, 8, 4]\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# 清單 – 走訪清單"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Python程式是使用for迴圈走訪顯示清單的每一個項目,如下所示:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"animals = ['cat', 'dog', 'bat']\n",
"for animal in animals:\n",
" print(animal)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"上述for迴圈可以一一取出清單每一個項目和顯示出來,如果需要顯示清單各項目的索引值,我們需要使用enumerate()函數,如下所示:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"for index, animal in enumerate(animals):\n",
" print(index, animal)"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.6.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
2019年12月10日 星期二
python.ipynb
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言