函数: 初识函数def()
上一篇有福利哦 嘿嘿嘿!
内容回顾:
文件操作:
open(文件路径, mode)
mode 里面所有带b的 都是字节操作, 带b 可以省略 encoding
绝对路径: 从磁盘根目录去寻找
相对路径: 相对于当前文件的位置
常用操作:
seek() 移动光标
开头seek(0)
结尾seek(0,2)
tell() 获取光标的位置
truncate() 截断文件
主要内容:
三元运算符(表达式):c = a if a>b else b 当a大于b 返回a,否则返回b
函数.: 概念: 对一个代码块,或者功能的封装, 什么时候用, 什么时候执行
语法:
def 函数名():
(tab)函数体
函数名: 跟变量名的命名规则一样.
函数的调用: 函数名()
返回值: return, 函数在执行过程中,或者执行完毕, 可以使用return 返回给调用者一个结果
*******************只要程序执行到return 函数就会被停止,后面的内容不会再执行
1,直接写个 return 或者整个函数不写return, 返回 None
2, return 后面加一个变量或者值(返回值)
3, return 后面可以加多个返回值, 多个返回值会被解释器打包成元组, 统一返回, 接受的地方,可以接收一个变量,也可以是多个变量(解构)
参数: 在调用函数的时候,给函数传递的一些信息. 参数写在小括号里面.
如果在声明函数的时候,设置的参数,在调用的时候,必须给赋值.
参数可以有很多个,每个参数之间用逗号隔开
形参: 在函数声明的位置上给出变量的声明, 形式参数 (有三种形式,今天只讲俩)
1, 位置参数:同下, 而且到目前为止,用的都是位置参数;
2, 默认值参数, 当出现很多重复的参数的时候, 考虑使用默认值参数,
默认值参数,必须写在位置参数后面, 当调用的地方不给出值的时候,会使用默认值.
3, 动态参数(预习内容)
实参: 在函数调用的时候,给函数传递的变量,叫做实际参数.
1, 位置参数:按照位置,把实参一个一个赋值给形参. 如果位置混乱, 输出的结果也是混乱的.
2, 关键字参数: 对照形参,给每个参数赋值
3, 混合参数: 位置参数,跟关键字参数 混合使用. 必须先写位置参数,在写关键字参数,
内容不难, 来一波 刷题与答案哈哈哈... 比较懒 堆一起了哈.
1 #2,写函数,检查获取传入列表或元组对象的所有奇数位索引对应的元素,并将其作为新列表返回给调用者。 2 def jishu(lis): 3 jishu_list = [] 4 for n in range(1,len(lis),2): 5 6 jishu_list.append(lis[n]) 7 8 return jishu_list 9 a=(0,1,2,2,4,8,6,9,8) 10 11 ret = jishu(a) 12 print(ret) 13 14 # 3,写函数,判断用户传入的对象(字符串、列表、元组)长度是否大于5。 15 def list_len(a): 16 if len(a) > 5: 17 return True 18 else: 19 return False 20 a = [1,25,5,7,5,] 21 ret = list_len(a) 22 print(ret) 23 24 # 4,写函数,检查传入列表的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。 25 def cha_len(a): 26 if len(a)>2: 27 return a[:2] 28 a = [1,2,] 29 print(cha_len(a)) 30 31 # 5,写函数,计算传入函数的字符串中,[数字]、[字母]、[空格] 以及 [其他]的个数,并返回结果。 32 def count(string): 33 digit_count = 0 34 alpha = 0 35 false = 0 36 qita = 0 37 for i in string: 38 if i.isdigit(): 39 digit_count += 1 40 elif i.isalpha(): 41 alpha += 1 42 elif i == ' ': 43 false += 1 44 else: 45 qita += 1 46 return '数字的个数%s' % digit_count, '字母的个数 %s' % alpha, '空格的个数 %s' % false, '其他的个数 %s' %qita 47 48 a ='a1 b1 c3 d4 .....' 49 print(count(a)) 50 51 52 # 6,写函数,接收两个数字参数,返回比较大的那个数字。 53 def get_max(a,b): 54 return a if a>b else b 55 a=110 56 b=110 57 print(get_max(a,b)) 58 59 # #7,写函数,检查传入字典的每一个value的长度,如果大于2,那么仅保留前两个长度的内容,并将新内容返回给调用者。 60 # dic = {"k1": "v1v1", "k2": [11,22,33,44]} 61 # PS:字典中的value只能是字符串或列表 62 def value_2(dic): 63 for k,v in dic.items(): 64 if len(v) > 2: 65 dic[k] = v[:2] 66 return dic 67 dic = {"k1": "v1v1", "k2": [11,22,33,44]} 68 print(value_2(dic)) 69 70 ''' 71 8,写函数,此函数只接收一个参数且此参数必须是列表数据类型, 72 此函数完成的功能是返回给调用者一个字典,此字典的键值对为此列 73 表的索引及对应的元素。例如传入的列表为:[11,22,33] 返回的字 74 典为 {0:11,1:22,2:33}。 75 ''' 76 def list_dict(lis): 77 dic = {} 78 n = 0 79 if type(lis) == list: 80 for value in lis: 81 dic[n] = value 82 n +=1 83 return dic 84 else: 85 return '请传入一个列表' 86 lis = [11,22,33] 87 print(list_dict(lis)) 88 89 90 '''9,写函数,函数接收四个参数分别是:姓名,性别,年龄,学历。 91 用户通过输入这四个内容,然后将这四个内容传入到函数中,此函数 92 接收到这四个内容,将内容追加到一个student_msg文件中。 93 ''' 94 def cunchu(name, set, age, xueli): 95 with open('student_msg', 'w', encoding='utf-8') as f: 96 f.write('''name:%s 97 set:%s 98 age:%s 99 xueli:%s''' %(name,set,age,xueli)) 100 return 101 name = input('名字:') 102 set = input('性别:') 103 age = input('年龄:') 104 xueli = input('学历:') 105 cunchu(name,set,age,xueli) 106 107 #10,对第9题升级:支持用户持续输入,Q或者q退出,性别默认为 108 # 男,如果遇到女学生,则把性别输入女。 109 110 def cunchu(name, age, xueli, set = '男'): 111 with open('student_msg', 'a', encoding='utf-8') as f: 112 f.write(''' name:%s 113 set:%s 114 age:%s 115 xueli:%s\n''' % (name, set, age, xueli)) 116 return 117 while 1: 118 end = input('输入Q或q退出,输入其他任意键继续运行:').upper() 119 if end =='Q': 120 break 121 name = input('名字:') 122 set1 = input('性别:') 123 age = input('年龄:') 124 xueli = input('学历:') 125 if set == '男': 126 cunchu(name, age, xueli) 127 else: 128 cunchu(name, age, xueli,set=set1) 129 130 # 11,写函数,用户传入修改的文件名,与要修改的内容,执行函数, 131 # 完成整个文件的批量修改操作(升级题)。 132 with open('test4.txt',mode='w',encoding='utf-8') as f: 133 f.write('''alex是老男孩python发起人,创建人。 134 alex其实是人妖。 135 谁说alex是sb? 136 你们真逗,alex再牛逼,也掩饰不住资深屌丝的气质。''') 137 def wenjian(name, old, new): 138 import os 139 with open(name,mode='r',encoding='utf-8') as f,\ 140 open(name+'_new',mode='w',encoding='utf-8') as f1: 141 for line in f: 142 line =line.replace(old, new) 143 f1.write(line) 144 os.remove(name) 145 os.rename(name+'_new.txt',name) 146 147 # 12,写一个函数完成三次登陆功能,再写一个函数完成注册功能 148 dic = {'123':'123'} 149 def denglu(): 150 print('开始登录') 151 times = 3 152 while times >0: 153 username = input('用户名:').strip() 154 password = input('密码:').strip() 155 if (username in dic) and (password == dic[username]): 156 print('登录成功') 157 break 158 else: 159 print('输入错误!') 160 times -= 1 161 162 def zhuce(): 163 print('开始注册') 164 username1 = input('请输入你想注册的用户名:') 165 password1 = input('请输入您的密码:') 166 dic[username1] = password1 167 return dic 168 169 zhuce() 170 denglu()