目录
[1. 语法格式](#1. 语法格式)
[2. 缩进和代码块](#2. 缩进和代码块)
[3. 空语句 pass](#3. 空语句 pass)
[1. while循环](#1. while循环)
[2. for 循环](#2. for 循环)
[1. 创建函数/定义函数](#1. 创建函数/定义函数)
[2. 调用函数/使用函数](#2. 调用函数/使用函数)
[1. 一个函数中可以有多个 return 语句](#1. 一个函数中可以有多个 return 语句)
[2. 一个函数是可以一次返回多个返回值的. 使用 , 来分割多个返回值](#2. 一个函数是可以一次返回多个返回值的. 使用 , 来分割多个返回值)
[3. 使用 _ 来忽略不想要的返回值](#3. 使用 _ 来忽略不想要的返回值)
[1. 在不同的作用域中, 允许存在同名的变量](#1. 在不同的作用域中, 允许存在同名的变量)
[2. 在函数内部, 修改全局变量的值, 需要使用 global 关键字声明](#2. 在函数内部, 修改全局变量的值, 需要使用 global 关键字声明)
[3. 在 if / while / for 中定义的变量, 在语句外面也可以正常使用](#3. 在 if / while / for 中定义的变量, 在语句外面也可以正常使用)
[1. 使用 [ : ] 的方式进行切片操作](#1. 使用 [ : ] 的方式进行切片操作)
[2. 切片操作中可以省略前后边界](#2. 切片操作中可以省略前后边界)
[3. 切片操作还可以指定 "步长" , 也就是 "每访问一个元素后, 下标自增几步"](#3. 切片操作还可以指定 "步长" , 也就是 "每访问一个元素后, 下标自增几步")
[4. 切片操作指定的步长还可以是负数, 此时是从后往前进行取元素. 表示 "每访问一个元素之后, 下标自减几步"](#4. 切片操作指定的步长还可以是负数, 此时是从后往前进行取元素. 表示 "每访问一个元素之后, 下标自减几步")
一、条件/循环语句
(一)条件语句
1. 语法格式
- if 后面的条件表达式, 没有 ( )使用 ,: 作为结尾
- if / else 命中条件后要执行的 "语句块", 使用 缩进 (通常是 4 个空格或者 1 个 tab)来表示, 而不是 { }
- 对于多条件分支, 不是写作 else if, 而是 elif (合体了)
python
choice = input("输入 1 表示认真学习, 输入 2 表示躺平摆烂: ")
if choice == "1":
print("你会找到好工作!")
elif choice == "2":
print("你可能毕业就失业了!")
else:
print("你的输入有误!")
2. 缩进和代码块
- 使用缩进表示代码块。不同级别的缩进, 程序的执行效果是不同的
python
# 代码1
a = input("请输入一个整数: ")
if a == "1":
print("hello")
print("world")
python
# 代码2
a = input("请输入一个整数: ")
if a == "1":
print("hello")
print("world")
- 在代码1 中, print("world") 有一级缩进, 这个语句属于 if 内的代码块, 意味着条件成立, 才执行, 条件不成立, 则不执行
- 在代码2 中, print("world") 没有缩进, 这个语句是 if 外部的代码, 不属于 if 内部的代码块. 意味着条件无论是否成立, 都会执行
3. 空语句 pass
- pass 表示 空语句, 并不会对程序的执行有任何影响, 只是占个位置
python
a = int(input("请输入一个整数:"))
if a != 1:
pass
else:
print("hello")
(二)循环语句
1. while循环
python
while 条件:
循环体
python
#计算 1-100 的和
sum = 0
num = 1
while num <= 100:
sum += num
num += 1
print(sum)
2. for 循环
python
for 循环变量 in 可迭代对象:
循环体
- 打印 1-10
python
for i in range(1, 11):
print(i)
- 通过 range 的第三个参数, 可以指定迭代时候的 "步长". 也就是一次让循环变量加几
python
#打印 2, 4, 6, 8, 10
for i in range(2, 12, 2):
print(i)
python
#打印 10-1
for i in range(10, 0, -1):
print(i)
python
#打印 1-100
sum = 0
for i in range(1, 101):
sum += i
print(sum)
二、函数
(一)语法格式
1. 创建函数/定义函数
python
def 函数名(形参列表):
函数体
return 返回值
2. 调用函数/使用函数
python
函数名(实参列表) // 不考虑返回值
返回值 = 函数名(实参列表) // 考虑返回值
(二)函数返回值
python
# 定义函数
def calcSum(beg, end):
sum = 0
for i in range(beg, end + 1):
sum += i
return sum
# 调用函数
ret =calcSum(1, 100)
print(ret)
1. 一个函数中可以有多个 return 语句
python
# 判定是否是奇数
def isOdd(num):
if num % 2 == 0:
return False
else:
return True
result = isOdd(11)
print(result)
2. 一个函数是可以一次返回多个返回值的. 使用 , 来分割多个返回值
python
def getPoint():
x = 10
y = 20
return x, y
a, b = getPoint()
print(a)
print(b)
3. 使用 _ 来忽略不想要的返回值
python
def getPoint():
x = 10
y = 20
return x, y
_, b = getPoint()
print(b)#20
(三)变量的作用域
1. 在不同的作用域中, 允许存在同名的变量
2. 在函数内部, 修改全局变量的值, 需要使用 global 关键字声明
3. 在 if / while / for 中定义的变量, 在语句外面也可以正常使用
(四)函数递归
python
def factor(n):
if n == 1:
return 1
return n * factor(n - 1)
result = factor(5)
print(result)#结果120
(五)参数默认值
- 带有默认值的参数, 可以在调用的时候不传参
python
#算两个数字的和
def add(x, y, debug=False):
if debug:
print(f'调试信息: x={x}, y={y}')
return x + y
print(add(10, 20))
print(add(10, 20, True))
(六)关键字参数
通过 关键字参数, 来调整这里的传参顺序, 显式指定当前实参传递给哪个形参
三、列表
(一)创建列表
- 列表主要有两种方式. [ ] 表示一个空的列表
python
#如果需要往里面设置初始值, 可以直接写在 [ ] 当中
alist = [1, 2, 3, 4]
print(alist)
#列表中存放的元素允许是不同的类型
alist = [1, 'hello', True]
print(alist)
(二)访问下标
- 通过下标访问操作符 [ ] 来获取到列表中的任意元素
- 通过下标不光能读取元素内容, 还能修改元素的值
- 下标可以取负数,表示 "倒数第几个元素"
(三)切片操作
- 通过切片, 则是一次取出一组连续的元素, 相当于得到一个子列表
1. 使用 [ : ] 的方式进行切片操作
- alist[1:3] 中的 1:3 表示的是 [1, 3) 这样的由下标构成的前闭后开区间
- 也就是从下标为 1 的元素开始(2), 到下标为 3 的元素结束(4), 但是不包含下标为3 的元素
python
alist = [1, 2, 3, 4]
print(alist[1:3])
2. 切片操作中可以省略前后边界
python
alist = [1, 2, 3, 4]
print(alist[1:]) # 省略后边界, 表示获取到列表末尾
print(alist[:-1]) # 省略前边界, 表示从列表开头获取
print(alist[:]) # 省略两个边界, 表示获取到整个列表
3. 切片操作还可以指定 "步长" , 也就是 "每访问一个元素后, 下标自增几步"
4. 切片操作指定的步长还可以是负数, 此时是从后往前进行取元素. 表示 "每访问一个元素之后, 下标自减几步"
(四)遍历列表元素
python
alist = [1, 2, 3, 4]
for elem in alist:
print(elem)
python
#使用 for 按照范围生成下标, 按下标访问
alist = [1, 2, 3, 4]
for i in range(0, len(alist)):
print(alist[i])
python
#使用 while 循环. 手动控制下标的变化
alist = [1, 2, 3, 4]
i = 0
while i < len(alist):
print(alist[i])
i += 1
(五)插入元素
- 使用 append 方法, 向列表末尾插入一个元素(尾插)
python
alist = [1, 2, 3, 4]
alist.append('hello')
print(alist)
- 使用 insert 方法, 向任意位置插入一个元素
- insert 第一个参数表示要插入元素的下标
python
alist = [1, 2, 3, 4]
alist.insert(1, 'hello')
print(alist)
(六)查找元素
- 使用 in 操作符, 判定元素是否在列表中存在, 返回值是布尔类型
python
alist = [1, 2, 3, 4]
print(2 in alist)
print(10 in alist)
- 使用 index 方法, 查找元素在列表中的下标。返回值是一个整数. 如果元素不存在, 则会抛出异常
python
alist = [1, 2, 3, 4]
print(alist.index(2))
print(alist.index(10))
(七)连接列表
- 使用 + 能够把两个列表拼接在一起
- 此处的 + 结果会生成一个新的列表。而不会影响到旧列表的内容
python
alist = [1, 2, 3, 4]
blist = [5, 6, 7]
print(alist + blist)
- 使用 extend 方法, 相当于把一个列表拼接到另一个列表的后面
- a.extend(b) , 是把 b 中的内容拼接到 a 的末尾. 不会修改 b, 但是会修改 a
python
alist = [1, 2, 3, 4]
blist = [5, 6, 7]
alist.extend(blist)
print(alist)
print(blist)
四、元组
- 元组不能修改里面的元素, 列表则可以修改里面的元素
- 因此, 像读操作,比如访问下标, 切片, 遍历, in, index, + 等, 元组也是一样支持的
- 但是, 像写操作, 比如修改元素, 新增元素, 删除元素, extend 等, 元组则不能支持
python
atuple = ( )
atuple = tuple()