{Python}

2024/7/1 By.賴昱錡

讓你自我介紹一下~

(sorry 上次我的喇叭壞掉)

上次忘了

{Loop}

上次沒講清楚

i = 1
while i < 10:
	print(i)
    i = i + 1
# PRESENTING CODE

While Loops

只要 while 裡面的敘述為真,迴圈中的程式會一直執行下去

i = 1
while i < 10:
	print(i)
    if i == 5:
    	break
    i = i + 1
# PRESENTING CODE

break

即使迴圈條件仍然滿足,只要有 break

就能強制跳出迴圈

i = 0
while i < 10:
	i = i + 1
    if i == 5:
    	continue
    print(i)
# PRESENTING CODE

continue

透過 continue,可以跳過該"輪"迴圈

也就是 continue 後的程式不會被執行

i = 0
while i < 10:
	i = i + 1
    print(i)
else:
	print('i is no longer less than 10.')
# PRESENTING CODE

else

當敘述不再為真,會執行 else 裡頭的敘述

fruit = ['banana', 'apple', 'strawberry']
nums = [2, 5, 67, 89]
mix_list = [567, 'leon', 78.910] # 也可以放不一樣的類型
# PRESENTING CODE

先講 List (陣列?)

當我們想紀錄多個東西,不用設定大量的變數

只需要 List

 

BTW,List 是 0-base,也就是第1項的索引值 (index) 為 0 

fruit = ['banana', 'apple', 'strawberry', 'tangerine']
for i in fruit:
	print(i)
# PRESENTING CODE

For loops

message = "Never gonna give you up."
for i in message:
	print(i)
  • for 可以用來遍歷一個序列,不論是 List、字串、Set、Dictionary
  • i 的名稱隨你設,稱作 iterator
adj = ["red", "big", "tasty"]
fruits = ["apple", "banana", "cherry"]

for x in adj:
  for y in fruits:
    print(x, y)
# PRESENTING CODE

Nested Loop (巢狀迴圈):兩層以上

  1. x 跑到 "red",然後 y 跑過 fruit 的 3 項
  2. 以此類推
  3. 總共 print 了 3*3=9 次
for x in [1,3,5,7,99]:
	pass
# PRESENTING CODE

Pass

不做任何事,又不會報錯

{Function}

函式炸雞

什麼是函式 (Function)

By ChatGPT

def say_hello():
	print('Hello, Guten Tag.')

say_hello()
# PRESENTING CODE

宣告與使用

def say_hello(last_name):
	print('Hello, Guten Tag, ' + last_name)

say_hello("Emilia")
say_hello("Maxwell")
say_hello("hi")

# 上面會分別印出 Hello 和各函式包含的姓名
# PRESENTING CODE

參數 (argument)

def send_email(name, email):
	print('The email of ' + name + ' is ' + email)
    
send_email('Richard', 'richardlaiis@proton.me')
# PRESENTING CODE

numbers of arguments

如果我呼叫時,括號裡不只兩個參數,直譯器會報錯 :(

def my_function(*kids):
	print("The youngest child is " + kids[2])

my_function("Emil", "Tobias", "Linus")
# PRESENTING CODE

arbitrary arguments (任意參數)

這寫法也通常被簡稱為 *args

 

上面的範例程式會輸出 The youngest child is Linus

def bank_deposit(person1, person2, person3):
	print('Person3 has '+str(person3)+' dollars.')
	
bank_deposit(person3 = 500, person1 = 700, person2 = 300)
# PRESENTING CODE

keyword arguments

如果通過 = 指定各參數的值,即使不管順序也不會報錯

def my_function(**kid):
  print("His last name is " + kid["lname"])

my_function(fname = "Tobias", lname = "Refsnes")
# PRESENTING CODE

arbitrary keyword arguments

任意數量參數版本的 keyword arguments

 

上述範例程式會輸出 His last name is Refsnes

def show_country(country = 'Norway'):
	print('I\'m from ' + country)

show_country('Taiwan') # I'm from Taiwan
show_country('Japan') # I'm from Japan
show_country() # I'm from Norway
# PRESENTING CODE

default arguments (有預設值的函數)

先用等號指定 country 預設的值,若呼叫函式時未指定參數,則參數為預設值

補充:  ' 或 " 前必須加上 \ ,標示為跳脫字元直譯器才不會報錯

def show_country(country = 'Norway'):
	print('I\'m from ' + country)

show_country('Taiwan') # I'm from Taiwan
show_country('Japan') # I'm from Japan
show_country() # I'm from Norway
# PRESENTING CODE

default arguments (有預設值的函數)

先用等號指定 country 預設的值,若呼叫函式時未指定參數,則參數為預設值

補充:  ' 或 " 前必須加上 \ ,標示為跳脫字元直譯器才不會報錯

def doubleNum(x):
    return 2*x

print(doubleNum(7))
# PRESENTING CODE

回傳 (return values)

有點像是 f(x) 的概念,

\(f(x) = x^2+7x+9\)

\(則f(11)=?\)

def eat(food):
    for x in food:
        print('I like '+x)

uber_eat = ['hamburger', 'bread', 'ramen', 'Bubble tea', 'fried rice']
eat(uber_eat)

# I like hamburger
# I like bread
# I like ramen
# I like Bubble tea
# I like fried rice
# PRESENTING CODE

參數也可以是 List

# PRESENTING CODE

補充: 遞迴 (Recursion)

遞迴就是 在函數內使用到函數

雖然容易思考,但耗費的記憶體與時間也較多

# PRESENTING CODE

範例: 費氏數列

\(Definition:\\a_0=0\\a_1=1\\a_n=a_{n-1}+a_{n-2} \)

def fib_number(index):
    if index == 0 :
        return 0
    elif index == 1:
        return 1
    else:
        return fib_number(index-1) + fib_number(index-2)
        
x = int(input())
print(fib_number(x))
# PRESENTING CODE

補充: Lambda Function

當我們只有一行敘述,就用函式好像有點浪費吧?

# 語法: lambda arguments : expression
x = lambda a : a + 10
print(x(5)) # 15

x = lambda a, b, c : a + b + c
print(x(5, 6, 2)) # 13

{Math}

有趣的數論

# PRESENTING CODE

什麼是數論?

感謝 ChatGPT 今天幫我這麼多

總之數論是一門研究整數的學問

# PRESENTING CODE

什麼是同餘?

a \equiv b \mod{n}

當 a 和 b 除以 n 的餘數相同時,我們可以將這個關係表現成上面的式子,例如:

13 \equiv 8 \mod{5}
19 \equiv -1 \mod{20}

餘數也可以是負數?

# PRESENTING CODE

性質

# PRESENTING CODE

補充: 費馬小定理

費馬小定理可以濃縮成以下幾行:

  •  若 \( p \) 是質數,且 \( a \) 是一個不被 \( p \) 整除的整數,則: \[\\ a^{p-1} \equiv 1 \pmod{p} \]

  • 更一般地,對於任何整數 \( a \):\[ a^p \equiv a \pmod{p} \]

a 和 p 互質

# PRESENTING CODE

補充: 尤拉函數

p 是 n 的每個質因數

\(\phi(n)\)是小於等於n,與n互質之數的數目

{List}

當我們想要紀錄更多樣東西

{Container}

n. 容器

Python 還有一些和 List 很像,但用途不大一樣

可以儲存資訊的 "容器"

{String}

深入字串

{Dict}

用來紀錄成對的資訊

{Module}

模組

Resource

Made with Slides.com