iT邦幫忙

2023 iThome 鐵人賽

DAY 22
0
自我挑戰組

待業不頹廢系列 第 22

Day 22 . 欸 今天要幹嘛 - 一些基礎的 python

  • 分享至 

  • xImage
  •  

未完待續

行前提要

首先 函數的概念簡單來說就是 有括弧()
再來 可以分為 內建函數 跟 自訂函數

內建函數就不多贅述,內建代表可以直接使用

來說說自訂函數吧

自訂函數

因為是自己建立的,必須要先'宣告',才可以進行呼叫使用

我們常常看到的 def 就是在作方法的宣告設定
在提醒一次,只是在配置方法,並不會有動作
要呼叫方法,才會有使用的動作!

例如下方程式碼
首先 看到有一個自訂方法 sayhello()
透過 def 宣告這個方法
內容我們縮排,內容這裡簡單寫 print 出$@%$#^$%&這樣
這樣就完成方法配置,沒有呼叫 就不會有動作!

一直到下面出現 sayhello(),呼叫動作才會被使用

要呼叫成功有幾個條件

  • 首先函數名字要一樣 這裡的話就是 sayhello() 英文都要一模一樣
  • 括弧裡面的"個數" 要一樣
    -- 假設遇到個數不一樣 例如:參數2個 引數3個,那就部會跑,會輸錯 (除非有預設引數,下面會提到)
    -- 如果是參數引數型態不一樣,也不用緊張,呼叫一樣可以進行,出錯會在方法內部也許會因為型態不同無法進行,像是方法內是要計算,但引數提供的卻是字串之類的
def sayhello():
    print('hello')
    print('早安安安')
sayhello()

def CtoF1(degreeC):
    degreeF = degreeC * 1.8 + 32
    print('攝氏', degreeC, '度可以轉換華氏', degreeF, '度')

temperatureC = eval(input('請輸入攝氏溫度 :'))
CtoF1(temperatureC)

參數(Parameter)、引數(Argument)

用溫度轉換為例子

  • def CtoF1(degreeC): 這個(degreeC)就是參數
  • CtoF1(temperatureC) 這個 (temperatureC) 這個則是引數,引導資料給參數的 = 引數

def CtoF1(degreeC):
    degreeF = degreeC * 1.8 + 32
    print('攝氏', degreeC, '度可以轉換華氏', degreeF, '度')

temperatureC = eval(input('請輸入攝氏溫度 :'))
CtoF1(temperatureC)

預設值引數值

RRRRRRRRRRRRRRRR

def teatime(dessert,drink = '紅茶'):
    print('我的甜點:',dessert,'+飲料:',drink, sep = "")
    
teatime('馬卡龍','咖啡')
teatime('帕尼尼')

# 想改變順序 全部都抓下來寫
teatime(drink = '奶茶', dessert = '三明治')

# 不好的示範
teatime('紅豆餅', drink ='綠茶')

全域變數、區域變數

首先變數 會有範圍 (Scope)

家裡有的 就是區域 家裡就先用 沒有才可以去找外面
外面沒有就沒有 不能往別人家偷拿 找不到就是 NameError : not defined
※ 除非 ! 使用return ,把區域拿去全域使用,後念在來說說如何使用 函數回傳值
簡單例子:

練習I

x = 100

def test():
    print(x)
test()
>>> 
100

練習II

x = 100

def test():
    x = 200
    print(x)
    
test()
print(x)

>>> 
200
100

最後一題

函數回傳值 return

下圖可以看到
一開始是方法的配置
內容沒有 print 而是 return XXX , XXX

而外面在呼叫函數 cal(120,7) 引數符合我們參數的 cal(x,y)
允許他被呼叫,世說前面還出現 a , b = cal(120,7)

兩個數字被帶進去方法跑到 return 會是 div = 17 mod = 1

誰呼叫 函數就回去找誰 a , b = cal(120,7) 呼叫的
那 a , b 就會是 a , b = 17 , 1

附上講義文字定義

課堂練習

def compute(x,y):
    result = x * y
    return result
x,y = eval(input('請輸入任意兩組數字,用逗號隔開 :'))

result = compute(x,y)
print('相乘為',result)

看看別人寫的

def compute():
    x=eval(input())
    y=eval(input())
    z=x*y
    return z
v=compute()
print(v)

練習題總結 我要一航打完兩組數字但是題目顯示為兩次的輸入
修改如下

x = eval(input('請輸入數字 :'))
y = eval(input('請輸入數字 :'))

def compute(x,y):
    result = x * y
    return result

result = compute(x,y)
print('相乘為',result)

請輸入數字 :11
請輸入數字 :56
相乘為 616


上一篇
Day 21 . 欸 今天要幹嘛 - 一些基礎的 python
下一篇
Day 23 . 欸 今天要幹嘛 - 一些基礎的 python
系列文
待業不頹廢30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言