学習のpython Caicai日 - 研究、スライス操作、機能、グローバルのStringオブジェクト\ローカル変数

まず、文字列オブジェクト・

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
公開された21元の記事 ウォンの賞賛8 ビュー1213

おすすめ

転載: blog.csdn.net/weixin_44029504/article/details/104619194