1.函数
1)没有函数的情况下
# 没有函数的问题:
# 1.相同的功能需要使用多次的时候对应的代码需要写多遍
# 2.如果功能发生改变,需要修改多处代码
# sum1 = 0
# for x in range(1, 101):
# sum1 += x
# print(sum1)
#
# sum1 = 0
# for x in range(2, 56):
# sum1 += x
# print(sum1)
def sum1(s, e):
s = 0
for x in range(s, e+1):
s += x
print(s)
sum1(1, 100)
sum1(2, 55)
sum1(1, 1000)
def download():
print('==========开始下载===========')
# print('检查网络状态')
print('在非wifi状态的给出提示')
print('请求数据')
print('保存数据')
print('下载成功')
download()
download()
download()
# print('==========开始下载===========')
# print('检查网络状态')
# print('在非wifi状态的给出提示')
# print('请求数据')
# print('保存数据')
# print('下载成功')
#
# print('=========开始下载===========')
# print('检查网络状态')
# print('在非wifi状态的给出提示')
# print('请求数据')
# print('保存数据')
# print('下载成功')
#
# print('===========开始下载==========')
# print('检查网络状态')
# print('在非wifi状态的给出提示')
# print('请求数据')
# print('保存数据')
# print('下载成功')
2)函数式编程(思想转变)
# 一遇到问题先考虑有没有一个已经存在的函数能够帮我解决这个问题,如果有直接用,没有就是自己创建一个能够解决这类问题的函数。
# 写程序求10的阶乘
# 10! = 1*2*3*...*10
# s = 1
# for x in range(1, 11):
# s *= x
# print(s)
3) 认识函数
1)什么是函数:函数就是实现某一特定功能的代码的封装 (每个函数都有一个特定的功能)
2)函数的分类(按照函数是谁来定义的)
系统函数(别人造好的机器):python自带的函数,程序员在需要的时候使用他们就行。例如:print、input、type、id、max、…
自定义函数(自己造的机器):由程序员自己创建然后使用的函数
4) 定义函数(造机器)
语法:
def 函数名(参数列表):
函数说明文档
函数体
说明:
1)def - 关键字,固定写法
2)函数名 - 由程序员自己命名;
要求:标识符;不能是关键字
规范:见名知义(看到函数名大概知道函数的功能)、下划线隔开多个单词或者多个单词之间首字母大写、不使用系统函数名
3)(): - 固定写法
4)参数列表 - 形参列表
多个变量名用逗号隔开:变量1, 变量2,...
作用:将函数外部的数据传递到函数里面
怎么确定形参的个数:看实现函数的功能需不需要额外的数据,需要几个
5)函数说明文档 - 本质就是用三个"""开头和结尾的注释
6)函数体 - 和def保持一个缩进的一条或者多条语句;
函数体就是实现函数功能的代码
重要结论:定义函数不会执行函数体,调用函数才会执行函数体
5) 调用函数(使用机器)
语法:
函数名(实参列表)
说明:
1)函数名 - 必须是已经定义过的函数的函数名
2)() - 固定写法
3)实参列表 - 多个数据用逗号隔开
实参就是通过形参传递到函数中使用的数据
实参有多少个看被调用的函数的形参的个数
6) (非常重要)函数调用过程:
"""
当程序执行到调用函数的语句的时候:
第一步:去到函数定义的位置
第二步:传参(用实参给形参赋值),传参的时候必须保证每个参数都有值
第三步:执行函数体
第四步:确定函数返回值(下周才讲)
第五步:回到函数调用的位置接着往后执行
"""
# 定义一个函数的功能是求两个数的和
def sum2(num1, num2):
# num1 = 40; num2 = 78
"""
求和(功能说明区)
:param num1: 第一个数(参数说明)
:param num2: 第2个数
:return: None(返回值说明区)
"""
print(num1 + num2) # print(40+78) -> print(118)
sum2(40, 78)
7)练习
# 练习1:定义一个函数统计字符串中中文的个数
def chinese_count(string):
count = 0
for x in string:
if '\u4e00' <= x <= '\u9fa5':
count += 1
print(count)
chinese_count('sjj十几年ss82数据库')
# 练习2:定义一个函数将指定列表中的元素逆序
def reverse_list(list1):
print(list1[::-1])
reverse_list([23, 90, 89])
# 练习3:定义一个函数删除指定字符串中指定字符
def del_char(string, char):
new_str = ''.join([x for x in string if x != char])
print(new_str)
del_char('ajsjjskakaaas', 'a')
# 练习4:定义一个函数将两个字符串中的字符交叉合并:'abc'、'123' -> a1b2c3 'abc'、'123456' ->a1b2c3456
def crisscross_merge(str1, str2):
new_str = ''
l1, l2 = len(str1), len(str2)
if l1 > l2:
l1, l2 = l2, l1
for index in range(l1):
new_str += str1[index] + str2[index]
new_str += str1[l1:] + str2[l1:]
print(new_str)
crisscross_merge('kmn', 'jnnmbvc')
# crisscross_merge('abc', '123456') # a1b2c3456
# crisscross_merge('abcdef', '123') # a1b2c3def
def func1():
num = [1, 2]
print(num[100])
print('=======')


被折叠的 条评论
为什么被折叠?



