小甲魚python零基礎018函式 靈活即強大

2021-09-10 15:43:28 字數 3970 閱讀 2226

0.請問以下哪個是形參哪個是實參?

def myfun(x):

return x ** 3

y = 3

print(myfun(y))

1. 函式文件和直接用「#」為函式寫注釋有什麼不同?

2. 使用關鍵字引數,可以有效避免什麼問題的出現呢?

3. 使用help(print)檢視print()這個bif有哪些預設引數?分別起到什麼作用?

4. 預設引數和關鍵字引數表面最大的區別是什麼?

0. 編寫乙個符合以下要求的函式:

a) 計算列印所有引數的和乘以基數(base=3)的結果

b) 如果引數中最後乙個引數為(base=5),則設定基數為5,基數不參與求和計算。

1. 尋找水仙花數

題目要求:如果乙個3位數等於其各位數字的立方和,則稱這個數為水仙花數。例如153 = 13+53+3^3,因此153是乙個水仙花數。編寫乙個程式,找出所有的水仙花數。

2. 編寫乙個函式findstr(),該函式統計乙個長度為2的子字串在另乙個字串**現的次數。例如:假定輸入的字串為"you cannot improve your past, but you can improve your future. once time is wasted, life is wasted.",子字串為"im",函式執行後列印「子字母串在目標字串中共出現3次」。

3.請寫下這一節課你學習到的內容:格式不限,回憶並複述是加強記憶的好方式!

0. x是形參,y是實參。

1. 函式文件是函式的說明檔案,需要利用函式特殊屬性檢視形式(比如myfirstfunction.__doc__)才看得到。另外,用help(myfirstfunction)也可檢視該函式。直接用#注釋只有開啟源程式才看得到,不會輸出到螢幕。

2. 使用關鍵字引數可有效避免呼叫函式時輸入錯誤的引數順序。

3. print()中的引數如下:

print(*values, sep=' ', end='\n', file=sys.stdout, flush=false)

各個引數的作用是:

*values

表示要列印的值 。

表示任何多個無名引數, 各個值之間用『,』(逗號隔開),列印出來各個值之間用空格隔開 

sep表示當輸入多個列印的值時,各個值之間分割方式, 預設空格,可以自定義

>>> print('a', 'b', 'c')

輸出為: a b c (中間預設用空格隔開)

當設定sep = 『\n』時上面**結果為:ab

cend

控制print中傳入值輸出完後結束符號,預設換行,這裡可以設定為其他,如 『\t』, 』 』 等等, 可以自己定義

print('python') print('is good') 輸出為: python is good 預設換行,

如果設定:end=' ' print('python', end=' ') print('is good') 則輸出為: python is good 一行

file=sys.stdout

設定輸出裝置,及把print中的值列印到什麼地方,預設輸出到準端,可以設定file= 檔案儲存物件,把內容存到該檔案中

f = open(r'a.txt', 'w') print('python is good', file=f) f.close() 則把python is good儲存到 a.txt 檔案中

flush=false

該引數主要是重新整理, 預設false,不重新整理,ture時重新整理

在file=sys.stdout的例子中,f = open(r'a.txt', 'w') print('python is good', file=f, flush=true)

正常情況下print到f中的內容先從到記憶體中,當檔案物件關閉時才把內容輸出到 a.txt 中,當flush=true時它會立即把內容重新整理存到 a.txt 中

4. 預設引數是給關鍵字賦了值,關鍵字引數沒有賦值。

二、0. 程式如下

>>> def myfun(*params,base=3):

result = base

for i in params:

result = result*i

return result

>>> myfun(2,3,4)

72>>> myfun(2,3,4,base = 5)

120

1. 程式如下:

>>> def daffodil(i = 100):

print('所有水仙花數為:')

while i < 1000:

i1 = i//100

i2 = i%100//10

i3 = i%100%10

i1 = i1**3

i2 = i2**3

i3 = i3**3

if i == (i1+i2+i3):

print(i,end=' ')

i += 1

else:

i += 1

continue

>>> daffodil()

所有水仙花數為:

153 370 371 407

3. 程式如下:

>>> def findstr(str1,subs):

times = 0

sat = 0

lenth1 = len(str1)

lenth2 = len(subs)

while (str1.find(subs,sat)) != -1 and (sat <= lenth1): #之前的程式執行不出來的原因是沒有加上(sat <= lenth1)

sat = str1.find(subs,sat) + lenth2

times += 1

print('子字母串在目標字串中共出現',times,'次')

#本程式的基本思路是:利用字串的內建方法find來尋找子字串的位置,根據find的特點:返回最近的子字串的第乙個位置的位置 。先在全部字段定址,然後把前乙個找到的位址掐掉(加上子字串的長度),在新的位置開始繼續定址。即每次縮小find的範圍來尋找子字串,每找到一次,計數變數times就記一次數。

結果:>>> findstr('you cannot improve your past, but you can improve your future. once time is wasted, life is wasted.','im')

子字母串在目標字串中共出現 3 次

>>> findstr('sdkjfh','d')

子字母串在目標字串中共出現 1 次

>>> findstr('各個國家有各個國家的國歌,我的國家是中國,歡迎來到我的國家做客,中國歡迎你!','國家')

子字母串在目標字串中共出現 4 次

4. 課堂重點:

def myfun(name, words):

《執行語句》

呼叫 myfun(a, b) 等價於myfun(name=a, words=b)

比如:

>>> def test(*params,extra):

print("收集引數是:",params)

print("位置引數是:",extra)

>>> test(1, 2, 3, 4, 5, 6, 7, extra = 8)

收集引數是: (1, 2, 3, 4, 5, 6, 7)

位置引數是: 8

小甲魚python零基礎入門 學習筆記 元組

簡單來說 元組就是不能修改值的列表,即不可變的列表。如果需要儲存的一組值在程式的整個生命週期內不變,可使用元組。元組與列表在 上的區別 元組的定義用 型別是tuple 列表的定義用,型別是list name list peter william jack tom alice jim type nam...

小甲魚零基礎彙編 基礎知識01

組合語言是直接在硬體之上工作的程式語言,首先要了解硬體系統的結構,才能有效的應用組合語言對其程式設計。在本章中,對硬體系統結構的問題進行一部分的 以使後續的課程在乙個好的基礎上進行。當課程進行到需要補充新的基礎知識 關於程式設計結構或其他的 時候,再對相關的基礎知識進行介紹和 本書的原則是,以後用到...

小甲魚零基礎入門學python 學習總結之集合

一 集合的建立 class set iterable class frozenset iterable 注 通過frozenset 建立的集合是不可變的。返回乙個新的 set 或 frozenset 物件,其元素來自於 iterable。集合的元素必須為 hashable。要表示由集合物件構成的集合...