环境
- 解释器
- Python 解释器
- 纯净,占用空间少
- Anaconda
- Python 集成环境,包含常用的工具库
- 也提供了常用的代码开发工具,体积较大
- Python 解释器
规则
- 严格区分大小写
- 代码运行是至上而下的
- 每一个不同的部分要注释
- 引入工具包
- import
package - from
xximportpackage:导入package包中的xx- form
osimportgetwdasgt:导入os且将getwd更名为gt
- form
- import package as
pk
- import
- 标识符
- 不能用数字开头
- 不能和关键词重名
- 有字母下划线和数字组成
- 关键词: [‘False’, ‘None’, ‘True’, ‘and’, ‘as’, ‘assert’, ‘async’, ‘await’, ‘break’, ‘class’, ‘continue’, ‘def’, ‘del’, ‘elif’, ‘else’, ‘except’, ‘finally’, ‘for’, ‘from’, ‘global’, ‘if’, ‘import’, ‘in’, ‘is’, ‘lambda’, ‘nonlocal’, ‘not’, ‘or’, ‘pass’, ‘raise’, ‘return’, ‘try’, ‘while’, ‘with’, ‘yield’]
- 变量
print(s): 不是将数据赋予变量,而是将变量指向了数据所在的存储地址- A[变量名] —> B[内存地址] —> C[实际数据]
- 实际上是给
C 实际数据贴上了一个A 标签
- 局部变量:
def func(): 定义函数b=3:函数中定义变量
- 全局变量:
a = l
对象
- 查看对象属性和具有的方法
dir(print)PRTCL // PYTHONimport (os)dir (os)
- 查看对象的内存地址
print{id(a)}PRTCL // PYTHONa = lprint {id(a)}
- 查看对象的类型
type(a)PRTCL // PYTHONtype(a)
- 查看对象的长度
len(a)PRTCL // PYTHONlen("hello")#会输出 5#也可以输入函数,会输出函数对应值的长度
nput 输入的所有的值都会转化为str字符串
name=input("请输入你的姓名:") #在输入框中输入张三 print(name) #会输出张三- 删除PRTCL // PYTHONdel name#del + 函数名,直接将这个函从内存中删除
- 生成序列
rangePRTCL // PYTHON#range(start,stop[,step])#从 start 开始,默认是从 0 开始.#到 stop 结束,但不包括 stop#step 步长,默认为 1for i in range (5):#注意尾部的冒号print (i)#输出01234
数据和容器
- Python 内置了 6 重类型
Number数值String字符串List列表Tuple元素Dictionary字典Set集合
- 数据的类型
有序:可以使用下标 ( 索引 ) 访问元素无序:不可以使用下标 ( 索引 ) 访问元素可变:可以被修改不可变:不能修改
| 有序 | 无序 | |
|---|---|---|
| 可变 | 列表 | 字典.集合 |
| 不可变 | 字符串.元组 | 数值 |
数值
| 类型 | 值 | 范围 |
|---|---|---|
| int 整数 | 1,2 | (-∞,+∞) |
| float 浮点 | 1.2,3.7E-2E-2含义为3.7的-2 次方 | (-∞,+∞) |
| bool 布尔 | True,False | [True值为 1,False值为 0] |
| complex 复数 | x+yj | x 为实数所有有理数 & 无理数 y 为虚数无法定值的数,一般用 i表示%% 虚数无法单独存在,实数可以是 0%% |
- 复数:
- 不能单独存在,他们总是和一个值为 0.0 的实数部分一起构成一个复数
- 虚数部分不许有后缀 j 或者 J
- 实数部分和虚数部分都是浮点数 ^float
- 运算符
- 加
+ - 减
- - 乘
* - 除
/: Python25/2=2Python35/2=2.5 - 取余 / 取整
%,// - 乘方
** - 如果不同类型的数字进行运算,则结果为精度较高的那个类型
int+float=float
- 加
- 函数
- 该
len()函数返回列表的总长度。
- 该
- 该
max()函数返回列表中的最大值。 - 该
min()函数返回列表中的最小值。PRTCL // PYTHONstock1_prices = [2.52, 2.44, 2.32, 2.41, 2.51, 2.50, 2.44]stock2_prices = [8.36, 8.31, 8.21, 8.21, 8.25, 8.11, 8.13]print(len(stock1_prices)) # Output: 7print(max(stock1_prices)) # Output: 2.52print(min(stock2_prices)) # Output: 8.11 - 求绝对值:
abs(x); - 四舍五入:
round(x); - 返回两个数值的商和余数:
divmod(y,x);商就是结果的整数,余数是除不尽的剩余PRTCL // PYTHON# Python 示例被除数 = 17除数 = 5商 = 被除数 // 除数 # 3余数 = 被除数 % 除数 # 2print(f"{商}个整苹果,剩{余数}个")# 输出:3 个整苹果,剩 2 个 - 求取最大值 %% 最小值 %%:
maxmin - 求和:
sum
- math 模块
- Python
math模块提供了许多对浮点数的数学运算函数。同时还提供了cmath模块,cmath模块的函数跟math模块函数基本一致,区别是cmath模块运算的是复数,math模块运算的是数学运算。
math模块常用方法:- 三角函数:
sin、cos、tanh - 获取绝对值:
fabs - 向上取整:
ceil;向下取整:floor - 获取阶乘:
factorial - x 的 y 次方:
pow
- 三角函数:
- Python
字符串
- 特征
- 有限的字符集合
- 可以由汉字,数字,字母,符号组成
- 一般有引号包裹
- 创建方式
- 单引号:
`Python` - 双引号
``Python`` - 三引号
\```pyhton```\ - 类型转换
str(obj): 将现有的项转换为字符串^str- 单引号和双引号一样,不能换行
- 三引号创建的字符串可以换行
- 单引号:
- 转译字符PRTCL // PYTHON#print("张三:"老子是王五""")#现在的输出会报错#如果想要正常输出,需要添加转义符 \print("张三:\"老子是王五\"")#这样就能够正确输出#张三:"老子是王五"
- 常见的转义符
\n换行\t水平制表,跳到下一个 TAB 位置\\代表一个反斜线\\0空字符\v垂直制表- 有字符串但是不想他转义,可以使用
rprint(r"\a\b\c\d\e\f\g")
- 有字符串但是不想他转义,可以使用
- 字符串的运算PRTCL // PYTHONa="hello"b=" world"c=a+b#+ 号会拼接字符串#会输出 helloworldd="a"*2#* 号会将字符串乘以 2#会输出 aa
- 常见的转义符
- 索引 - 因为字符串是
有序数列,所以可以根据下表 ( 索引 ) 来访问 - 索引正向从 0 开始,倒向从-1 开始 -Str = "python"=>Str[0]=>p- 切片通过索引获取多个值就叫切片
- 批量获取(切片):
str[a:b:c],a是起始元素的位置,b是终止元素的位置,c是步长。 - 当
a=0 b=n c=1时,可以简写为str[::]每两个取一个可以写为str[::2]
PRTCL // PYTHONvowels = ['a', 'e', 'i', 'o', 'u']print(vowels[0 : 3])#从序号 0 到序号 3print(vowels[1 : 3])#从序号 1 到序号 3#所有切片 均不包含最后一位# Output:# ['a', 'e', 'i']# ['e', 'i'] - 批量获取(切片):
- 索引错误,常见错误
IndexErrorPRTCL // PYTHONTraceback (most recent call last):print(vowels[5])IndexError: list index out of range
- 切片通过索引获取多个值就叫切片
- 常用操作 
关系运算符
==等于!=不等于>大于<少于>=大于或等于<=小于或等于
if else
可以在 and 之间选择性地添加一个或多个
elif语句(“else if”的缩写),以提供额外的检查条件。有时两个语句根本不够。if``elsePRTCL // PYif grade > 90:print('A')elif grade > 80:print('B')elif grade > 70:print('C')elif grade > 60:print('D')else:print('F')** 注意:** 这些选项中只有一个会执行。
逻辑运算符
逻辑运算符,也称为布尔运算符,用于组合并计算两个条件。它们是and、or和not运算符:
andTrue如果两个条件都满足则返回True,否则返回False。orTrue如果至少有一个条件满足True,则返回,False否则返回。notTrue如果条件成立则返回False,反之亦然。- 以下是一些示例:
if hunger > 4 and anger > 1: print('Hangry')如果hunger变量大于 4_并且_变量anger大于 1,则程序打印“Hangry”。
if coffee > 0 or bubble_tea > 0: print('😊')如果coffee变量大于 0_或_变量bubble_tea大于 0,则程序打印笑脸。
if not tired: print('Time to code!')如果tired变量_不是_ True,则程序将打印“Time to code!” 那么你可能会想:and和or如此相似,我该如何记住它们之间的区别呢?让我们用表格来解释一下:
| 一个 | B | A 和 B | A 或 B |
|---|---|---|---|
False | False | False | False |
False | True | False | True |
True | False | False | True |
True | True | True | True |
While 循环
- 在编程中,循环用于重复执行一段代码,直到满足指定的条件。它是另一个非常强大的工具,被广泛使用!
- 人们在提到循环时通常会使用通用术语“迭代”;迭代只是意味着“重复”。我们要学习的第一种环路是
while环岛。你可以把它想象while成一个环形交叉路口。 - 在深入研究循环之前
while,让我们先看一个使用银行 ATM 的演示。创建一个enter_pin.py程序并输入以下内容:
print('BANK OF CODÉDEX')#打印名称
pin = int(input('Enter your PIN: '))#打印输入提示
while pin != 1234: pin = int(input('Incorrect PIN. Enter your PIN again: '))#循环比较 pin 是否和 1234 不相等 判断 True 还是 False#不相等则提示再次输入
if pin == 1234: print('PIN accepted!')#一直循环到 pin 等于 1234 则输出文本范围 range()
- 要循环执行一组代码指定次数,我们可以使用
for循环和range()函数。 该range()函数返回一个数字序列。默认情况下,该序列从 0 开始,以 1 为增量,以指定的数字结束。
for i in range(6): print(i)i对于内的数字range(6)(即 0 到 5),打印数字i。 这将输出:
012345- 注意,它是如何停止在 5 处的,并且没有打印 6。这是因为
range()实际上它在指定数字之前一个结束。 - 也可以理解为,内存的起始符为
0数字i-1才是实际显示的最后数值
列表{}
除了内置函数之外,Python 还有许多非常方便的内置列表方法。 以下是其中一些:
.append()方法将一个项目添加到列表的末尾。.insert()方法将项目添加到特定索引。.remove()方法根据值从列表中删除一个项目。.pop()方法删除特定索引处的项目。 让我们以 DNA 序列为例!🧬
dna = ['AUG', 'AUC', 'UCG']
dna.append('UAA')# ['AUG', 'AUC', 'UCG', 'UAA']dna.insert(2, 'GAU')# ['AUG', 'AUC', 'GAU', 'UCG', 'UAA']dna.remove('AUC')# ['AUG', 'GAU', 'UCG', 'UAA']dna.pop(0)# ['GAU', 'UCG', 'UAA']内置函数和列表中的方法的区别在于,方法在我们创建的列表变量上使用点符号语法。内置函数可以自行调用,但方法总是附加到调用它们的列表变量上。 另一个显著的区别是,虽然并非所有内置函数都定义为适用于列表,但列表方法仅适用于列表。 以下是可保存在笔记中的所有 11 种列表方法:
| 列表方法 | 描述 |
|---|---|
.append() | 将项目添加到列表末尾 |
.clear() | 从列表中删除所有项目 |
.copy() | 返回列表的浅拷贝 |
.count() | 返回值在列表中出现的次数 |
.extend() | 通过扩展将另一个列表附加到当前列表 |
.index() | 返回列表内值的索引 |
.insert() | 在列表中的指定位置插入一项 |
.pop() | 从列表中的指定位置删除一项 |
.remove() | 根据项目的值从列表中删除项目 |
.reverse() | 反转列表 |
.sort() | 对列表进行排序 |
循环运算案例
Fizz Buzz是一款儿童文字游戏,用来教除法。它也是无数公司经典的技术面试题。🐝

