1. 程式人生 > >Python基礎-----函數、內置函數、遞歸等練習

Python基礎-----函數、內置函數、遞歸等練習

byte == 內置函數 讀取 函數調用 以及 list 位置參數 zip

!/usr/bin/env python
-*- coding:utf-8 -*-

##############################################################################
1、列舉布爾值為False的值
0 False ‘‘ [] () {} None

##############################################################################
2、根據範圍獲取其中3和7整除的所有數的和,並返回調用者;
符合條件的數字個數以及符合條件數字的總和

def func(start_num,stop_number):
res = []
for i in range(start_num,stop_number):
if i % 3 ==0 and i % 7 == 0:
res.append(i)
return res,sum(res),len(res)

test = func(1,25)
print(type(test))

##############################################################################
3、函數的默認返回值是 None

##############################################################################
4、 break:結束當前整個循環
continue:結束本次循環進入下一次循環
return:結束函數,並返回結果,默認為None

##############################################################################
5、使用set集合獲取兩個列表l1 = [11,22,33],l2 = [22,33,44]中的相同元素

l1 = [11,22,33]
l2 = [22,33,44]
set1 = set(l1)
set2 = set(l2)
same = set1 & set2
print(same)

##############################################################################
6、定義函數統計一個字符串中大寫字母、小寫字母、數字的個數,並以字典為結果返回給調用者

def func(st):
dic = {}
count_num = 0
count_cap = 0
count_low = 0
for i in st:
if i.isdigit():
count_num += 1
elif i.isupper():
count_cap += 1
elif i.islower():
count_low += 1
dic[‘數字‘] = count_num
dic[‘大寫字母‘] = count_cap
dic[‘小寫字母‘] = count_low
return dic
test_str = func(‘ASD-+xcf123‘)
print(test_str)

##############################################################################
7、函數的位置參數、關鍵字參數、默認參數、可變長參數
位置參數:按形參的位置傳入較位置參數,即普通參數
關鍵字參數:傳入實參時指定形參的值
默認參數:形參直接指定默認值得參數
可變長參數:*args **kwargs,前者只能接收沒有位置參數的實參或傳入的列表、元組,
後者可以接收關鍵字參數,和字典格式

##############################################################################
8、字符串“你好”轉為以 utf-8 編碼形式轉換為字節

方法1
s = ‘你好‘
b_s1 = bytes(s,‘utf-8‘)
print(b_s1)

# 方法2
s = ‘你好‘
b_s2 = s.encode(‘utf-8‘)
print(b_s2)

##############################################################################
9、利用內置函數zip(),實現如下功能:

l1 = [‘alex‘,11,22,33]
l2 = [‘is‘,11,22,33]
l3 = [‘good‘,11,22,33]
l4 = [‘boy‘,11,22,33]
請獲取字符串s = ‘alex_is_good_boy‘

print(‘_‘.join(list(zip(l1,l2,l3,l4))[0]))

##############################################################################
9、利用遞歸實現 1*2*3*4*5*6*7 = 5040
方法1:
def func(x,y=1):
if x == 1:
return y
y *= x
return func(x-1,y)
f = func(7)
print(f)

方法2:
def func1(x):
if x == 1:
return 1
return x * func1(x-1)
f1 = func1(7)
print(f1)

方法3
from functools import reduce
res = reduce(lambda x,y:y*x,range(1,8))
print(res)

##############################################################################
10、利用with實現同時打開兩個文件(一讀,一寫,並將讀取的內突寫入到寫入模式的文件中)

with open(‘a‘,‘r‘) as f1,open(‘b‘,‘w‘) as f2:
f2.write(f1.read())

##############################################################################
11、有如下兩個列表,第一個列表中的數字無序不重復排列,第二個為空列表
需求:
取出列表1的最小值放到列表2的首個位置
取出列表1的最小值(僅大於上次一的最小值)放到列表2的首個位置
取出列表1的最小值(僅大於上次一的最小值)放到列表2的首個位置...
以此類推,從而獲取一個有序的列表2,並將其返回給函數調用者

l1 = [2,1,6,4,9,0,22,5]
l2 = []
def sort_l(x,y):
for i in range(len(x)):
min_num = min(x)
x.remove(min_num)
y.insert(0,min_num)
return y

s_l = sort_l(l1,l2)
print(l2)

##############################################################################
12、猴子吃桃:猴子第一天摘下若幹個桃子,當即吃了一半,不過癮就多吃了一個。第二天又將剩下
的桃子吃了一半,不過癮多吃了一個。以後每天都吃前一天剩下的一般再加一個。到第10天剛好剩下
一個。問猴子第一天摘了多少個桃子?

def f(x,day):
day -= 1
if day == 0:
return x
x = (x+1) * 2
return f(x,day)
res = f(1,10)
print(res)

##############################################################################
13、 a.利用filter函數、自定義函數獲取l1中元素大於33的所有元素,l1 = [11,22,33,44,55]
l1 = [11,22,33,44,55]
def f(x):
return x > 33
new_list = list(filter(f,l1))
print(new_list)

# 利用匿名函數
new_list = list(filter(lambda x:x>33,l1))
print(new_list)

b. 利用map、自定義函數將所有是奇數的元素加 100
l1 = [11,22,33,44,55]
def f(x):
if x % 2:
return x+100
else:
return x
new_list = list(map(f,l1))
print(new_list)

利用匿名函數(和三元表達式)
new_list = list(map(lambda x:(x+100 if x % 2 else x),l1))
print(new_list)

Python基礎-----函數、內置函數、遞歸等練習