python裡面的自定義函式及其呼叫

2021-10-06 23:30:26 字數 4223 閱讀 6078

python學習的第六天

什麼是函式呢?比如【print()】輸出函式,【str()】等型別轉換函式等等計算機根據我們下達的指令在底層一定是進行了一系列的運算和操作,最終輸出了括號裡面的資料。

而這底層的一些列操作其實就是被封裝成了乙個函式,print就是這個函式的名字,而我們只需要編寫print這個指令,計算機底層就會執行這些操作。其實在生活中,函式無處不在。

比如:當你餓了的時候,喊了一嗓子:"媽,我餓了,給我做個飯吧!"這就是非常典型的「函式的呼叫」。媽媽是提供了做飯的函式,而我們呼叫了這個函式。而做飯的這個函式其實就是一系列加油鹽,翻炒動作的封裝。

?總結:所以函式本質上就是為了完成某個會重複使用的特定功能而定義的一些列動作的集合。

?總結 :使用函式的好處

? 1.避免**的冗餘

? 2.讓程式**結構更加清晰

? 3.讓**具有復用性,便於維護

乙個函式由【def】,【函式名】,【引數】,【函式體】,【return語句】組成。

【def】是固定寫法,不用管。【函式名】是自定義的,寫函式名的時候見名知意就好。【函式體】就是這個函式具體的執行步驟。【return語句】和【引數】我們放到後面說。

我們定義健康和身高體重之間的關係為:健康係數 = 體重(kg)/身高(m)^2

⚠️注意: ^2這裡指平方的意思

如果 0 < 健康係數 < 18.5 偏瘦,需要適當增肥。如果 18.5 < 健康係數 < 25 正常非常健康。如果25 < 健康係數 < 30 偏胖,需要適當**。如果30 < 健康係數 < 35 中胖 ,加強每日運動量!如果健康係數》 35 太胖,急需**降重!

# 第一步:定義函式名稱為healthy

defhealthy()

:#第二步 :使用input函式接收使用者輸入的身高體重資訊

height =

input

('輸入你的身高(m):'

) width =

input

('輸入你的體重(kg):'

)#第三步 :利用計算公式計算健康係數,健康係數 = 體重(kg)/身高(m)^2

#此處需要注意,從input接收到的資料是str型別,需要做型別轉換

core =

float

(width)

/float

(height)**2

#第四步 :利用if...elif...;來進行多條件判斷

if core <

18.5

:#輸出資訊

print

('您的健康係數為'

+str

(core)

+';體質偏瘦,需要增肥!'

)elif core <25:

print

('您的健康係數為'

+str

(core)

+';體質正常,再接再厲!'

)elif core <30:

print

('您的健康係數為'

+str

(core)

+';體質偏胖,需要**!'

)elif core <35:

print

('您的健康係數為'

+str

(core)

+';體質中胖,急需**!'

)else

:print

('您的健康係數為'

+str

(core)

+';體質太胖,再不**就沒命了!'

)

# 第一步:定義函式名稱為healthy

defhealthy()

:#第二步 :使用input函式接收使用者輸入的身高體重資訊

height =

input

('輸入你的身高(m):'

) width =

input

('輸入你的體重(kg):'

)#第三步 :利用計算公式計算健康係數,健康係數 = 體重(kg)/身高(m)^2

#此處需要注意,從input接收到的資料是str型別,需要做型別轉換

core =

float

(width)

/float

(height)**2

#第四步 :利用if...elif...;來進行多條件判斷

if core <

18.5

:#輸出資訊

print

('您的健康係數為'

+str

(core)

+';體質偏瘦,需要增肥!'

)elif core <25:

print

('您的健康係數為'

+str

(core)

+';體質正常,再接再厲!'

)elif core <30:

print

('您的健康係數為'

+str

(core)

+';體質偏胖,需要**!'

)elif core <35:

print

('您的健康係數為'

+str

(core)

+';體質中胖,急需**!'

)else

:print

('您的健康係數為'

+str

(core)

+';體質太胖,再不**就沒命了!'

)#此處呼叫函式,注意縮排

healthy(

)

【引數】寫在函式名稱後面的括號中。乙個函式可以定義乙個引數,也可以有多個引數,多個引數之間用逗號隔開,引數的名稱是自定義,命名規則和變數命名規則一致。

引數具體的應用在什麼地方呢?我們之前講過,如果你喊了一句 「媽媽,我餓了,給我做飯」,這是呼叫了媽媽做飯的這個函式。但是如果你是這樣喊的 「媽媽,我餓了,給我做飯,加個雞蛋」

# 定義cook函式並寫入引數

defcook

(food)

:#輸出

print

('媽媽現在正在處理'

+food)

#函式呼叫

#需要注意,如果函式有引數,呼叫函式的時候,必須提供對應的引數

cook(

'雞腿?'

)

程式執行的過程是,首先cook(『雞腿?』)呼叫了cook這個函式,cook這個函式便開始執行了,同時雞腿?也被當做引數傳遞進入cook函式,也就是food=雞腿?。

cook函式執行後,函式裡面呼叫了print函式。print函式括號裡完成了字串 『媽媽正在處理』和引數food的拼接,此時food=雞腿?,所以終端最終輸出的結果是 『媽媽正在處理雞腿?』。

當我們在呼叫函式的時候,改變了傳遞的引數,那麼food就會被賦值不同的值,從而終端也會輸出不同的結果了?

題目要求

喵醬最近很寂寞,想結交幾個朋友,已知喵醬的精力是有限的,每天最多結交10個朋友,但是最少要結交1個朋友。

請你定義乙個函式來決定喵醬總共交了幾天朋友,每天結交了多少個朋友,並且總共結交了多少個朋友。

2做法講解

1.定義函式cat_friend,接收乙個引數num來確定喵醬結交了幾天朋友;

2.定義喵醬總的朋友數all_friends,最開始為0個;

3.迴圈num讓喵醬每天結交朋友;

4.random.randint(1, 10)實現喵醬每天隨機結交1-10個朋友,並列印每天結交的朋友數;

5.all_friends將每天結交的朋友數的和記錄下來,並列印總共結交的朋友數;

6.呼叫函式傳入結交朋友的天數。

# 這裡輸入**哦

import random

defmakefriend

(num)

: all_friends =

0for i in

range

(num)

: friend = random.randint(1,

10)print

('每天結交'

+str

(friend)

+'個朋友'

) all_friends+=friend

print

('總共結交了'

+str

(all_friends)

+'個朋友'

)makefriend(

10)

彩票案例 自定義裡面的button

小問題 當替換之後,自定義裡面的button已經改變,但是沒有改變高亮的時候的陰影,怎麼處理?原來是在button在高亮的時候做了複雜處理,而我們需要做的就是重新繼承,重寫這個方法 void sethighlighted bool highlighted方法重寫,然後不呼叫父類的方法 import ...

Python自定義函式

可選引數是python的乙個特性,顧名思義就是這個引數是可有可沒有的。如果你學過其他的語言,那麼你會很清楚明白他的不同點的。def fun n,m 1 s 1for i in range 1 n 1 s i return s m m就是可選引數,如果在呼叫他的時候不給m就預設為1 eg1 fun 1...

python自定義函式

在python中有一種自定義函式為匿名函式,可以用lambda關鍵字定義。通過lambda構造的函式可以沒有名稱,最大的特點是在自定義匿名函式時所有 只能在一行內完成,語法如下 lambda parameters function expressionlambda為匿名函式的關鍵起始詞 parame...