liftleaf
"I want you to name it, I do"
Lesson 2
流程控制
Lecturer: 立葉
運算子
加加減減乘乘除除模模
| 運算子 | 意義 | 舉例 | 結果 |
|---|---|---|---|
| + | 加 | 5+2 | 7 |
| - | 減 | 5-2 | 3 |
| * | 乘 | 5*2 | 10 |
| ** | 次方 | 5**2 | 25 |
| / | 浮點除法 | 5/2 | 2.5 |
| // | 整數除法 | 5//2 | 2 |
| % | 模(取餘數) | 5%2 | 1 |
顯然只有我能偷暑訓簡報吧,乘一你沒機會
窩想讓程式看起來更簡潔
| 複合指定運算子 | 舉例 | 改寫 |
|---|---|---|
| += | a=a+2 | a+=2 |
| -= | a=a-2 | a-=2 |
| * | a=a*2 | a*=2 |
| ** | a=a**2 | a**2 |
| / | a=a/2 | a/=2 |
| // | a=a//2 | a//=2 |
| % | a=a%2 | a%=2 |
比較運算子
| 運算子 | 舉例 | 意義 |
|---|---|---|
| < | 5<2 | 5是否小於2 |
| > | 5>2 | 5是否大於2 |
| <= | 5<=2 | 5是否小於等於2 |
| >= | 5>=2 | 5是否小於等於2 |
| == | 5==2 | 5是否等於2 |
| != | 5!=2 | 5是否不等於2 |
回傳一個布林值(True/False)!
邏輯運算子
| 運算子 | 意義 |
|---|---|
| and | 且 |
| or | 或 |
| not | 否 |
回傳一個布林值(True/False)!
真真甲甲
| A | B | A and B | A or B |
|---|---|---|---|
| True | True | True | True |
| True | False | False | True |
| False | True | False | True |
| False | False | False | False |
小小小小小補充
python 的 pow()函數
print(pow(5,3))
#125print(pow(5,3,11))
#4上次課程的小補丁<3
eval() 函數
a = eval('1')
b = eval('0.1')
print(a, type(a))
print(b, type(b))
'''
1 <class 'int'>
0.1 <class 'float'>
'''有關 eval() 更進階的用法(?
print(eval("5*(3+2)"))
'''
25
'''print(eval("print(\"hello world!\")"))
'''
hello world!
None
'''於是,zj a017 就這麼被破解了
用 C++ 寫出這題和用 python 寫出這題的兩種人
實力相差是很大的w
print(eval(input()))但其實只寫這樣不會過w
有興趣可以自己想想看原因
條件敘述if
if
格式:
if 條件為True:
要執行的程式範例:
a = input("你的國文答案卡有沒有寫名字? 沒有的話請打n\n")
if a == 'n':
print("扣10分哈哈哈哈哈")順帶提一下縮排
if 條件為True:
#我在if條件式裡面
#我不在if條件式裡面python 非常重視縮排!
這會關係到電腦判斷該行程式有沒有在那個函式裡面
if...else...
格式:
if 條件為True:
要執行的程式
else:
條件為False時要執行的程式範例:
a = input("你的國文答案卡有沒有寫名字? 沒有的話請打n\n")
if a == 'y':
print("好吧不會被扣冤枉分數了隨便你啊就這樣吧")
else :
print("我覺得你要被扣分了啦哈哈哈哈哈")if...elif...else...
格式:
if 條件式1為True:
要執行的程式
elif 條件式2為True:
要執行的程式
else:
以上條件式皆為False時要執行的程式範例:
a = input("你的國文答案卡有沒有寫名字? 沒有的話請打n\n")
if a == 'y':
print("好吧不會被扣冤枉分數了隨便你啊就這樣吧")
elif a == 'n':
print("我覺得你要被扣分了啦哈哈哈哈哈")
else:
print("我怎麼聽不懂你在說什麼")巢狀if
n = input("你是不是穿便服? y/n")
if n == 'y':
a = input("你有帶學生證嗎? y/n")
if a == 'y':
print("好吧姑且放過你一馬")
elif a == 'n':
print("來,愛校服務一支")
elif n == 'n' :
print("同學早安")
else:
print("蛤你說什麼")例題時間
先寫一下這三題ㄅ~
迴圈
while 迴圈
格式:
while 條件式為True:
要執行的程式範例:
i = 0
while i<5:
print(i)
i+=1;for 迴圈
格式:
for i in range():
要執行的程式其中 range() 裡面要放的咚咚可以是:
for 迴圈
又或是... 也可以放一個 字串 或 串列 來掃描!
別急 下次會教
a = ['ckefgisc', 2728]
for i in a:
print("hey", i)
#hey ckefgisc
#hey 2728單行ㄉ for 迴圈!
num_list = [i**3 for i in range(1,6)]
for i in num_list:
print(i,end=' ')
# 1 8 27 64 125這已經是我第三次講無限迴圈ㄌ
while True:
print("I want to skip English class")這個條件不會變成 False
所以它會不斷地進入迴圈
迴圈控制
for i in range(0,10,1):
if i==5: break
else: print(i)for i in range(0,10,1):
if i==5: continue
else: print(i)巢狀迴圈
for i in range(2):
for j in range(3):
print("*",end='')
print()
'''
***
***
'''for i in range(1,4):
for j in range(0,i):
print("*",end='')
print()
'''
*
**
***
'''來註冊 Project Euler~
\(times (sin^2 \theta + cos^2 \theta)\) 和 \( green house vegetable\) 推薦ㄉ
來註冊 Project Euler~
Problem 1
找出所有小於1000,且為3或5的倍數的數字總合!
好了的話 problem 2-9 也都殼以是是看!
或是你想寫 zerojudge ㄉ題目也行
EOF 處理
測資的重複輸入... what's that?
while True:
a = int(input())
if a==0:
#假設今天指定輸入0作為重複輸入的終結
break如果是第二種:
如果是第一種的話那怎麼辦ㄋ
例外處理
當我們的程式遇到了錯誤,程式就不能跑ㄌ... 例如:
a = "hello"
b = 1
print(a+b)
#把型別不同的變數並列在一起ㄌprint(6/0)
#除以0無意義
#幸好沒有造成傷亡例外處理
為了避免程式遇到錯誤就直接停止運行,
我們可以運用下面的咚咚來進行例外處理:
try:
'''要保護的程式碼'''
except:
'''程式碼有錯誤的時候要做什麼'''pass:放在except下面,代表略過,什麼事都不做
例外處理
像~醬:
try:
a = "hello"
b = 1
print(a+b)
except:
passtry:
a = int(input())
b = int(input())
print(a//b)
except:
print("Oooooops, looks like something has gone wrong!")我想介紹例外處理的真正目的
-- 來處理EOF !
while True:
try:
'''你要重複執行的程式'''
except EOFError:
break你學廢了嗎
例題時間
話不多說,馬上來練習一題
EOF 的題目
match case
python 3.10 ㄉ新功能!
在 repl.it 上記得要選 Python 3.10 的ㄛㄛㄛ
範例 - 1
n = input("輸入一個科目代碼: ")
match n:
case '010':
print("Chinese")
case '020':
print("English")
case '030':
print("Math")
case other: #case _:
print("我懶得列出來剩下ㄉ")n = input()
if n=='010':
print("Chinese")
else if n=='020':
print("English")
else if n=='030':
print("Math")
else:
print("我懶得列出來剩下ㄉ")範例 - 2
score = int(input("來猜我的歷史成績: "))
match score:
case score if score%2==1:
print("歷史一題兩分欸拜託")
case score if score>90:
print("那是 Ivan Lo 欸,顯然不是我")
case 74 | 76:
print("你怎麼猜到的")
case score if score>60:
print("好欸歷史及格ㄌ")
case _:
print("哭ㄌ")
補充資料 (蛤
match case 可以算是看似直覺...
實則很深奧的一個函式
每日宣傳秋遊(1/1) 🥳
By liftleaf