菜菜学习python第四天--字符串对象的学习、切片操作、函数、全局\局部变量
作者:互联网
一、字符串对象·
1、什么是字符串
被单引号、双引号、三引号引起来的
2、定义字符串
s = 'today is friday'
ss = "wo shi meinv"
sss = """wo bu hui"""
s1 = str("aaa")
3、字符串的常用方法:
1)‘capitalize' #将字符串的首字母大写
2)'center' #将字符串居中,第二个参数表示填充的符号
a.center(50)
a.center(20,"#")
3)'count' #统计字符串中出现字符或字符串的次数
4)'encode' #该方法就可以将字符串转化为字节
以后建议大家进行编码转换的时候统一使用utf-8
注意:编码和解码一定要使用同一个编码
与它对应的是字节的decode
s = "today is firday"
#使用utf-8编码
s.encode("utf-8")
tt = s.encode("utf-8")
type(tt)
>>><class 'bytes'>
tt.decode("utf-8")
>>>'today is firday'
5)'endswith' #判断字符串是否以xx结尾
6)'startswith' #判断字符串是否以xx开头
s.startswith("t")
>>>True
s.startswith("today")
>>>True
7) 'find' #查找字符串中某个字符或者字符串第一次出现的位置
#注意:如果不存在,返回-1
8)‘index' #查找字符串中某个字符或者字符串第一次出现的位置
#注意:如果不存在,则抛出异常
9) 'format' #python3推出的新的一种格式化字符串的方式
#很重要,以后格式化都使用这个
print("{ } - { } = { }".format(a, b, (a - b)))
10)'join' #用来拼接字符串,注意:参数是一个可迭代对象
a = ["day","wo"]
"-".join(a)
>>>'day-wo'
11)'lower' #转小写
12) 'upper' #转大写
13)’title' #转换字符串为一个符合标题的规则
14)‘split’ #分割字符串
s.split(" ")
>>>['today' 'is' 'firday']
s.split("o")
>>>['t', 'day is firday']
15) 'rfind' #找最后一个
16)‘rsplit' #
17) 'strip' #清除字符串两边的空格
18)'rstrip' #清除右边的空格
19)'lstrip' #清除左边的空格
20) 'replace' #替换字符串
s = "today is firday"
s.replace("firday","saturday")
>>>'today is saturday'
#如下判断是不是的方法,只要会使用即可
'istitle' #判断字符串是不是标题
’isspace' #判断是不是空白字符
'islower' #判断是不是小写字母
‘isupper' #判断是不是大写字母
'isalnum' #判断是不是由字母或数字组成(不可以出现其他类型)
'isalpha' #判断是不是由字母组成(大写)
'isdigit' #判断是不是数字组成
二、切片 (针对–有序序列)
字符串本身没有提供截取字符串的方法 --- 切片
切片是python为大家提供用来切割、分割、截取容器的方式
注意:切片是一个前闭后开的区间
容器[start:] #从start位置开始截取容器,截取到末尾
容器[start:end] #从start位置开始,到end位置结束。注意:不包含end位
容器[:end] #如果:左侧不写,默认就下标为0的位置开始
容器[start:end:step] #注意:step表示步长,默认是1,
s = "today is saturday"
s[3:]
>>>’ay is saturday'
面试题:
给定一个列表 ls = [1,2,3,4,5,6,67]
请翻转该列表,不要使用列表自身提供的方法(ls.reverse())。
答案:
ls[::-1]
三、函数的学习
函数 function
编程中的这个函数和数学不是一回事
1、什么是函数?
具有特定功能的代码的集合
这段代码用来解决一个问题或一类问题
把这段代码取个名字,
函数就是功能、过程。
c语言的过程指的就是函数!!!
取快递(功能、过程)
你 -- 站起来 --- 走到菜鸟驿站 --走回来
一个大的过程(目标) -- 分解为n个小的过程
1)简化操作
为了实现复用
c语言 --> 面向过程的编程 --> 定目标 --> 将目标分解为n个小目标 --> 一一去实现
2、为什么使用函数
代码的重复!!!
|--有可能重复的代码封装起来 起一个名字 当用到这段代码时候,调用这个名字,本质就是代码被调用
3、python如何定义函数
#规则:
#def ===> define function 定义函数
#函数的名称定义和变量的命名规则保持一致!!!
def 函数名称([参数列表...]):
#函数体
#[return 返回值]
#定义一个函数
def my_fun():
"""
这个是函数的注释
当函数被定义后,并不是会立刻被执行,需要调用
"""
print("这是我的第一个函数")
#调用函数
my_fun()
4、如何调用函数
函数名称([实参列表])
#有参数---当函数定义时,为了函数更加灵活和方便,需要传递参数
#输出个人信息
#name,age 形参 形式参数(可以有,也可以没有)
def show_info(name,age):
print("我叫", name)
print("我{}岁了".format(gender))
#调用函数
#”小小“ ,16 实际参数
show_info("小小",16)
5、函数的分类
有标准,才有分类
1)根据有没有参数
|-- 有参函数
|-- 无参函数
将来的代码,我们函数定义者和函数的调用者不一定是一个人
def show_info(name, info):
print("{}这个人的基本信息是{}".format(name,info))
#调用函数
show_info("小豆","他是一个很好的人")
2)根据有没有返回值
|-- 有返回值的函数
|-- 没有返回值的函数
如果函数运行完成,需要将某个结果给调用者 return 结果
#如果我们需要函数运算,最后需要得到运算结果,那么
#我们就需要将该函数定义有返回值的函数
def add(x,y):
#得到两个数的和
res = x + y
#如果需要将运算结果返回给调用者,return返回结果
return res
a = float(input("请输入第一个数:"))
b = float(input("请输入第二个数:"))
#调用函数计算结果
c = add(a,b)
print("{} + {} = {}".format(a,b,c))
3)定义者:
|-- 系统函数
|-- 自定义
|-- 第三方定义的(开源公司、机构、组织)
全局变量和局部变量:
在内存中函数的调用
1、解释性的语言代码是从上而下执行的!!!
2、函数的调用过程
函数的调用过程,叫做压栈--调用时,整个函数结构放在栈中
弹栈--等到函数执行完成后,函数就会立刻出栈
3、在函数中使用全局变量问题
在python中,函数如果要修改全局变量,一定要声明
global 全局变量
#index、msg全局变量
msg = "今天天气不错"
index = 10
def show():
print("这是函数开始的代码")
print(msg)
#在python中,如果需要在函数内部修改全局变量,正常是不允许的
#若要修改,一定要声明 global 全局变量
global index
#print(index)
index += 1
print(index)
print("函数结束了")
#调用
show()
6、值传递和引用传递问题
def test(msg):
print("收到一个消息-->{}".format(msg))
return "haha"
test("今天天气真好")
#引用传递
#test本身是一个函数,那么test在栈中存着一个堆的地址
#那么此时a此时也就执行test对应的函数
#也就是说a和test都对应同一个函数
a = test
print(a)
#函数调用
b = test("不要报错了")
print(b)
7、关于函数的参数
当函数参数特别多的时候,为了解决调用时的传参麻烦
1)使用默认值参数
默认值参数必须放在普通参数之后
#求圆的面积
#函数的默认值,在python中,如果有些参数
#一般而言,值是固定的,给该值一个默认值
#(r, PI=3.14),如果调用这个函数,如果传递了参数,那么该参数就是传递值
#如果调用的时候,没有传递这个值,就按默认算
def get_circle_area(r,PI=3.14):
return PI*r*r
float(input("请输入圆的半径:"))
area = get_circle_area(3.14159,r)
print("半径为{}的圆,面积为{}".format(r,area))
r = float(input("请输入圆的半径:"))
area = get_circle_area(r)
print("半径为{}的圆,面积为{}".format(r,area))
2)在python中,当一个函数参数特别多的时候
可以使用可变参数来接收这些参数
*变量名称 *args
#可变参数
def test(x,y,z,k,n, *args):
#会将普通参数无法接受的参数统一接收,注意:它是一个元组
print(args)
print(args[2])
print(x+y+z+k+n)
test(1,2,3,4,5,6,7,8,89)
#命名参数
def test(a,b, **kwargs):
print(kwargs["cc"])
print(a + b)
test(3,5,name="小小",age=16, cc="哈哈")
#当我们在定义函数的时候,有时候需要保留扩展函数的功能时
#使用可变参数和命名参数来完成
#万能参数
#*和**位置固定,不能换
#一般顺序:普通参数、默认值参数、可变参数、命名参数
def add(x,y, *args, **kwargs):
print(args)
print(kwargs)
return x + y
res = add(5, 10, 20,age=80)
print(res)
8、 lambda函数(匿名函数)
lambda [参数1,参数2,...,参数n]:语句
lambda x,y:x + y
等价于:
def add(x,y):
return x + y
注意:在python中lambda虽然简化了代码书写,增加了代码维护成本,降低了代码可读性
def msg(fn):
#fn是一个函数
#此时fn其实就是ps函数
fn()
#def ps():
# print("hello")
#msg(ps)
#这就是匿名函数的使用
#lambda表达式
#lambda:print("hello")
msg(lambda:print("hello"))
9、函数递归
递归:
1、自身调用自身,这叫递归
2、递归必须有终止条件,否则死循环
#一般方法
#函数求1-100的和
def sum(n):
s = 0
for i in range(1,n+1):
s += i
return s
res = sum(100)
print("1~100的和是{}".format(res))
#递归方法
def sum(n):
#100 + 99 + 98 + ...无穷小
#在递归中,如果没有结束条件,递归是一个死循环
if n == 1:
return 1
return n + sum(n - 1)
sum(100)
print("1~100的和是{}".format(res))
Python中允许函数返回多个值 :
def test():
a = 10
b = 20
c = 30
#要将多个函数内的值返回给调用者
return a, b, c
#res = test()
#print(res)
#print(res[0])
x,y,z = test()
print(x,y,z)
10、全局函数:
40几个全局函数
import builtins
标签:函数,python,菜菜,学习,字符串,test,参数,print,def 来源: https://blog.csdn.net/weixin_44029504/article/details/104619194