# 函数
# 可读性强 复用性强
# def 函数名():
# 函数体
#return 返回值
# 所有的函数 只定义不调用就一定不执行
#先定义后调用 #函数名() #不接收返回值
#返回值 = 函数名() #接收返回值 #返回值
# 没有返回值 :默认返回None
# 不写return:函数内的代码执行完毕自动结束
# 只写return:结束一个函数
# return None
# 返回一个值 :结束了函数且返回一个值,可以是任意的值
# 返回多个值 : 多个值之间用逗号隔开,接收的时候可以用一个变量接收(元组),也可以用等量的多个变量接收 # def f(a):
# return '栗子'
#
# ret = f('苹果')
# print(f('苹果')) #参数
#形参 定义函数的时候
# 位置参数 :必须传
# *args :动态参数 可以接收任意多个按位置传入的参数
# 默认参数 : 可以不传 —— 陷阱
# **kwargs : 动态参数 可以接受任意多个按关键字传入的参数
#实参 调用函数的时候
# 按照位置传参数
# 按照关键字传参数
# 可以混用 位置参数必须在关键字传参之前
# 不能对一个参数重复赋值 # def 娃哈哈(*args):
# print(args)
#
# # 娃哈哈(1,2,3,4)
# l = [1,2,3,4]
# 娃哈哈(*l) 默认参数的陷阱
def qqxing(l = []):
l.append(1)
print(l) qqxing() #[1]
qqxing([]) #[1]
qqxing() #[1,1]
qqxing() #[1, 1, 1] # 如果默认参数的值是一个可变数据类型,
# 那么每一次调用函数的时候,
# 如果不传值就公用这个数据类型的资源 def qqxing(l = {}):
# l.append(1)
l['k'] = 'v'
print(l) qqxing() #{'k': 'v'}
qqxing() #{'k': 'v'}
qqxing() #{'k': 'v'} def qqxing(k,l = {}):
# l.append(1)
l[k] = 'v'
print(l) qqxing(1) #{1: 'v'}
qqxing(2) #{1: 'v', 2: 'v'}
qqxing(3) #{1: 'v', 2: 'v', 3: 'v'} def qqxing(k, l = {}):
# l.append(1)
l[k] = 'v'
print(l) qqxing(1) #{1: 'v'}
qqxing(2, l={}) #{2: 'v'}
qqxing(3) #{1: 'v', 3: 'v'}

习题

#2、写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。
def func(l):
return l[1::2] #切片
print(func([1,2,3,4,5,6])) #或者
def func(l):
a = []
l = l[1::2]
for i in l:
a.append(i)
return a
print(func([1,2,3,4,5,6])) # 3、写函数,判断用户传入的值(字符串、列表、元组)长度是否大于5。
def func(x):
return len(x)>5
if func('abcd'):
print('长度确实大于5') # 4、写函数,检查传入列表的长度,如果大于2,
#那么仅保留前两个长度的内容,并将新内容返回给调用者。
def func(l):
return l[:2] print(func([1,2,3,4])) # 5、写函数,计算传入字符串中【数字】、【字母】、【空格】 以及 【其他】的个数,并返回结果。
def func(s): #'skghfoiw8qpeuqkd'
# num=0
# alpha=0
# space=0
# other=0 dic = {'num':0,'alpha':0,'space':0,'other':0}
for i in s:
if i.isdigit(): # isdigit() 方法检测字符串是否只由数字组成。
dic['num']+=1
elif i.isalpha(): # isalpha() 方法检测字符串是否只由字母组成。
dic['alpha'] += 1
elif i.isspace(): # isspace() 方法检测字符串是否只由空格组成。
dic['space'] += 1
else:
dic['other'] += 1
return dic
print(func('+0-0skahe817jashf wet1')) # 6、写函数,检查用户传入的对象(字符串、列表、元组)
#的每一个元素是否含有空内容,并返回结果。
def func(x):
if type(x) is str and x: #参数是字符串
for i in x:
if i == ' ':
return True
elif x and type(x) is list or type(x) is tuple: #参数是列表或者元组
for i in x:
if not i:
return True
elif not x:
return True print(func([])) #7、写函数,检查传入字典的每一个value的长度,如果大于2,
#那么仅保留前两个长度的内容,并将新内容返回给调用者。
# dic = {"k1": "v1v1", "k2": [11,22,33,44]}
# PS:字典中的value只能是字符串或列表
def func(dic):
for k in dic:
if len(dic[k]) > 2:
dic[k] = dic[k][:2]
return dic
dic = {"k1": "v1v1", "k2": [11,22,33,44]}
print(func(dic)) # 8、写函数,接收两个数字参数,返回比较大的那个数字。
def func(a,b):
if a>b:
return a
else:
return b
print(func(1,5)) def func(a,b):
return a if a > b else b
print(func(5,1)) # 三元运算
a = 1
b = 5
c = a if a>b else b #三元运算
print(c) # 变量 = 条件返回True的结果 if 条件 else 条件返回False的结果
#必须要有结果
#必须要有if和else
#只能是简单的情况 # 9、写函数,用户传入修改的文件名,与要修改的内容,
# 执行函数,完成整个文件的批量修改操作(进阶)。
def func(filename,old,new):
with open(filename, encoding='utf-8') as f, open('%s.bak'%filename, 'w', encoding='utf-8') as f2:
for line in f:
if old in line: # 班主任:星儿
line = line.replace(old,new)
# 写文件
f2.write(line) # 小护士:金老板 import os
os.remove(filename) # 删除文件
os.rename('%s.bak'%filename, filename) # 重命名文件

