day 11-函数
1.字符串相关方法
1.字符串.join(序列)
用指定的字符串将序列中的元素拼接成一个新的字符串(序列中的元素必须全部都是字符串)
names = ['小明', '小红', '小花', '张三']
# '小明,小红,小花,张三'
result = ','.join(names)
print(result) # '小明,小红,小花,张三'
# '小明+小红+小花+张三'
result = '+'.join(names)
print(result)
# '小明and小红and小花and张三'
result = 'and'.join(names)
print(result)
result = '**'.join('abc')
print(result) # 'a**b**c'
# 练习:将nums中所有的元素拼接成一个数字
nums = [10, 45, 78, 9] # -> '1045789'
# -> ['10', '45', '78', '9']
result = ''.join([str(x) for x in nums])
print(result)
nums = [10, 45, 78, 9] # -> '0589'
# ['0', '5', '8', '9']
result = ''.join([str(x)[-1] for x in nums])
print(result)
2.字符串切割
字符串1.split(字符串2) - 将字符串1中所有的字符串2作为切割点对字符串1进行切割
字符串1.split(字符串2, N) - 将字符串1中前N个字符串2作为切割点对字符串1进行切割
str1 = 'abc123mn123oop123你好'
b = str1.split('123')
print(b) # ['abc', 'mn', 'oop', '你好' ]
注意∶如果切割点连续出现,或者切割点在字符串开头或者结尾,切割的时候会出现空串
str2 = '123abc123123mn123oop123你好123'
result = str2.split('123')
print(result) # ['', 'abc', '', 'mn', 'oop', '你好', '']
str1 = 'abc123mn123oop123你好'
result = str1.split('123', 2)
print(result) # ['abc', 'mn', 'oop123你好']
3.字符串替换
字符串1.replace(字符串2,字符串3) - 将字符串1中所有的字符串2都替换成字符串3
字符串1.replace(字符串2,字符串3,N) - 将字符串1中N个字符串2都替换成字符串3
str1 = 'abc123mn123oop123你好'
result = str1.replace('123', 'XY')
print(result) # 'abcXYmnXYoopXY你好'
4.字符串.strip()
去掉字符串前后的所有的空白字符
str1 = '\n\n\t 肖生克 的救 赎 \n\n\n'
print(str1.strip())
2.认识函数
1.函数的概念(相当于生活中的机器)
函数就是实现某一特定功能的代码的封装。
(函数就是提前将实现某一个功能的代码封装起来,以后再需要段代码对应的功能的时候就不用再重复去写这段代码,而是调用对应的函数)
def yt_max(seq):
m = seq[0]
for x in seq[1:]:
if x > m:
m = x
print(m)
nums1 = [19, 239, 78, 3]
yt_max(nums1)
2.函数的分类
按照函数是由谁创建(定义)的可以将函数分为,系统函数和自定义函数两种
系统函数(别人已经造好的机器) | Python自带的函数, 例如:print、input、type、max、min、sorted、chr、ord等 |
---|---|
自定义函数(自己造的机器) | 由程序员自己创建的函数 |
3.定义函数
1.定义函数(造机器)
1)语法:
def 函数名(形参列表):
函数说明文档
函数体
2)说明
def | 关键字,固定写法 |
---|---|
函数名 | 由程序员命名 要求:是标识符,不是关键字 规范:见名知义(看到函数大概知道这个函数的功能); 字母都小写,多个单词用_隔开; 不使用系统函数名、类名或者模块名 |
() | 固定写法 |
形参列表 | 以’变量名1, 变量名2, 变量名3,…'的形式存在,这儿的变量可以一个都没有,也可以有多个(一个变量就是一个形参) |
形参的作用:将函数外部的数据传递到函数里面 | |
什么时候需要形参∶看实现函数的功能需不需要额外,需要几个。需要一个额外的数据就提供一个形参 | |
形参怎么使用:在函数体重直接将形参当成我们需要的数据来使用 | |
函数说明文档 | 本质就是多行注释(相当于机器的说明书) |
函数体 | 结构上就是和def保持一个缩进的一条或者多条语句(至少一条) 逻辑上,函数体就是实现函数功能的代码 |
# 案例1:定义一个函数,求任意两个数的和
def sum2(num1, num2):
"""
求任意两个数的和(功能说明区)
:param num1: 数字1 (参数说明)
:param num2: 数字2
:return: None(返回值说明区)
"""
print(num1 + num2)
sum2(100, 23)
# 练习1:定义一个函数,判断指定的数是否是水仙花数
def is_narcissistic_number(num):
if len(str(num)) != 3:
print(False)
else:
# num_str = str(num)
ge = num % 10 # ge = int(num_str[-1])
shi = num // 10 % 10 # shi = int(num_str[-2])
bai = num // 100 # bai = int(num_str[-3])
if ge ** 3 + shi ** 3 + bai ** 3 == num:
print(True)
else:
print(False)
is_narcissistic_number(150)
# 练习2:定义一个函数,判断指定字符串是否是纯中文字符串
def is_chinese_str(str1):
for x in str1:
if not '\u4e00' <= x <= '\u9fa5':
print(False)
break
else:
print(True)
is_chinese_str('黑色金属')
# 练习3:定义一个函数,统计一个字符串中大写字母的个数
def count_upper(str1):
count = 0
for x in str1:
if x.isupper(): # 'A' <= x <= 'Z'
count += 1
print(count)
count_upper('aKOhjs计JK算机课')
# 练习4:定义一个函数,统计字符串中指定字符的个数
def count_char(str1, char):
count = 0
for x in str1:
if x == char:
count += 1
print(count)
count_char('ahjsjjsjah', 'j')
4.函数的调用
1.调用函数(使用机器)
1)语法:
函数名(实参列表)
2)说明
函数名 | 需要哪个函数的功能就调用哪个函数,想要调用哪个函数就写哪个函数的函数名。(函数必须先定义再调用) |
---|---|
() | 固定写法 |
实参列表 | 以’数据1, 数据2, 数据3,…'的形式存在 实参就是通过形参传递到函数中的数据。(实参就是用来给形参赋值的) 实参的个数由形参决定(实参和形参一一对应) |
注意:一个函数可以调用多次,并且每次调用的时候都可以给不同的实参
2.函数调用过程
重要结论:定义函数的时候不会执行函数体,调用函数的时候才会执行。
函数调用的过程:
第一步:回到函数定义的位置
第二步:传参(用实参给形参赋值)
第三步:执行函数体
第四步:确定函数返回值
第五步:回到函数调用的位置,接着往后执行
def func1(a, b, c):
# a = 10; b = 20; c = 30
# a = 100; b = 200; c = 300
print('===========')
print(f'a:{a}, b:{b}, c:{c}')
func1(10, 20, 30)
func1(100, 200, 300)