日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python 函数例子_Python3函数之例子

發(fā)布時間:2024/7/23 python 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 函数例子_Python3函数之例子 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.分別使用遞歸、循環(huán)和生成器求菲波那切數(shù)列

遞歸:

def fib_rec(n):

if n == 0:

return 1

if n == 1:

return 1

return fib_rec(n-1) + fib_rec(n-2)

fib_rec(5)

循環(huán):

def fib_loop(n):

lst = []

for i in range(n+1):

if i == 0 or i == 1:

lst.append(1)

else:

lst.append(lst[-1] + lst[-2])

return lst.pop()

fib_loop(5)

def fib_loop2(n):

a, b = 1, 1

for i in range(n+1):

if i == 0 or i == 1:

a, b = 1, 1

else:

a, b = b, a+b

return b

fib_loop2(5)

生成器:

def fib_gen():

i = 0

a, b = 1, 1

while True:

if i == 0 or i == 1:

yield 1

else:

a, b = b, a+b

yield b

i += 1

def fib(n):

gen = fib_gen()

for _ in range(n):

next(gen)

return next(gen)

fib(5)

2.寫一個函數(shù),實現(xiàn)對整數(shù)的排序,默認升序排序,不能使用任何內(nèi)置函數(shù)和第三方庫

fun1:

def sort_int(lst, asc=True):

sort_lst = []

while lst:

i = None

min_int = None

for i in lst:

if min_int is None:

min_int = i

else:

if min_int > i:

min_int = i

lst.remove(min_int)

if asc:

sort_lst.append(min_int)

else:

sort_lst.insert(0, min_int)

return sort_lst

fun2:

def sort(lst, reverse=False):

dst = []

for n in lst:

for i, e in enumerate(dst):

if not reverse:

if n < e:

dst.insert(i, n)

break

else:

if n > e:

dst.insert(i, n)

break

else:

dst.append(n)

return dst

3.寫一個函數(shù),把整數(shù)轉(zhuǎn)化為羅馬數(shù)字,輸入為1到3999之間的任意數(shù)字

def int2rom(n):

if n < 1 or n > 3999:

print('input error.')

return 0

rom_lst = [' ',

'I', 'II', 'III', 'IV', 'V', 'VI', 'VII', 'VIII', 'IX',

'X', 'XX', 'XXX', 'XL', 'L', 'LX', 'LXX', 'LXXX', 'XC',

'C', 'CC', 'CCC', 'CD', 'D', 'DC', 'DCC', 'DCCC', 'CM',

'M', 'MM', 'MMM']

rom = ''

bit = n % 10

ten = (n % 100) // 10

hun = (n % 1000) // 100

tho = n // 1000

if tho != 0:

rom += rom_lst[27 + tho]

if hun != 0:

rom += rom_lst[18 + hun]

if ten > 0:

rom += rom_lst[9 + ten]

if bit > 0:

rom += rom_lst[bit]

return rom

3.2寫一個函數(shù),把整數(shù)轉(zhuǎn)化為羅馬數(shù)字,輸出為1到3999之間的任意數(shù)字

def roman2int(src):

convert_map = {

'I':1,

'V':5,

'X':10,

'L':50,

'C':100,

'D':500,

'M':1000

}

# MDCCCXCIX

# XICXCCCDM

# +10 -1 +100 -10 +100 +100 +100 +500 +1000

# 1899

roman = src.upper()[::-1]

prev = 0

lst = []

for x in roman:

i = convert_map[x]

if i < prev:

lst.append(-1 * i)

else:

lst.append(i)

prev = i

return sum(lst)

roman2int('MDCCCXCIX')

4.寫一個函數(shù),求兩個字符串的最長公共子串

例如輸入:I love Python 和 Python is a simple language,輸出為Python

def psubstring_long(x, y):

f = []

max_len = 0

idx = 0

for i, a in enumerate(x):

f.append([])

for j, b in enumerate(y):

if a != b:

f[i].append(0)

else:

if i == 0 or j == 0:

f[i].append(1)

else:

f[i].append(f[i-1][j-1] + 1)

if max_len < f[i][j]:

max_len = f[i][j]

# idx = max_len - (i+1)

idx = i + 1 - max_len

return x[idx: idx + max_len]

psubstring_long('babcdf', 'xxaabcaac')

5.動態(tài)規(guī)劃

總長n,step表示一次可選步數(shù),總共多少種走法

ret = 0

tmp = []

solution = []

def recursion(n, tmp, step=3):

global ret

if n == 0:

solution.append('===')

solution.extend(tmp)

ret += 1

return 0

for i in range(1, step+1):

if n > i-1:

tmp.append(i)

recursion(n-i, tmp, step)

tmp.pop(-1)

return ret

print(recursion(3, [], 3), solution)

4 ['===', 1, 1, 1, '===', 1, 2, '===', 2, 1, '===', 3]

總結(jié)

以上是生活随笔為你收集整理的python 函数例子_Python3函数之例子的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。