Python基础-----函数内置函数递归等练习
Posted Meanwey
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python基础-----函数内置函数递归等练习相关的知识,希望对你有一定的参考价值。
!/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基础-----函数内置函数递归等练习的主要内容,如果未能解决你的问题,请参考以下文章