Python_函数_复习_习题_24的更多相关文章

  1. Oracle学习总结_day03_day04_条件查询_排序_函数_子查询

    本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! day03_条件查询_排序_函数 清空回收站: PUR ...

  2. ca71a_c++_指向函数的指针_通过指针调用函数txwtech

    /*ca71a_c++_指向函数的指针_通过指针调用函数用typedef简化函数指针的定义简化前: bool(*pf)(const string&, const string &); ...

  3. cc38b_demo_C++_异常_(2)txwtech在异常中使用虚函数-多态

    //cc38b_demo,21days_C++_异常_(2)txwtech20200121在异常中使用虚函数-多态 //--异常层次结构//*异常的类-创建自己的异常类//*异常派生-就是继承//*异 ...

  4. 数据挖掘-diabetes数据集分析-糖尿病病情预测_线性回归_最小平方回归

    # coding: utf-8 # 利用 diabetes数据集来学习线性回归 # diabetes 是一个关于糖尿病的数据集, 该数据集包括442个病人的生理数据及一年以后的病情发展情况. # 数据 ...

  5. C Primer Plus_第6章_循环_编程练习

    1.题略 #include int main(void) { int i; char ch[26]; for (i = 97; i <= (97+25); i++) { ch[i-97] = i ...

  6. 转:HIBERNATE一些_方法_@注解_代码示例---写的非常好

    HIBERNATE一些_方法_@注解_代码示例操作数据库7步骤 : 1 创建一个SessionFactory对象 2 创建Session对象 3 开启事务Transaction : hibernate ...

  7. 迅为4412开发板Linux驱动教程——总线_设备_驱动注册流程详解

    本文转自:http://www.topeetboard.com 视频下载地址: 驱动注册:http://pan.baidu.com/s/1i34HcDB 设备注册:http://pan.baidu.c ...

  8. 宏定义中的##操作符和... and _ _VA_ARGS_ _

    1.Preprocessor Glue: The ## Operator 预处理连接符:##操作符 Like the # operator, the ## operator can be used i ...

  9. OpenGL立方体在世界坐标系中_缩放_旋转_平移_顶点片源着色器_光照作用_棋盘纹理贴图

    读取bmp等图片格式中的像素还有难度,就先用这个棋盘图象素来弄了 代码打错一个就一直First-chance exception ,貌似还有一个要用q或者Q才能成功退出,不知道缺少哪句,我用窗口红叉退 ...

随机推荐

  1. Debian-Linux配置网卡网络方法

    Debian不同于centos系统,网卡配置不是在/etc/sysconfig/network-scrip里面,而是在/etc/network/interfaces里面 1.Debian网络配置 配置 ...

  2. Linux永久修改系统时间

    1.date 查看系统时间 2.hwclock --show 查看硬件的时间 3.hwclock --set --date '2017-08-16 17:17:00' 设置硬件时间为17年8月16日1 ...

  3. 08 LaTeX学习系列之---Latex 的中文操作

    目录 目录: (一)方法一:导入 ctex 宏包 1.说明: 2.源代码: 3.效果展示: (二)使用ctex的文档类 1.说明: 2.源代码: 3.显示效果: (三)查看帮助 1.Ctex的使用手册 ...

  4. C++基础算法学习——逆波兰表达式问题

    例题:逆波兰表达式逆波兰表达式是一种把运算符前置的算术表达式,例如普通的表达式2 + 3的逆波兰表示法为+ 2 3.逆波兰表达式的优点是运算符之间不必有优先级关系,也不必用括号改变运算次序,例如(2 ...

  5. 实时监听input输入的变化(兼容主流浏览器)【转】

    遇到如此需求,首先想到的是change事件,但用过change的都知道只有在input失去焦点时才会触发,并不能满足实时监测的需求,比如监测用户输入字符数. 在经过查阅一番资料后,欣慰的发现firef ...

  6. 简单规划dp sumsets

    Farmer John commanded his cows to search for different sets of numbers that sum to a given number. T ...

  7. ethereum/EIPs-100 挖矿难度计算

    https://github.com/ethereum/EIPs/blob/master/EIPS/eip-100.md 创世纪区块的难度是131,072,有一个特殊的公式用来计算之后的每个块的难度. ...

  8. node.js如何将远程的文件下载到本地、解压、读取

    其实要解决的问题,很简单,获取远程文件,然后解压到本地读取. 在vscode中通过node.js来实现是比较方便的,相比之前的zip.js,我觉得我还是比较喜欢node.js实现方式. test.js ...

  9. Jmeter之tomcat性能测试+性能改进措施

    Jmeter用于tomcat性能测试,因为项目部署在tomcat,正常情况下,一个tomcat可以承受500个并发,通过修改配置,及其相关的tomcat优化,可以承受到1000个并发. 如何测试tom ...

  10. exBSGS·BSGS-Senior/扩展的BSGS

    \(\rm{0x01\quad Preface}\) \(emmm\)严格来讲,不应该被算到一个模板里面.因为在我看来模板是人构造出来的,但是这个算法应该是一个解决问题的\(process\)-更像是 ...