Python基础语法
注释
# 单行注释
"""
这个是多行注释
"""
'''
这个也是多行注释,和上面多行注释一样
'''
运行文件开始
(因为一个项目通常有多个py文件,其他的py文件会被引用到一个最终调用的 main.py中,这样做可以防止这个脚本被其他地方引入的时候就被不必要的执行了)
# (因为一个项目通常有多个py文件,其他的py文件会被引用到一个最终调用的 main.py中,这样做可以防止这个脚本被其他地方引入的时候就被不必要的执行了)
if __name__ == "__main__":
print("... ...")
变量声明&数据类型
变量名只能包含数字、字母、下划线
且不能使用数字开头
1. 变量声明
a = 123
MyNum = 1
myNumber = 2
_Number = 0
_number = 1
the_name = "name"
s1 = 1
# 变量名只能包含数字、字母、下划线
# 且不能使用数字开头
2. 简单数据类型
整型、浮点型、字符型、布尔型
a = 1 # 整型
b = 1.2 # 浮点型
c = "word" # 字符型
d = true # 布尔型
e = false # 布尔型
3. 其他数据类型
a = [1,2,3] # 列表
b = {1,2,3} # 集合
c = (1,3,5) # 元组
d = {"c":1,"v":9}# 字典
输出_print
print("Hello world")
a = 555
print(a)
a = 1000
print(f"hello {a}") # 模版字符串
print("hello %d" % a) # %d 是占位符
print("学好技术\t才好挣钱") # \t 长空格
# 学好技术 才好挣钱
print("学好技术\n才好挣钱") # \n 换行
# 学好技术
# 才好挣钱
print("这是一个很长的文本,且设置为不换行", end="") # 设置文本不换行
输入_input
程序运行的时候允许用户输入的数据
默认类型为字符串类型
可以添加提示文本
a = input()
b = input("请输入;")
类型转换_str、int、bool、float
a = 11
b = str(a) # 数字转字符串
c = float(b) # 字符串转浮点
d = "100"
e = int(d) # 字符串转整型
f = bool(e) # 整型转布尔型
随机数生成_random
import random
a = random.randint(1,100) # 生成一个包含1和100的随机整数
b = random.uniform(1,100) # 生成一个包含1和100的随机小数
c = random.random() # 直接获取一个从0到1之间的数
print(a)
print(b)
print(c)
运算_+、-、*、/其他运算符
1. 加减乘除
注意;如果数字一开始是整型,经过运行符/之后的结果是小数,会自动转为浮点型
a = 1
b = 1
c = 1
d = 1
print(a)
print(b)
print(c)
print(d)
# 定义变量
a = a + 1
b = b - 1
c = c * 2
d = d / 5
print(a)
print(b)
print(c)
print(d)
# 运算变量
a += 1
b -= 1
c *= 2
d /= 5
print(a)
print(b)
print(c)
print(d)
# 运算简写
2. 平方运算
q = 2
print(q)
q = q ** 10
print(q)
q **= 10
print(q)
# 平方运算
3. 布尔运算
a = true
b = false
c = a and b # false
d = a or b # true
e = not a # flase
f = not b # true
# 布尔运算
4. 字符串运算
s1 = 'qqq'
s2 = "www"
qqq_www = s1 + s2 # qqqwww
qqq_qqq = s1 * 2 # qqqqqq
qqq_www_www = se + s2 * 2 # qqqwwwwww
5. 求余运算
a = 11
b = a % 2
print(b) # 1
条件判断
注意语法冒号_不可省略
注意缩进距离_精确到空格个数
1. ==与条件判断
a = 11
b = a % 2
c = b == 0 # == 判断是否相等 相等返回true 不相等返回false
if c:
print(f"{a}是偶数")
else:
print(f"{a}不是偶数")
print("end")
# 教学写法
a = 11
if a % 2 == 0:
print(f"{a}是偶数")
else:
print(f"{a}不是偶数")
print("end")
# 开发常规使用简写
2. Input与条件判断
a = int(input("请输入您的分数"))
if a < 0 or a > 100:
print("分数不合法")
elif a < 60:
print("成绩不合格")
elif a < 70:
print('成绩合格')
elif a < 80:
print("成绩优秀")
elif a < 90:
print("数一数二")
else:
print("巅峰赛区")
3. !=与条件判断
a = 100
if a != 100:
print("a 不是100")
else:
print("a 是100")
补充小知识;eval 是一个内置函数,用于执行一个字符串表达式,并返回表达式的值。这个函数非常强大,但同时也非常危险,因为它会执行传入的字符串作为Python代码。
result = eval("2 + 3 * (4 - 1)")
print(result) # 输出 9
循环
1. while循环
a = 0
while a < 20:
a += 1
print(a)
if a == 12:
# continue 跳过最近循环当前循环直接跳跃到下一次循环
break # 跳出当前最近循环体
print("end")
# 初始变量a
# 当a<20时,循环成立
# 每次循环a都自增1,打印每次循环中的a
# 循环结束打印end
1.1 死循环
a = 0
while true:
print("死循环 无限循环")
print("不会被执行")
1.2 while搭配else
a = 0
while a < 10:
a += 1
print(a)
else:
print("循环正常结束 break结束不会触发")
2. for循环
2.1 基础用法
补充知识点;range函数生成的整数序列从0开始
a = range(5) # [0,9) 左闭右开 # 0 1 2 3 4 b = range(-1,5) # [-1,5) 左闭右开 # -1 0 1 2 3 4
for i in range(10):
print(f"我错了{i}次")
print("下次还敢")
2.2 等效用法
for i in [0,1,2,3,4,5,6,7,8,9]:
print(i)
# 等效用法1
arr = [0,1,2,3,4,5,6,7,8,9]
for i in arr:
print(i)
# 等效用法2
string = "aabbccdd"
for i in string:
print(i)
# 等效用法3
2.3 for搭配else
for i in range(10):
print(i)
if i == 9:
break
else:
print("循环正常结束 break结束不会打印")
字符串_" "
补充知识点1;
步长为1可以认定为每一次筛选内容是1,返回第1个,就是全部返回
步长为2可以认定为每一次筛选内容是2,返回第1个,就是间隔一个返回
以此类推... ...
补充知识点2;
字符串是不可变数据类型,不能通过下标直接修改元素
1. 切片
a = "i am a Python learner"
a = a[1:5] = a[1:5:1]# 切片 取下标包含1到下标不包含5的区域 返回给a
a = a[:5] # 切片 从开始一直到下标不包含5的区域 返回给a
a = a[1:] # 切片 从下标包含1开始一直到最后的渔区 返回给a
a = a[:] # 切片 切取全部 返回给a
a = a[1:5:2] # 切片 取下标包含1下标不包含5,且步进为2的区域 返回给a
a = a[::-1] # 切片 前后顺序调换 返回给a
a = a[-5:-1] # 切片 截取包含倒数第5个字符到不包含倒数第1个字符 返回给a
'''
"i am a Python learner"
012345...
补充知识点;
空格在程序里不代表空,和字母地位同等
字符串的起始下标和列表相同,从0开始,可以简单理解为字符串是特殊的列表
以后提及下标,均可以从0开始
'''
2. 替换_replace
a = "super man"
a = a.replace("man","woman")
print(a)
# super woman
3. 分割_split
a = "super man"
arr = a.split(" ")
print(arr)
# ["super","man"]
4. 拼合_join
arr = ["super","market"]
string = "_".join(arr)
print(string)
# super_market
5.其他
# 转换大小写
a = "hello".capitalize() # 将字符串第一个字母转换成大写
a = "hello".title() # 将字符串每个单词首字母转换成大写
a = "hello".lower() # 将字符串中大写字母转小写
a = "hello".upper() # 将字符串中消协字母转大写
# 删除空白字符
b = " hello".lstrip() # 删除字符串左侧空白字符
b = "hello ".rstrip() # 删除字符串右侧空白字符
b = " hello ".striip() # 删除字符串两侧空白字符
# 字符串通过下标获取元素
string = "app"
s = string[0]
列表_[ ]
1. 列表通过下标获取元素
# 列表类型通过下标获取元素
arr = [1,2,3,4]
a = arr[0]
2. 二维列表获取指定元素
# 二维列表获取指定元素
array = [[1,2,3],[4,5,6],[7,8,9]]
a = array[1]
print(a) # [4,5,6]
b = array[1][2]
print(b) # 6
3. 列表的多次嵌套和取值
# 列表的多次嵌套和取值
array = [
[[1, 2, 3],[4, 5, 6],[7, 8, 9]],
[[1, 2, 3],[4, 5, 6],[7, 8, 9]],
[[1, 2, 3],[4, 5, 6],[7, 8, 9]]
]
a = array[2][1][0]
print(a) # 4
4. 遍历大列表
# 遍历大列表
array = [
[[1, 2, 3],[4, 5, 6],[7, 8, 9]],
[[1, 2, 3],[4, 5, 6],[7, 8, 9]],
[[1, 2, 3],[4, 5, 6],[7, 8, 9]]
]
for a in array:
for b in a:
for c in b:
print(c) # 打印每一个数字
5. 任性的Python列表
补充知识点;
列表是有顺序的
# 列表里可以放任何你想要的内容和数据类型
b = 12
a =[1,False,"happy",b,[1,2,3]]
# 判断某一个东西是不是在a里
if 1 in a:
print(" 1 存在于a")
# 判断某一个东西不在a里
if false not in a:
print(" false 不存在于a")
6. 列表的CURD
b = 12
a =[1,False,"happy",b,[1,2,3]]
# 在列表末尾添加一个元素
a.append("qwert")
# 在下标为1的元素前面插入字符串“qq”
a.insert(1,"qq")
# 删除列表中的指定下标为1的元素
a.pop(1)
# 直接匹配元素删除
a.remove("happy")
# 清空列表a
a.clear()
# 直接删除列表本身
del a
# 直接修改列表中的某一个元素
a =[1,False,"happy",b,[1,2,3]]
a[0] = 10000
7. 列表的堆栈问题
b = 12
a =[1,False,"happy",b,[1,2,3]]
c = a.copy() # 将a的数据复制一份 赋值给c 推荐
d = a # 将a的指向复制给d 实际两个变量指向同一个堆 不推荐
8. 列表排序
a = [4,2,1,3]
# 直接修改原始列表
a.sort()
# 将排序完成的列表返回给a 原始列表不更改
a = sorted(a)
元组_( )
补充知识点;
元组数据不能被修改
# 访问元组数据
a =(1,2)
print(a[0])
a = "123123132"
b = [1,2,"st",4,5]
c = (1,2,"22")
for i in b:
print(i)
# 使用for循环和range函数以及len函数遍历元组c的索引
# range(len(c))生成一个从0到len(c)-1的整数序列,即0, 1, 2
# i在每次循环中会被赋值为这个序列中的一个整数
# 然后使用这个整数作为索引来访问元组c中的元素,并打印出这个元素的值
for i in range(len(c)):
print(c[i])
# 注意:在Python中,你也可以直接使用for循环遍历元组(或其他可迭代对象)中的元素,而不需要使用索引
集合_{ }
补充知识点;
集合最大的特点就是无序性和不重复性
# 集合最大的特点就是无序性和不重复性
s={1,3,3,4}
print(s)
# {1,3,4}
# 空集合
a = set()
在Python中,集合(set)是一种无序且不包含重复元素的数据结构。以下是集合的增、删、查(由于集合是无序的,因此没有直接的“改”操作,但可以通过添加和删除元素来间接实现修改)方法,以表格形式呈现:
| 操作类型 | 方法名称 | 描述与示例 |
|---|---|---|
| 增加元素 | add(element) | 向集合中添加一个元素,如果该元素已存在,则操作无效果。 |
update(iter) | 使用另一个集合或可迭代对象中的元素更新当前集合(添加新元素)。 | |
| 删除元素 | remove(element) | 从集合中移除一个元素,如果该元素不存在,则抛出KeyError。 |
discard(element) | 从集合中移除一个元素,如果该元素不存在,则不抛出异常。 | |
pop() | 移除并返回集合中的一个元素(随机选择)。如果集合为空,则抛出KeyError。 | |
clear() | 移除集合中的所有元素,使其变为空集。 | |
| 查询 | in 运算符 | 检查某个元素是否在集合中。例如:element in my_set。 |
len(set) | 返回集合中元素的数量。 | |
for 循环 | 遍历集合中的元素。例如:for item in my_set: print(item)。 |
以下是这些方法的简单示例:
# 创建一个集合
my_set = {1, 2, 3}
# 增加元素
my_set.add(4) # {1, 2, 3, 4}
my_set.update([5, 6]) # {1, 2, 3, 4, 5, 6}
# 删除元素
my_set.remove(3) # 如果3不存在,则抛出KeyError
my_set.discard(7) # 如果7不存在,则不抛出异常
removed_element = my_set.pop() # 随机移除一个元素,例如移除4,返回4
my_set.clear() # 清空集合,变为空集set()
# 查询
print(2 in my_set) # False,因为集合已被清空
print(len(my_set)) # 0,因为集合是空的
# 在未清空前,可以这样遍历集合
for item in {1, 2, 3, 4, 5, 6}:
print(item)
请注意,由于集合是无序的,因此遍历集合时元素的顺序可能与添加时的顺序不同。另外,集合不支持通过索引访问元素,因为索引在集合中是无意义的。
字典_{key:value}
1. 字典基础
# 空字典
a = {}
# 字典基础
d = {"name": "Pig", "age": 20}
d.keys()
# ['name','age']
d.values()
# ['Pig',20]
d.items()
# [('name','Pig'),('age',20)]
# 遍历字典
for k,v in d.items():
print(k)
print(v)
2. 字典的CURD
d = {"name": "Pig", "age": 20}
# 查
print(d["name")
# 改
d["name"] = "Fog"
# 单删
del d["age"]
# 全删
d.clear()
# 删除字典本身
del d
函数
1. 无参数函数
# 定义一个名为day的函数,它不接受任何参数
def day():
print("起床了") # 打印“起床了”,模拟起床动作
print("吃早饭") # 打印“吃早饭”,模拟吃早饭动作
print("上班") # 打印“上班”,模拟上班动作
print("回家") # 打印“回家”,模拟下班回家的动作
print("睡觉") # 打印“睡觉”,模拟睡觉动作
# 定义一个布尔变量a,并将其设置为True
a = True
# 使用for循环,循环变量i从0开始,到3结束(总共4次循环)
for i in range(4):
day() # 在每次循环中调用day函数,模拟四天的活动
# 使用if语句检查变量a是否为True
if a:
day() # 如果a为True,则再次调用day函数,相当于额外再模拟一天的活动
2. 带参数返回值函数
# 教学写法
def isDouble(n):
if n % 2 == 0:
return True
else:
return False
#正常开发简写
def isDouble(n):
return n % 2 == 0
num = 15
if isDouble(num):
print(f"{num} 是偶数")
else:
print(f"{num}不是偶数")
3. 调用全局变量并更改
DAY = 0
def day():
global DAY
if DAY % 2 == 0:
print("...")
else:
print(".")
DAY += 1
day()
4. 函数参数注释
def put_color(img, x_p, y_p, long, color):
'''
填充一定范围内的颜色
:param x_p: 填充正方形的x位置
:param y_p: 填充正方形的y位置
:param img: 图片名(路径)
:param Long:正方形的边长
:param coLor:填充颜色,如(0,2,43)
:return 无返回值
'''
if long == 0:
img.putpixel((x_p, y_p), color)
for n in range(long):
for m in range(long):
img.putpixel((x_p + n, y_p + m), color)
5. 递归
6. 函数返回值_元组的拆包
补充知识点;
元组、字典、集合、列表都可以拆包
def g():
return 1,2
b = g()
print(b)
#(1,2)
# 拆包
a, b = g()
print(a)
print(b)
7. 不定长参数
补充知识点;
普通参数必须要在不定长参数前面,否则会产生含义冲突
def a(n,*args):
for i in args:
print(i)
a(1,2,3,6,9)
补充知识点;
如果函数有多种参数类型,顺序必须按照
普通参数>默认参数>包裹位置参数>包裹关键字参数(说起来很抽象,看下面完整示例吧!)
def a(n, age = 18, *args, **kwargs):
if age >= 18:
print(n)
for i in args:
print(i)
else:
print("推测未成年")
print(kwargs["father"])
print(kwargs["mother"])
a(1, 90, 2,4,5,7,9,"father"=111,"mother"=110)
结尾说明_2024/10/10
本笔记由【记算机】手动完成,可能在过程中难免会有些许问题。欢迎拿到本文档小伙伴看到问题后可以告知我具体问题,方便我修改迭代。
qq邮箱:2224200604@qq.com
同时,感谢B站UP【阿岳】的整理和分享。
视频链接如下