python零基础入门到入土3.0
python系列第三章
1. 字符串的表示方式
在Python里,可以使用一对单引号、对双引号或者一对三个双引号、一对三个单引号
#如果字符串里还有双引号,外面就可以使用单引号
m = 'xiaoming said : "I am xiaoming"'
n = "I'm xiaoming"
p = """ xiaomig said : "I am xiaoming" """
1.1 字符串里的转义字符
- 字符串里的转义字符
\
\'
==>显示一个普通的单引号\"
==>显示―个普通的双引号\n
==>表示一个换行\t
==>表示显示一个制表符\\
==>表示一个普通的反斜线
在字符串的前面添加r在Python里表示的是原生字符串
x1 = 'hello \t world'
print(x1)
x2 = 'good mor \\ ning'
print(x2)
x3 = r'hello \teacher'
print(x3)
2. 字符串的下标和切片
2.1 下标 即索引
可迭代对象: str list tuple dict set range都可以便利
str list tuple可以通过下标来获取或者操作数据
在计算机里,下标都是从0开始的。
h
可以通过下标来获取或者修改指定位置的数据
字符串是不可变的数据类型
案例:
2.2 切片
切片就是从字符串里复制一段指定的内容,生成一个新的字符串
切片语法m[ start: end :step]
包合start,不包含end
step指的是步长,理解为间隔。 每隔step-1个取一次
step 为负数,表示从右往左获取
案例:
m = 'sahdghjgbdnflvkreoijtiuqwrwetre'
print(m[5]) # m[index]==>获取指定下标上的数据
print(m[2:9]) # 包合start,不包含end
print(m[2:]) # 如果只设置了start,会”截取"到最后
print(m[:9]) # 如果值设置了end,会从头开始"截取"
print(m[3:15])
print(m[3:15:2]) # dhgdfv
print(m[::]) # 从头到尾复制一遍
print(m[::-1]) # step 为负数,表示从右往左获取
print(m[-9:-5]) # start和end如果是负数,表示从右边数
3. 格式化字符串 format()
4. 内置函数
4.1 abs() 求绝对值
4.2 divmod() 整除返回一对商和余数
4.3 pow() 用于乘方运算
4.4 round() 四舍五入
4.5 input() 用户输入
4.6 print() 输出打印
5. 函数的介绍
函数的语法:
def函数名(参数1,参数2,参数3…): 函数体
- 1.使用def关键字声明函数
- 2.函数有两部分组成:声明部分和实现部分
- 3.函数名要遵循标识符的命名规则,尽量做到见名知意
- 4.函数定义时的参数,叫做形式参数(形参)可以写也可以不写,取决于功能的需求
- 5.函数体要缩遇
- 6.函数要想使用,必须调用,调用的格式:函数名()
- 7.函数的调用必须在函数定义之后
5.1 函数调用时注意的事项
1.在同一个文件中,若出现了定义的函数名相同的情况,后面定义的函数会覆盖前面定义的函数
2.若将函数名赋值给了一个变量,那还可以通过该变量调用函数
3.函数必须先定义,然后才能调用.函数调用必须在函数定义的下方
4.在项目中一个函数可以多次调用
5.2 函数的参数
1.定义函数时的传递的参数叫做形式参数,也叫做形参
2.调用函数时传递的参数叫做实际参数,也叫做实参.在去调用函数的时候,实参会把形参替换.
3.若在定义函数时,有形参,在调用时,函数必须传入实参.并且实参的数量和形参的数量保持一致
4.在函数中形参的名字和实参的名字可以一样,(本质上两者开辟的是不同的内存)
5.3 函数中参数的类型
a.必须顺序参数
在调用函数的时候,必须以正确的顺序传参,参数数量保持一致
def student(name, age):
print("我的姓名是:%s,年龄是:%d" % (name, age))
# student(32, "王麻子") 顺序不同报错
student("王麻子",32) # 执行
b.关键字参数
使用关键字参数允许函数调用的时候,实参的顺序和形参的顺序不一致,可以使用关键字进行自动匹配
def student(name, age):
print("我的姓名是:%s,年龄是:%d" % (name, age))
student(age=32,name="王麻子")
c.默认参数
1.在定义函数时,若某个参数没有传递,但是定义了默认参数,会直接使用默认参数,若传递了参数,则会把默认参数替换
2.若函数设置了默认参数,并且该函数有多个参数,一般把默认参数放在参数列专的最后面
def get_sum(num1,num2,num3=21):
print(num1+num2+num3)
get_sum(12,34,56) #102
get_sum(12,34) #67
5.4 函数中的不定长参数
不定长参数:
1.*args:用来接收多个位置参数,得到的是一个元组
def demo(*args):
print(*args)
demo("hello", 12, 34, 5, 65)
demo(43, 45, 6)
2.在定义函数时,若函数中有多个参数,其中某一个参数是不定长参数,一般把不定长参数放在参数列表的最后面\
def test(name,*args):
print(name,*args)
test("麻瓜",12,34,56,86,43,"hello")
3. **kwargs:用来接收多个关键字参数,得到的是一个字典︰在传输参数的时候,必须是 key=value的形式传输
def fn(**kwargs):
print(kwargs)
fn(x=12, y=34, z=43)
5.5 函数的返回值
- 函数返回值需要使用return关键字进行返回.
- 函数在哪里调用,就把结果返回到了哪里.
- 若想使用返回的结果,可以定义变量接收,也可以直接输出。
2.return后面的代码不会执行
3.函数中若没有return关键字或者没有数据返回,则默认返回是None
4.return关键字一次性返回多个数据.多个数据之间使用,
隔开,结果以元组的形式返回
def test():
return "返回值"
print("123")
print(test()) # 不会打印123
def demo():
return
print(demo()) #None
def demo1():
print("你好啊!")
print(demo1())
def fn1():
return 12,34,45 #None
5.6 匿名函数
像这种函数都是有名字的函数
def test():
print("有名字的函数")
print(test())
匿名函数:是一个表达式,比普通函数简单使用lambada定义的表达式
lambada表达式中包含了参数,实现体,返回值
num1 = lambda num: num ** 2
print(num1(3))
5.7 回调函数
回调函数:把一个函数(a)作为一个参数传递到另一个函数(b)中去,那么这个函数a我们就叫做回调函数。
def add(x,y):
print(x+y)
def demo(x,y,func):
func(x,y)
demo(12,23,add)
5.8 闭包函数
如果一个函数里面嵌套了另外一个函数,外部的函数叫做外函数,内部的函数叫做内函数
如果在一个外部函数中定义了一个内部函数,并且外部函数的返回值是内部函数,就构成了一个闭包.则这个内部函数就被称为闭包
闭包函数的特点:内部函数可以使用外部函数的变量
闭包函数主要用于装饰函数的实现
def outer(x):
y = 11
def inner():
print("我是闭包函数", x + y)
return inner # 注意:这里返回的是函数体,不是函数的调用
fn = outer(7) # fun ===>inner 函数
fn() # 就相当于调用了inner 函数
5.9 函数的作用域
1.if 等分支语句和for in等循环语句不存在作用域的问题,他们里面定义的变量可以在外部直接访问
2.函数内部的变量,在函数的外部不能直接访问
3.函数内部可以直接访问函数外部的变量
num1 = 67
def fn1():
# 若想再函数的内部直接修改函数外部的变量,需要使用global关键字,将函数内部变量变更为全局变量
global num1
num1 = 88
print(num1)
fn1()
# print(num1) # 67 是在函数内部添加global关键字之前的结果
print(num1)
6. 海龟程序 turtle
import turtle
turtle.forward(200)
turtle.done()
6.1 海龟的 forward前进 和 backward后退
6.2 海龟的 right 右转 和 left 左转
6.3 海龟的 goto或setpos或setposition 指定位置
6.4 海龟的 set 设置坐标 和setheading或seth 转方向
6.5 海龟的 home 重置 和 circle 画圆
6.6 海龟的 dot 画点
6.7 海龟的 stamp 绘制印章 和 clearstamp 清除印章
6.8 海龟的 clearstamps 清除多个印章
6.9 海龟的 undo 撤销动作 和 speed 调速
6.10 海龟案例
一些画图原理:
案例:
1.
2.
3.
import turtle
turtle.shape("turtle")
turtle.color("red")
turtle.left(90)
turtle.forward(200)
turtle.right(90)
turtle.forward(200)
turtle.right(90)
turtle.forward(200)
turtle.right(90)
turtle.forward(200)
turtle.begin_fill()
turtle.circle(100)
turtle.end_fill()
turtle.done()
import turtle
turtle.shape("turtle")
turtle.color("red")
for i in [0,1,2,3,4]:
turtle.right(144)
turtle.forward(200)
turtle.done()
# 请进小海龟,并设置小海龟的外形和颜色
import turtle
turtle.shape("turtle")
turtle.color("red")
def drawstar(x, y, color):
turtle.up()
turtle.goto(x, y)
turtle.down()
turtle.color(color)
for i in [0, 1, 2, 3, 4]:
turtle.right(144)
turtle.forward(100)
# 设置小海龟的位置和朝向
# 绘制第一个五角星
drawstar(-200, 200, "blue")
# 再一次设置小海龟的位置和朝向
# 绘制第二个五角星
drawstar(300, 200, "green")
# 继续设置小海龟的位置和朝向,并绘制第三、第四个五角星
drawstar(-200, -200, "red")
drawstar(300, -200, "black")
turtle.up()
turtle.home()
turtle.done()
6.
7.
7. 海龟的状态
7.1 position或pos 获取海龟的位置 和 towards 获取坐标角度
7.2 xcor 获取位置x坐标 和 ycor 获取位置y坐标
7.3 heading 获取朝向 和 distance 获取海龟与坐标的距离
7.4 showturtle或st 显示海龟 和 hideturtle或ht 隐藏海龟
7.5 isvisible 判断海龟是否可见
7.6 shape 改变海龟形状和 getshapes 获得海龟形状
7.7 degrees 设置角度
7.8 radians 设置弧度
8. 画笔的控制
8.1 pendown或pd或down 落笔 和 penup或pu或up 抬笔
8.2 pensize或width 画笔粗细 和 isdown 判断画笔是否落下
8.3 colormode 颜色模式
8.4 pencolor 设置画笔颜色
8.5 fillcolor 设置填充颜色
8.6 color 同时设置画笔和填充颜色