python 函式使用 三

2022-09-10 09:48:21 字數 3960 閱讀 2367

目錄

函式在執行過程中,直接或間接呼叫了自身

# 官網表示:python預設的最大遞迴深度為1000次

# import sys

# print(sys.getrecursionlimit()) # 檢視當前遞迴最大深度

# print(sys.setrecursionlimit(2000)) # 修改遞迴最大深度

# 無限自己呼叫自己,但是python限制了次數

# 無用遞迴1:

count = 1

def index():

global count

count += 1

print(count)

print('from index')

index()

index()

# 無用遞迴2:

def func():

print('from func')

index()

def index():

print('from index')

func()

index() # 兩個函式互相呼叫

遞迴使用

1.遞推:一層層往下推導,每次往下推會相對於上一次復制度一定要有所下降

2.回溯:依據最後的結論往上推導出最初的答案

3.遞迴一定要有結束條件

'''偽**:可能無法執行,但是可以表述邏輯

'''# 不列印列表,只列印數字

l1 = [1,[2,[3,[4,[5,[6,[7,[8,[9,[10,[11,[12,[13,[14,]]]]]]]]]]]]]]

def func1(l1):

for i in l1:

if type(i) is int:

print(i)

else:

func1(i)

func1(l1)

# 實現階乘

def factorial(n):

if n == 1:

return 1

else:

res = n*factorial(n-1)

return res

print(factorial(4)) # 24

# 在列表中查出指定數字

# 第一種方法 直接用for迴圈從左往右依次查詢

# 第二種使用二分法,二分法使用前提資料集必須有序

num = 567

l2 = [1, 11, 23, 43, 44, 57, 68, 76, 81, 99, 123, 222, 321, 432, 444, 567, 666, 712, 899, 999, 1111]

def get_num(num, l2):

if len(l2) == 0: # 列表中沒有這個數

return

sli_num = len(l2) // 2 # 先從中間獲取位置索引值

if num > l2[sli_num]: # 與列表中間的值做對比

r_list = l2[sli_num + 1:] # 如果大於中間值,擷取優化右邊為新列表

print(r_list)

get_num(num, r_list) # 重新走到這個函式

elif num < l2[sli_num]: # 如果小於中間值,目標值就在左邊

l_list = l2[:sli_num] # 將左邊記錄為新列表

print(l_list)

get_num(num, l_list) # 繼續走到這個函式

else:

print(num) # 剛好等於中間值的情況

get_num(444, l2)

1.當功能需求僅僅是二選一的情況下 那麼推薦使用三元表示式

# 常規使用時

def max_num(a, b):

if a > b:

return a

else:

return b

# 使用三元表示式後

def max_num(a, b):

return a if a > b else b

# 條件成立丟擲if前面的值,否則就丟擲else後面的值

2.雖然可以巢狀使用,但是不推薦

# 求三個數最大值

def max_num(a, b, c):

return a if a > b else (b if b > c else c)

print(max_num(10, 22, 33))

# 案例二

is_free = input("是否收費y/n:").strip().upper()

res = '收費'if is_free == 'y' else '免費'

print(res)

# 案例三

username = input("username:").strip()

res = 'nb' if username == 'jason' else 'lb'

print(res)

# 給列表中所有的人名加上_new字尾

name_list = ['jason', 'kevin', 'tony', 'jerry']

# 方式一:for迴圈加字元拼接

new_list =

for i in name_list:

print(new_list)

# 方式二:列表生成式

new_list = ['%s_new' % i for i in name_list]

print(new_list)

# 將兩個列表合成為乙個字典

l1 = ['jason', 18, 'read']

l2 = ['name', 'age', 'hobby']

new_dict = {}

for i in range(len(l2)):

new_dict[l2[i]] = l1[i]

print(new_dict)

name_list = ['jason', 'tony', 'tom']

res =

print(res) #

# 列舉

'''enumerate(l1)

針對該方法使用for迴圈取值 每次會產生兩個結果

第乙個是從0開始的數字

第二個是被迴圈物件裡面的元素

還可以通過start引數控制起始位置

'''

# 匿名函式:沒有名字的函式

'''語法格式:

lambda 形參:返回值

'''# 簡單使用

eg1:

a = (lambda x, y: x * y)(5, 6)

print(a)

eg2:

res = [x**2 for x in range(10)]

print(res)

res2 = [(lambda x:x**2)(i) for i in range(10)]

print(res2)

eg3:

print((lambda a, b: a if a > b else b)(10, 11))

# 匿名函式一般不會單獨使用,會配合其他函式一起使用

# map() 對映

# 使用 map(function, iterable)

# 函式名,可迭代物件

l = [1, 2, 3, 4, 5, 6, 7, 8, 9]

def double(i):

return i ** 2

print(list(map(double, l)))

print(list(map(lambda x: x ** 2, l)))

Python使用函式實現楊輝三角

執行效果 可在函式中指定階層數,輸出對應的楊輝三角 源 如下 1 coding utf 8 2 3chapter4 do.py 4函式yanghui n 用於輸出n階楊輝三角 5 6def yanghui n 7if not str n isdecimal or n 2 or n 25 8print...

python函式怎麼使用 python函式的使用

函式形參和實參 函式取得的引數是你提供給函式的值,這樣函式就可以利用這些值 做 一些事情。這些引數就像變數一樣,只不過它們的值是在我們呼叫函式的時候定義的,而非在函式本身內賦值。引數在函式定義的圓括號對內指定,用逗號分割。當我們呼叫函式的時候,我們以同樣的方式提供值。注意我們使用過的術語 函式中的引...

Python高階函式 三

排序演算法在各種程式中都有廣泛的應用,排序的核心就是按照某種規則比較所謂的 大小 然後交換位置,如果是數字,我們可以直接比較,但如果是字串或者兩個字典呢?直接比較數學上的大小是沒有意義的,因此,比較的過程必須通過函式抽象出來。python的內建sorted函式就可以對list進行排序。sorted ...