我的 python 筆記與練習範例
這篇是流浪貓自學 Python 的筆記,內容將不依篇章或難度排序,只會列出重點和提示。
PyCharm 選取程式碼轉換、反轉註解
ctrl + /
Print 字串內執行變數
於引號前加上 f,內部以 {} 引用變數或運算數值。
print(f"我是字串,這樣{變數}引用")
用 [ ] 符號取出字串或 list 位數
由於 Python 位數計算是從零開始,若輸入數值為三,對 Python 來說會是『0, 1, 2, 3』共四位。
例: 輸入文字:流浪貓的電腦筆記本 取出位數:3
對人類來說,第三位文字是『貓』,但對 Python 來說卻是『的』,因此輸出 (Print) 時記得減一。
rand = str(input("輸入文字:"))
tact = int(input("取出位數:"))
print(rand[tact-1])
轉換資料型態 (str 與 int)
紀錄資料或進行數學運算時,必須要注意它的型態 (Type)。例如於 input 前加上 str() 或 int() 強制它使用文字或整數型態,而數字加底線分段不會影響運算。
te_1 = str(input("輸入文字:"))
te_2 = int(input("輸入數值:"))
print(f"{te_1} 是 {type(te_1)}、而 {te_2} 是 {type(te_2)}")
print("超爽的撿到" + str(1_000_000))
符號 = 與 == 和 != 的差異
等號為指定變數的符號,例如讓 A 等於 369 或讓 B 等於輸入的文字。而雙等號為邏輯判斷符號,例如『若 B 相同為 3 則執行程式』。驚嘆號與等號則是用來表示『若不相等』的狀態。翠祈
== 完全相同
!= 不等於
B = int(input("輸入數字:"))
if B != 3:
print(f"{B} 不是 3")
else:
print(f"{B} 是 3")
數學符號
用雙星號來進行次方運算;用 // 和 % 與 divmod 取餘數。
num_2 = 3
num_2 **= 4
print(num_2)
print(3 ** 4)
自我介紹產生器
用引號 " 來表示內容為文字;用 + 號來連接前後變數。
name_1 = input("請輸入姓名:")
age_1 = input("請輸入年齡:")
hobby_1 = input("請輸入興趣:")
intro_1 = "大家好,我是" + name_1 + ",今年" + age_1 + "歲,最喜歡" + hobby_1 + ",很高興認識大家。"
print(intro_1)
報名與人數限制
用 count 來計數,以 if 來判斷何時終止計算。由於 Python 是從零開始,因此記得要加上 1 以符合人類計數習慣。
用 Python 來計算位數時,謹記『取出減一、顯示加一』原則。人類輸入數值讓 Python 取出位數時要減一;要讓 Python 顯示它所選擇的數值時,記得加一。
inp_num = int(input("總人數?:"))
liml = int(input("人數限制?"))
print(f"報名人數有 {inp_num} 人")
count = 0
for i in range(inp_num):
if count == liml:
print("爆棚,不計啦!")
count = 0
exit()
else:
print(f"我是{i+1}號")
count += 1
exit()
BMI 計算機
用 round 將結果四捨五入。
height = float(input("幾公分高啦你?\n"))
weight = float(input("幾公斤重啦你?\n"))
height /= 100
BMI = weight / height ** 2
BMI = round(BMI, 1)
if BMI < 18.5:
print(f"你的 BMI 值是 {BMI},過輕!")
elif BMI < 24:
print(f"你的 BMI 值是 {BMI},正常!")
elif BMI < 27:
print(f"你的 BMI 值是 {BMI},過重!")
elif BMI < 30:
print(f"你的 BMI 值是 {BMI},太重!")
elif BMI < 35:
print(f"你的 BMI 值是 {BMI},超重!")
else:
print(f"你的 BMI 值是 {BMI},肥豬!")
隨機抽獎
輸入最大、最小值與數量後,以每五位為一列輸出隨選結果
import random
ma = int(input("最大數值:"))
mi = int(input("最小數值:"))
rg = int(input("數量:"))
count = 1
for i in range(rg):
ra = random.randint(mi, ma)
if count == 5:
print(ra, end=", \n")
count = 1
else:
print(ra, end=", ")
count += 1
exit(":D")
換行與不換行
於 print 加入 end=', ' 讓輸出結果緊鄰 (join) 上一位,加入 \n 強制換行。
for i in range(0, 5):
print(i)
for i in range(0, 5):
print(i, end=', ')
0
1
2
3
4
0, 1, 2, 3, 4,
列表加入列表
使用 append() 函數來加入列表,實際運用可參考下一則範例。
a = ["suv", "banana", "kkknd"]
b = ["omg", "tank", "vivaldi"]
a.append(b)
參賽者輸入器與選擇隊長
自訂參戰人數與輸入姓名,最後讓電腦選擇其中一位當隊長,注意 list 溢位問題。
# 自訂參戰人數,輸入姓名之後,讓電腦選擇隊長。
import random
lit = []
inp_num = int(input("參加人數?"))
for i in range(0, inp_num):
to_list = str(input(f"參賽者 {i+1} 號:"))
lit.append(to_list)
print(f"\n有 {len(lit)} 人要參加比賽。\n")
# 列出所有參賽者,三人自動換行。
count = 0
for i in range(len(lit)):
if count == 2:
print(lit[i], end=',\n')
count = 0
else:
print(lit[i], end=", ")
count += 1
# 電腦選的燉花生!為避免 lit[ai_ch] 資料溢位,函數請減 1,因為 Python 是從 0 開始
# [a, b, c,] 項目為 0, 1, 2, 計量 count = 3
# 例:參加人數=1 ,產生的列表內容只有一個成員,因此列表的起始項目為 0 list[0] 計量為 1
# random.randint(1, len(lit)) 就會變成 (1, 1),僅在 1 與 1 之間選出 1。
# 要選出隊長則減 1,讓「計量」轉為「項目」選擇。
ai_ch = random.randint(1, len(lit))
print(f"\n \n電腦選擇了 {ai_ch} 號參賽者「{lit[ai_ch-1]}」為隊長!")
打東東計算機
inp_num = int(input("要打幾次?"))
for i in range(inp_num):
print(f"東東被打了 {i+1} 次")
九九乘法
for i in range(1, 10):
for j in range(1, 10):
if j == 9:
print("\t", i*j) # 當j等於9的時候換行
else:
print("\t", i*j, end = '') # j小於9不換
i = 5
for j in range(1, 5):
print(i*j)
5
10
15
20
抉擇困難:將輸入函數插入字典
import random
dic = [input("選擇一:"), input("選擇二:"), input("選擇三:")]
ai_ch = random.randint(0, 2)
print(f"電腦醬選擇了{ai_ch+1}")
print(dic[ai_ch])
無限的輸入框,按 q 結束程式
設定變數 choice 與輸入框,當輸入內容非 q ( != ) 的時候,執行以下內容: choice 等於 1 ,執行你輸入一幹嘛?,以此類推。當輸入內容非 q 和 1、2、3 時,顯示人生毫無意義,並在 else 加上 choice 輸入框,避免不斷顯示。當 while 輸入內容為 q 的時,執行你選擇 q 放棄人生
choice = input("衝殺毀? (輸入 q 啟動自爆程式):")
while choice != 'q':
if choice == '1':
print("你輸入一幹嘛?")
elif choice == '2':
print("選擇二有差嗎?")
elif choice == '3':
print("撞牆吧你!")
else:
print("人生毫無意義")
choice = input("再給你一次機會 (輸入 q 啟動自爆程式):")
print("你選擇 q 放棄人生")
Python 除法、取整數、顯示資料類型、平方、取餘數
print(5 / 3)
# 取出餘數
print(5 % 3)
print(type(4/2))
<class 'float'>
print(type(4//2))
<class 'int'>
# 乘法與次方
print(4*3)
12
print(4**3)
64
n = int(input("輸入數字:"))
lst = list()
for i in range(1, n+1):
lst = lst + [i**2]
print(lst)
輸入數字:10
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
延伸閱讀
用 ImageJ 自動化腳本,將圈選的地物目標批次儲存成樣本圖片 (ROI)
用 JavaScript 修改 Blogger 網站上的 IPFS 圖片閘道器位置 (Gateway)