函数: 初识函数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()

 

posted @ 2018-06-11 17:52  浮生凉年  阅读(2810)  评论(0编辑  收藏  举报