虽然这项挑战对于经验丰富的程序员来说可能很简单,但它的目的是淘汰 90% 无法创造性地运用编程知识解决新问题的求职者。想试试吗?
创建一个fizz_buzz.py程序,输出从 1 到 100 的数字。
问题在于:
- 对于 3 的倍数,打印“Fizz”而不是数字。
- 对于 5 的倍数,打印“Buzz”而不是数字。
- 这是棘手的部分:对于 3_和_5 的倍数,打印“FizzBuzz”。
输出应如下所示:
12Fizz4BuzzFizz78FizzBuzz11Fizz1314FizzBuzz...答案:
for i in range(1, 101): grade = "" if i % 3 == 0: grade += "Fizz" if i % 5 == 0: grade += "Buzz" else: print(grade or i) # 巧用 or 短路特性定义一个函数
那么我们如何从头创建一个函数呢? 用户定义函数是我们自己定义的用于执行特定任务的函数,它是一个两步过程:1️)定义和 2️)调用。 要定义一个函数,我们需要一个函数定义。函数定义以关键字开头def,后跟函数名、一对括号和一个冒号(按此顺序)。 函数定义如下:
def name(): # The code inside- 关键字
def。 - 函数名称,后跟一对括号
()。 - 冒号
:。 函数内部的代码称为函数体。与if语句和while循环一样,函数内部的代码必须缩进。 ** 注意:函数的常见命名约定是snake_case。 假设我们要创建一个名为的函数say_hello():
def say_hello(): print('Howdy! 🤠') print('How are you?')我们刚刚定义了一个打印出两个问候语的函数! 定义函数是创建函数的第一步,但这并不意味着 Python 会自动运行函数体中的代码。我们如何让 Python 知道我们想要执行函数体呢? 我们需要_调用_该函数!
调用函数
要调用一个函数,我们在代码中的某处使用函数名称后跟括号:
def say_hello(): print('Howdy! 🤠') print('How are you?')
say_hello()这将执行say_hello()一次该功能! 因此输出将是:
Howdy! 🤠How are you?我们也可以多次调用一个函数。例如:
def say_hello(): print('Howdy! 🤠') print('How are you?')
say_hello()say_hello()say_hello()这将执行该say_hello()函数三次! 因此输出将是:
Howdy! 🤠How are you?Howdy! 🤠How are you?Howdy! 🤠How are you?现在轮到您在程序中定义和调用函数了!
random 随机:
random()
生成 (0.0, 1.0) 范围内的随机浮点数uniform(a, b)
生成 (a, b) 范围内的随机浮点数choice(seq)
从非空序列中随机选择一个元素sample(seq, k)
从序列中随机选择 k 个不重复的元素shuffle(seq)
原地打乱序列顺序
函数:
范围
假设我们在函数体内创建了一个变量。我们可以在函数体外使用它吗?好吧,我们来看一下。 定义一个名为的函数并在其外部add()打印变量:answer
def add(x, y): answer = x + y return answer
print(answer)当我们运行此代码时,我们会收到一个错误:
NameError: name 'answer' is not defined这是由于所谓的范围。 范围决定了变量在程序中可见且可以使用的位置。 范围有两种类型:
- 该变量的作用域
answer仅在add()函数内部,是局部变量,属于函数局部作用域add()。 - 现在,在函数外部创建的变量称为全局变量,属于全局范围,这意味着它们可以被每个函数使用。 让我们尝试将
answer变量设置为全局变量(函数外部):
answer = 0
def add(x, y): answer = x + y return answer
add(3, 4)
print(answer)输出将不再是错误!
0注意,answer不是 7,而是 0,因为如果我们在函数内部创建一个同名变量,它将是局部变量,只能在函数内部使用。同名的全局变量将保持全局变量状态,并保持其原始值。
返回
我们了解到函数可以接受输入,但你知道函数也可以有输出吗?事实上,每个 Python 函数都有一个输出! 该return关键字用于终止函数并输出一个值:
def function_name(): # The code inside return value当我们不添加它时,Python 将隐式返回默认值None作为返回值。 当我们_确实_想明确说明时:
def add(x, y): answer = x + y return answer所以增加了一个return关键字,再加上我们想要输出的变量。 现在,当我们调用该函数时,将会有一个我们可以玩的输出:
total = add(4.99, 9.99) # total is 14.98这意味着我们实际上可以打印出一个函数调用!💡
print(add(3, 4)) # Same thing as print(7)print(add(1, 5)) # Same thing as print(6)print(add(5, 3)) # Same thing as print(8)这里,add()函数返回一个值,并且该返回值是该print()函数的一个参数。 输出将是:
768** 注意:当到达某个return语句时,Python 将停止当前函数的执行,并将值发送到调用该函数的位置。
打印与返回
现在您可能想知道,为什么我们要返回值而不是打印它们? 嗯,print()函数可以位于程序中的任何位置 - 函数内部或外部,而return函数的输出;您不需要打印出返回的任何内容。 根据经验法则:
return当您想要将值从代码中的一个点发送到另一个点时,请在函数中使用。print()当您想要向用户显示一些文本时,请在函数中使用。
模块
import random, math #也可以使用两行分别引入
#import math
#引入随机模块
dice = [1,2,3,4,5,6]
#指定一个值的随机范围
print(random.choices(dice))
#使用.choices(*) 来指定随机那个项
print(random.choices(dice,k=3))
#添加 k=*,来指定随机数量Auth_Verified: 2026.04.08
