Python 是當前最流行的程式語言之一。由 Guido van Rossum 創建,並於1991年發布。Python 擁有動態型別系統和垃圾回收功能,能夠自動管理記憶體,並且支援包括物件導向、命令式、函數式和程序式程式,其本身擁有廣泛的標準庫,並可以在大部分的作業系統中執行。
Python可用於:
Python 的用途:
Anaconda
Anaconda 為目前最受歡迎的 Python 平台,擁有超過1400個適用於不同作業系統環境下的軟件包和虛擬環境管理器,對於 Python 的安裝、執行及升級都變得簡單快速。
Miniconda
Miniconda 則是精簡版的 Anaconda,可以讓使用者自行加裝所需的軟件包,避免占用過大的硬碟空間,但只適合有經驗的使用者,初學者仍建議安裝 Anaconda。
Jupyter Notebook
Jupter Notebook 是一個方便同時用來編輯 Markdown及HTML文件的編輯器,同時又具有Python等程式語言的編輯及執行環境,可充分利用其直譯式的特性編寫程式,並達到高互動執行結果,且容易呈現視覺化的執行結果。
Microsoft Azure Notebooks
Microsoft Azure Notebooks 則是 Jupter Notebook 加上雲端硬碟的功能,讓使用者可以隨時隨地的編輯 Python 程式,Microsoft Azure Notebooks的操作流程如下:
print('Hello')
,按 Ctrl-Enter 開始執行 Jupyter Notebook是一個以Web為基礎的交互式計算環境,可用於創建Jupyter Notebook文檔,該文檔可以轉換為許多的開源標準輸出格式,如HTML、演示幻燈片、PDF、Markdown、Python等。
在Jupyter Notebook裡面,程式是以區塊去執行,程式碼會分成好幾個區塊,每個區塊可以各自去執行,也可以一次執行多個區塊來看執行結果,每個執行區塊可以設定四種狀態:
狀態 | 説明 |
---|---|
Code | 用於編輯程式碼,如 Python 等 |
Markdown | 用於編輯 Markdown1 文件 |
Raw NBConvert | 可用於轉換成另一種格式(如 HTML2) 的命令列工具 |
Heading | 建議使用Markdown的標題功能取代 |
Jupyter Notebook 的模式分爲命令、編輯及執行等模式:
使用鍵盤切換模式小技巧(→代表切換模式)
使用滑鼠切換模式小技巧
快捷鍵 | 作用 |
---|---|
Ctrl-Enter | 執行區塊 |
Shift-Enter | 執行區塊,並移到下個區塊 |
Alt-Enter | 執行區塊,並插入新區塊 |
Ctrl-S | 存檔 |
快捷鍵 | 作用 |
---|---|
Y | 區塊切換為 Code 狀態 |
M | 區塊切換為 Markdown 狀態 |
R | 區塊切換為 Raw NBConvert 狀態 |
A | 在上方插入新區塊 |
B | 在下方插入新區塊 |
DD | 刪除選中的區塊 |
X | 剪下選中的區塊 |
C | 複製選中的區塊 |
V | 貼到下方區塊 |
Z | 恢復最後一個刪除的區塊 |
Shift-M | 合併選中的區塊 |
Up ↑ | 選中上方區塊 |
Down ↓ | 選中下方區塊 |
快捷鍵 | 作用 |
---|---|
Esc | 切換到命令模式 |
Tab | 縮排 |
Shift-Tab | 反縮排 |
Ctrl-Z | 復原 |
Ctrl-Shift-Z | 重做 |
Ctrl-Left | 跳到左邊一個字首 |
Ctrl-Right | 跳到右邊一個字首 |
Ctrl-Backspace | 刪除前面一個字 |
Ctrl-Delete | 刪除後面一個字 |
Ctrl-Shift - | 分割區塊 |
Python 可以在服務器上創建 python(.py)文件,然後在命令行中執行。或直接在命令行中編寫程式碼來執行Python:
print('你好!')
print()常用於輸出字串或變數,預設會在末尾補上換行符號:
print('你好!')
print('你好!')
如果不想要換行,可以使用參數end
:
print('你好!', end=' ') #改爲空格
print('你好!')
print()裡若放多個字串,預設會使用空白來串接,使用 sep
參數可以變更分隔符號。
print('How','are','you')
print('How','are','you',sep='_')
num = input("請輸入一的幸運數字:")
print("您的幸運數字是: " + num)
指派運算子(=)用於為變數設值,例如下列程式宣告了變數x
,並將x
設定為5,然後顯示其内容:
x = 5
print(x)
Python 註解以 # 開頭,Python 執行時,註解列會被忽略:
# 這是註解
print("Hi!")
變量是儲存資料的容器,與其他程式語言不同,Python 變量不需經過宣告,而是於第一次設定值時創建。
x = 5
print(x)
變量可以具有短名稱(如 x 和 y)或更具描述性的名稱(如 Year,carName,total_volume)。
Python 變量及函數命名規則:
A4
面積
4A
carName
、totalVolume
。CarName
、TotalVolume
。變量的輸出可以採用 print 語句,透過逗號將多個變數或常數串接,例如:
x = 5
print(x) #顯示變數内容
x = 5
y = 10
z = x + y #數值相加
print(z)
x = 'Python'
y = '你好'
print(x, y, '這是輸出')
變數可以儲存不同類型的資料,Python 變數具有以下的資料類型:
字串: str
數值: int、float、complex
布林: bool
序列: list、tuple、range
字典: dict
集合: set、frozenset
二進制:bytes、bytearray、memoryview
print("Hello")
print('Hello')
字串的串接可以使用 + 號,例如:
x = 'Python '
y = '你好'
z = x + y #字串串接
z
但 + 符號,不可以混合不同形態的資料運算,例如:
x = 'Python'
y = 10
z = x + y #字串+整數
print(z)
1 x = 'Python' 2 y = 10 ----> 3 z = x + y 4 print(z) TypeError: can only concatenate str (not "int") to str 類型錯誤:只能連接字串(不是“整數”)到字串
重複的字串可以使用 * 號,例如:
print("重複" * 3)
print(3 * "重複")
要在字串中插入特殊字元或已被語法使用的符號,須使用跳脫字元。跳脫字元是以反斜線\ 加上要插入的字元構成。例如要在雙引號包圍的字串中使用雙引號,則會出現錯誤,要解決此問題,須使用跳脫字元 \"
常用的跳脫字元列表如下:
程式碼 | 結果 | 説明 |
---|---|---|
\' | ' | 單引號 |
\" | " | 雙引號 |
\\ | \ | 反斜線 |
常用的跳脫字元(控制字元)列表如下:
程式碼 | 結果 | ASCII縮寫 |
---|---|---|
\n | 換行 | LF |
\r | 歸位 | CR |
\t | 水平Tab | HT |
\v | 垂直Tab | VT |
\f | 跳頁 | FF |
\b | 退格鍵 | BS |
要在字串中使用引號會出現錯誤,須使用跳脫字元\"或\'
print("這是要用\"引號\"的内容")
print('這是要用\'引號\'的内容')
如要顯示多行文字,不可以使用Enter鍵
print("這是第一行
這是第二行")
必須透過跳脫字元\n,或是使用三個引號```
print("這是第一行\n這是第二行")
透過方括號可用於訪問字串中的字元:
# 獲取位置 1 的字元
# 請注意第一個字元的位置為 0
a = "快樂學程式語言"
print(a[1])
切片語法用在返回一定範圍的字串,指定開始索引和結束索引,並以冒號分隔,可取得指定範圍的字串。
#截取從位置 2 到位置 5(不包括 5 在內)的字串:
a = "快樂學程式語言"
print(a[2:5])
使用負索引從字串末尾開始切片:
#從倒數位置 5 到 3(不含2)截取字串:
a = "快樂學程式語言"
print(a[-5:-2])
#截取末尾 2 位字串(:後留空白)
a = "快樂學程式語言"
print(a[-2:])
# len():獲取字串的長度
a = "快樂學程式語言"
print(len(a))
# 空字串的長度=0
a = ''
print(len(a))
# strip():刪除開頭或結尾所有空格
a = " 快樂學程式語言 "
print(a.strip())
# upper():返回字串的大寫形式
# lower():返回字串的小寫形式
a = "Hello, World!"
print(a.lower())
# replace():將字串替換為另一組字串
a = "Hello, World!"
print(a.replace("He", "Ja"))
#split(分隔符):透過分隔符將字串分割為清單
a = "Hello, World!"
# 透過分隔符 "," 分割為清單
print(a.split(","))
#in:檢查字串中是否存在特定的子字串
#not in:檢查是否不存在特定的子字串
txt = "快樂學程式語言"
print("程式" in txt)
print("Python" not in txt)
x = 1 # 整數 int
y = 1.68 # 浮點數 float
z = 1j # 複數 complex
Int 整數是一個無限制長度的正整數或負整數(無小數):
x = 1
y = 3567891023456789
z = -3215566
浮點數是一個正數或負數,並包含一個或多個小數的數值:
x = 1.10
y = 1.0
z = -3.1416
浮點數也可以是帶有 “e” 的科學數字,以表示10的次方:
x = 35e2
y = 12E4
z = -87.8e100
fruits = ["香蕉", "蘋果", "鳳梨"]
print(fruits)
#通過索引號來訪問清單項目
fruits=["香蕉","蘋果","鳳梨"]
print(fruits[0])
#清單項目數 len()
print(len(fruits))
#通過索引號來訪問清單項目
fruits=["香蕉","蘋果","鳳梨"]
#更改特定清單項目的值
fruits[2]="xxx"
#負索引, -1指的是最後一項,-2指的是倒數第二項,依此類推
print(fruits[-1])
指定索引範圍:通過指定範圍的起點和終點來指定索引範圍。指定範圍時,返回值將是包含指定項目的新清單
fruits=["香蕉","蘋果","鳳梨"]
# 從索引 1 到索引 3(不包括 3)
# 第一項的 "香蕉" 的索引為 0
print(fruits[1:3])
# 省略起始值,範圍將從第一項開始
print(fruits[:2])
# 負指數範圍, 從清單末尾開始搜索
print(fruits[-2:-1])
# 從清單末尾開始搜索
print(fruits[-2:])
遍歷清單:透過 for 迴圈指令來遍歷清單所有項目
fruits=["香蕉","蘋果","鳳梨"]
for fruit in fruits:
print(fruit)
組合清單:透過 join 指令來組合所有項目成單一字串
fruits=["香蕉","蘋果","鳳梨"]
print(' '.join(fruits))
print(','.join(fruits))
檢查項目是否存在:透過 in
指令來確任列表中是否存在指定的項目
fruits=["香蕉","蘋果","鳳梨"]
if '香蕉' in fruits:
print("有")
else:
print("沒有")
清單項目的新增、刪除、清空
fruits=["香蕉", "蘋果"]
# append():將項目添加到列表的末尾
fruits.append("芒果")
print(fruits)
fruits=["香蕉","蘋果","鳳梨"]
# del:刪除索引指定的項目
del fruits[1]
print(fruits)
fruits=["香蕉","蘋果","鳳梨"]
# pop(索引):刪除索引指定的項目
fruits.pop(0)
print(fruits)
# pop():如果索引空白,則刪除最後一項
fruits.pop()
print(fruits)
fruits = ["香蕉", "蘋果", "鳳梨"]
# del:完全刪除列表
del fruits
# mylist已不存在,下列程式會引發錯誤
# print(fruits)
合併清單:連接兩個或多個清單,最簡單的方法是使用 + 運算子或 .extend()
ListA = ["a", "b", "c"]
ListB = [1, 2, 3]
ListC = ListA + ListB
print(ListC)
ListA = ["a", "b", "c"]
ListB = [1, 2, 3]
ListA.extend(ListB)
print(ListA)
清單索引值:返回指定項目的索引值(index())
fruits = ["香蕉","蘋果","鳳梨"]
print(fruits.index("鳳梨"))
反轉清單:返回反轉的清單
ListA = [1, 2, 3, 4]
ListA.reverse()
print(ListA)
字典是無序,可變和具有索引的集合,以大括號括起來,具有鍵(Key)和值(Value)。
person = {"名字": "强森", "電話": "03-543210", "出生年": 1964 }
print(person)
# 異動項目
person["名字"]="xxx"
print(person)
# 訪問單一項目
print(person["名字"])
遍歷字典項目(for in)
person = {"名字": "强森", "電話": "03-543210", "出生年": 1964}
# 印出的所有值 (兩種語法)
for key in person:
print(person[key], end=' ')
print("\n----")
for value in person.values():
print(value, end=' ')
person = {"名字": "强森", "電話": "03-543210", "出生年": 1964}
#印出所有的索引
for key in person:
print(key)
字典的下列的方法類似清單:
字典的下列的方法使用上有差異:
person = { "名字": "强森", "電話": "03-543210", "出生年": 1964}
person["郵遞區號"]="300"
print(person)
person = { "名字": "强森", "電話": "03-543210", "出生年": 1964}
#刪除具有指定鍵名的項目
person.pop("電話")
print(person)
person = { "名字": "强森", "電話": "03-543210", "出生年": 1964}
del person["出生年"]
print(person)
# 清空項目
person.clear()
print(person)
person = { "名字": "强森", "電話": "03-543210", "出生年": 1964}
# 製作副本
person_copy=person.copy()
person_copy["名字"]="xxx"
print(person)
print(person副本)
Python 内建有許多模組,其中 math 模組内建許多數學常數及函數:
常數 | 説明 |
---|---|
math.pi | 圓周率 |
math.e | 自然對數e |
math.nan | Not a Number (非數值) |
|math.inf|無限大|
平方根 $y = \sqrt{x}$
import math
x = math.sqrt(100)
print(x)
$y = \sqrt{a^2 + b^2}$
import math
a = 3
b = 4
y=math.sqrt(a**2 + b**2)
print(y)
y=$(\sin x)^2 + (\cos x)^2$
import math
x = 10
y=math.sin(x)**2 + math.cos(x)**2
print(y)
攝氏換算華氏:$^\circ F=^\circ C \times {9 \over 5}+32$
C=float(input("攝氏溫度:"))
F=C*9 / 5 + 32
print('華氏溫度=', F)
# 輸入體重及身高
W=input("體重(公斤):")
H=input("身高(公分):")
W=float(W)
# 將公分轉爲公尺
H =float(H) / 100
# 計算BMI
BMI=W / pow(H, 2)
print('BMI=', BMI)
#顯示判斷結果
if(BMI < 18.5):
print("體重過輕")
elif(BMI > 24):
print("體重過重")
else:
print("體重正常")
試算公式: $\displaystyle 本利和 = 本金\times(1+年利率)^{期數}$
M=float(input("請輸入本金"))
R=float(input("請輸入年利率"))
P=int(input("請輸入期數(年)"))
F=round(M*(1+R/100)**P)
print(F)
#比較運算式
print(10 > 9)
print(10 == 9)
print(10 < 9)
a = 200
b = 33
if a > b:
print("a > b")
else:
print("a <= b")
x = 3
y = 2
print(x + y)
print(x - y)
print(x * y)
print(x / y)
x = 3
y = 2
print(x % y) #求餘數
print(x // y) #求商數
print(2 ** y) #次方
指派運算子包含
運算子 | 範例 | 説明 |
---|---|---|
= | x = 2 | x 填入 2 |
+= | x += 2 | x值加2 |
-= | x -= 2 | x值減2 |
*= | x *= 2 | x值變2倍 |
/= | x /= 2 | x值減半 |
%= | x %= 2 | x為除以2的餘數 |
/= | x //= 2 | x為除以2的商數 |
**= | x **= 2 | x=x2 |
指派運算子用於為變數設定值,例如:
x = 5
x = x + 3
print(x)
x = 5
x += 3 #相當於 x=x+3
print(x)
x -= 3 #相當於 x=x-3
print(x)
x = 5
x *= 3 #相當於 x=x*3
print(x)
x /= 3 #相當於 x=x/3
print(x)
x = 5
x %= 3 #除以3的餘數
print(x)
x = 5
x //= 3 #除以3的商數
print(x)
比較運算子用於比較兩個值,包含 ==(等於) !=(不等於) >(大於) <(小於) >=(大於或等於) <=(小於或等於)
x = 5
y = 3
print(x == y)
print(x != y)
x = 5
y = 3
print(x > y)
print(x >= y)
x = 5
y = 5
print(x < y)
print(x <= y)
print(True and True)
print(True and False, end=' ')
print(False and True, end=' ')
print(False and False)
x = 6
print(x > 3 and x < 10)
or 為任一條件符合,就會是True
print(True or True, end=' ')
print(True or False, end=' ')
print(False or True)
print(False or False)
x = 6
print(x < 3 or x > 10)
print(not True)
print(not False)
x = 6
#下列兩者結果是相同的
print(not(x < 3))
print(x >= 3)
成員運算子 in
用於測試對像中是否存在序列中
fruits = ["香蕉", "蘋果"]
print("香蕉" in fruits)
print("鳳梨" not in fruits)
score = 80
if score >= 60:
print("及格")
if...esle 選擇結構的語法如下:
if 條件式:
縮排的程式碼(至少一列)
else:
縮排的程式碼(至少一列)
當條件式結果為True時,執行 if 後縮排的程式碼,若爲 False 執行 else 後縮排的程式碼。
score = 80
if score >= 60:
print("及格")
else:
print("不及格")
if...elif...else 選擇結構的語法如下:
if 條件式A:
縮排的程式碼(至少一列)
elif 條件式B:
縮排的程式碼(至少一列)
elif 條件式C:
縮排的程式碼(至少一列)
else:
縮排的程式碼(至少一列)
elif 區塊的數量可以是無、1個或數個,其執行流程為由上而下逐一比對條件式,只要條件式結果為True時,便執行其後的縮排的程式碼,然後條離整個 if 區塊;若所有條件式都不滿足,則執行 else 後的程式碼。
score = 80
if score > 60:
print("及格")
elif score == 60:
print("剛好及格")
else:
print("不及格")
a = 200
b = 33
c = 500
if a > b and c > a:
print("True")
else:
print("False")
if a > b or a > c:
print("True")
else:
print("False")
while 迴圈的語法如下:
while 條件式:
縮排的程式碼(至少一列)
else:
縮排的程式碼(至少一列)
當條件式結果為True時,重複執行 while 後縮排的程式碼,直到條件式結果為False。 else: 區塊可以省略,當離開迴圈時執行。
i = 0
while i < 5:
print(i)
i += 1
i = 0
while i < 5:
print(i)
i += 1
else:
print("迴圈已結束")
for 迴圈的語法如下:
for 變數 in 可迭代物件:
縮排的程式碼(至少一列)
else:
縮排的程式碼(至少一列)
當 for 迴圈開始遍歷可迭代物件的每一項目,並將該項目指派給變數,然後執行 for 後縮排的程式碼,直到可迭代物件遍歷到最後的項目。 else: 區塊可以省略,當離開for迴圈時執行。
可迭代物件可透過range()函數產生,range()函數預設從 0 開始遞增。
for x in range(5):
print(x)
# range(起始值, 終止值)
for x in range(2, 5):
print(x, end=' ')
# range(起始值, 終止值, 增量值)
for x in range(2, 10, 2):
print(x, end=' ')
for x in range(5):
print(x, end=' ')
else:
print("迴圈已結束")
可迭代物件也可以是list、tuple、dict、set或字串。
myLlist = ["香蕉", "蘋果", "鳳梨"]
for x in myLlist:
print(x)
for x in "奇異果":
print(x)
break
語句用在强制停止迴圈 continue
語句用在停止當前迭代,然後繼續下一個i = 0
while i < 5:
if i==3:
break
print(i)
i += 1
i = 0
while i < 5:
if i==3:
i += 1
continue
print(i)
i += 1
for i in range(5):
if i==3: break
print(i)
for i in range(5):
if i==3: continue
print(i)
i = 0
while i < 5:
if i==3: continue
print(i, end=' ')
i += 1
模組(module)式一個以.py為副檔名的檔案,其中會定義了變數、函數或類別,當要使用模組的功能時,可以透過import 模組名稱
指令來載入。
Python 內建 random 模組,可用於產生隨機亂數:
import random
#語法:random.randint(開始,結束)
#顯示 0 到 9 之間的隨機整數
print(random.randint(0, 9))
#語法:
#random.randrange(開始,結束,間距)
#顯示 0 到 9 之間的隨機數偶數
print(random.randrange(0, 9, 2))
#顯示 0 到 1 間的隨機數浮點數
print(random.random())
import random
mylist=['小明', '小王', '小陳', '小黃', '小珍']
x=random.choice(mylist)
print(x)
import random
nameList=['小明', '小王', '小陳', '小黃', '小珍']
random.shuffle(nameList)
print(nameList)
import random
Start = int(input("請輸入起始值:"))
End = int(input("請輸入結束值:"))
No = int(input("請輸入抽獎人數:"))
print("獲獎名單為:")
for i in range(No):
print(random.randint(Start, End))
上一個範例會有重複中籤的問題,本例子進一步將已中籤者移除,避免重複中籤
import random
Start = int(input("請輸入起始值:"))
End = int(input("請輸入結束值:"))
No = int(input("請輸入抽獎人數:"))
# 候選清單
Candidates=list(range(Start, End+1))
print("獲獎名單為:")
for i in range(No):
# 隨機抽籤
Winner=random.choice(Candidates)
print(Winner)
# 移除已中籤者
Candidates.remove(Winner)
import random
answer = random.randint(0, 10)
print("請輸入 Q 跳離程式")
while True:
guess = input("請猜一個數字(0-10):")
if guess == "Q" or guess == "q":
break
elif int(guess) == answer:
print("恭禧你,猜中了")
break
elif int(guess) > answer:
print("你猜的數字太大了")
else:
print("你猜的數字太小了")
print("歡迎下次再來玩!")
函數使用 def
關鍵字定義,是在被呼叫時才會運行的程式區塊,並可以選擇性的傳遞參數給函數,也可以選擇性的回傳參數。
函數具有以下的優點:
def my_function():
print("Welcome")
# 呼叫函數
my_function()
在函數名稱後的括號內可指定參數,可以根據需要添加任意數量的參數,只需用逗號分隔即可:
def my_function(p):
print(p)
# 呼叫函數(傳遞參數 p)
my_function("樂活學程式")
如果不知道函數將傳遞多少個參數,可以在函數定義的參數名稱前添加*
,函數將接收到一個清單參數:
def my_function(*p):
for item in p:
print(item)
# 呼叫函數(傳遞未知數量的參數)
my_function("樂活", "學", "程式")
任何資料類型皆可作爲參數傳送到函數(例如字串、數字、列表、字典等):
def my_function(p):
for item in p:
print(item)
# 呼叫函數(傳遞 list 參數)
my_function(["樂活", "學", "程式"])
要讓函數回傳值,請使用 return
語句
def my_function(x):
return 5 * x
print(my_function(3))
print(my_function(6))
def my_function():
# 回傳清單
x=["樂活", "學", "程式"]
return x
#回傳的清單將指派給 y
y=my_function()
print(y)
在函數外部創建的變數稱為全域變數,全域變數可以在函數內部和外部使用。在函數内部創建的變數或傳遞的參數稱為區域變數,區域變數只可以在函數內部使用。
def my_function():
print(x)
x = "我是全域變數"
my_function()
函數內部創建的變數是區域變數,只能在函數內部使用。
def my_function():
區域變數 = "我是區域變數"
print(區域變數)
NameError: name '區域變數' is not defined 名稱錯誤:名稱 "區域變數" 未定義**
具有相同名稱的全域變數與區域變數將在各自獨立記憶體執行。
def my_function():
x = "我是區域變數"
print(x)
x = "你好"
my_function()
要在函數內部創建全域變數,可以使用 global 關鍵字。
def my_function():
global x
x = "這是全域變數"
print(x)
my_function()
print(x)
當發生錯誤或異常時,Python通常會終止執行並產生錯誤訊息。為避免程式意外的終止執行,這些異常可以使用 try..except機制來處理:
# 因 xx 變數未定義,將生成異常
# 觸發 except:區塊的程式執行
try:
print(xx)
except:
print("異常")
# xx變數尚未定義,
# 將生成一個 NameError異常
try:
pxrint(xx)
except NameError:
print("NameError異常:變數未定義")
except:
print("其他異常")
try:
print("Hello")
except:
print("異常")
else:
print("無異常")
finally:
print("finally一定會執行 ")
在抽籤程式中,若輸入非數值或起始/結束值,將會造成程式執行錯誤,因此透過異常處理機制來避免程式意外停止執行:
import random
while True:
try:
Start = int(input("請輸入起始位置:"))
End = int(input("請輸入結束位置:"))
No = int(input("請輸入抽獎人數:"))
except:
print("請輸入正確的整數")
else:
if No < 0 or Start > End:
print("人數必須為正數,起始值要小於結束值")
continue
break
# 候選清單
Candidates=list(range(Start, End+1))
print("獲獎名單為:")
for i in range(No):
# 隨機抽籤
Winner=random.choice(Candidates)
print(Winner)
# 移除已中籤者
Candidates.remove(Winner)
以上的範例還是有可能因異常造成程式意外停止,請你再進一步改良,避免任何的意外停止執行!
import turtle as tu
tu.showturtle()
# 繪製邊長 100
tu.forward(100)
# 轉 90度
tu.left(90)
tu.forward(100)
tu.left(90)
tu.forward(100)
tu.left(90)
tu.forward(100)
加入紅色及畫筆變粗
import turtle as tu
tu.showturtle()
# 加入紅色及畫筆變粗
tu.color('red')
tu.pensize(3)
# 繪製邊長 100
tu.forward(100)
# 轉 90度
tu.left(90)
tu.forward(100)
tu.left(90)
tu.forward(100)
tu.left(90)
tu.forward(100)
import turtle
import turtle as tu
tu.showturtle()
tu.color("red", "yellow")
tu.begin_fill()
for x in range(50):
tu.forward(100)
tu.left(170)
tu.end_fill()
turtle.done()
import turtle
import turtle as tu
tu.showturtle()
tu.pensize(5)
tu.pencolor('yellow')
for x in range(5):
turtle.forward(200)
turtle.right(144)
tu.pencolor('red')
turtle.penup()
turtle.goto((-150), (-120))
turtle.write('完成', font = ('Arial', 40, 'normal'))
turtle.done()
import turtle
import turtle as tu
def drawSpiral(turtle):
tu.speed(10)
for i in range(1, 360):
tu.forward(i)
tu.right(91)
tu.showturtle()
holan = tu.Turtle()
tu.pencolor('violet')
drawSpiral(holan)
import turtle
colors = ['red', 'purple', 'blue', 'green', 'yellow', 'orange']
turtle.bgcolor('black')
for x in range(360):
turtle.pencolor(colors[(x % 6)])
turtle.pensize((x / 100 + 1))
turtle.forward(x)
turtle.left(59)
import random
import turtle as tu
tu.speed(10000)
for i in range(20):
col = random.randint(1, 5)
if (col == 1):
tu.pencolor('orange')
elif (col == 2):
tu.pencolor('blue')
elif (col == 3):
tu.pencolor('green')
elif (col == 4):
tu.pencolor('purple')
elif (col == 5):
tu.pencolor('dark blue')
else:
pass
tu.circle(50)
tu.left(20)
# 載入turtle模組
import turtle as tu
# 顯示畫布
tu.showturtle()
# 畫右半部直線
tu.color('blue')
tu.forward(150)
# 畫右半部的空心圓
tu.setheading(270)
tu.color('red')
tu.pensize(2)
tu.circle(50)
# 回到中心點
tu.pensize(1)
tu.color('blue')
tu.setheading(180)
tu.penup()
tu.forward(150)
tu.pendown()
# 畫左半部直線
tu.forward(150)
tu.setheading(90)
# 畫左半部空心圓
tu.color('red')
tu.pensize(2)
tu.circle(50)
tu.pensize(1)
# 回到中心點
tu.setheading(0)
tu.penup()
tu.forward(150)
# 畫中央實心三角形
tu.setheading(180)
tu.color('green')
tu.pendown()
tu.begin_fill()
tu.circle(50, 360, 3)
tu.end_fill()# turtle (海龜繪圖模組)