摘要:本文系统讲解 Python 编程入门的基础知识,涵盖字面量与变量、常见数据类型、输入输出以及运算符四大核心模块。内容从字面量的书写格式、变量的定义与使用、标识符的命名规则与规范,到整数、浮点数、字符串、布尔等基础数据类型,再到 input() 输入、print() 输出与类型转换,最后详细介绍了算术、赋值、比较和逻辑四类运算符的用法,并配有大量可运行的代码示例与实战案例,帮助初学者快速建立 Python 编程的基本认知。
目录
一、字面量与变量
1.1 字面量
1.2 变量
1.3 标识符
1.4 变量交换案例
二、常见数据类型
2.1 基础数据类型
2.2 查看数据类型
2.3 字符串
2.4 字符串拼接
2.5 字符串格式化
2.5.1 使用 % 占位符
2.5.2 使用 f-string(推荐)
三、输入与输出
3.1 输入 —— input()
3.2 输出 —— print()
3.3 类型转换
四、运算符
4.1 算术运算符
4.2 赋值运算符
4.3 比较运算符
4.4 逻辑运算符
一、字面量与变量
1.1 字面量
字面量(Literal):在程序中直接书写出来的固定值(数据)。
常见字面量类型及书写格式:
| 整数 | int | 数字类型,存放整数 | 10、18、-5、0 |
| 浮点数 | float | 数字类型,存放小数 | 8.5、3.14、1.0、-3.5 |
| 布尔 | bool | 表示逻辑上的真或假 | True、False |
| 字符串 | str | 描述文本的数据类型 | "人生苦短,我用Python" |
| 空值 | NoneType | 表示空或无值,仅包含一个值 None | None |
| 数据容器 | list/tuple/set/dict | 存储多项数据的容器 | — |
代码示例:
print(100) # 整数(int)
print(3.14) # 浮点数(float)
print(True) # 布尔(bool),首字母必须大写
print("hello world") # 字符串(str)
print(None) # 空值(NoneType)
布尔类型的本质是整数:True 等价于 1,False 等价于 0
print(True + 1) # 2
print(True – 1) # 0
关于布尔值的书写:True、False 是 Python 的关键字,首字母必须大写。写成小写的 true、false 会被当作普通变量名处理,直接使用会报 NameError(变量未定义错误)。
小结:
1.2 变量
变量:程序中用来存储数据的容器。经常变化或需要重复使用的数据,通常存放在变量中。
定义格式:
变量名 = 变量值
格式说明:
- 变量名:给存储数据的空间起的名字
- =:赋值运算符,把等号右侧的值赋予左侧的变量
- 变量值:变量中存储的具体数据
代码示例(动态类型):
# Python 是动态类型语言:同一个变量可以先后绑定不同类型的数据
# (但项目开发中,推荐一个变量只存储一种类型的数据)
num = 1114.1
print(num) # 1114.1
num = num + 1 # 用变量的旧值参与运算,再把结果赋回变量
print(num) # 1115.1
num = 'ok' # 变量重新绑定到字符串
print(num) # ok
num = True # 变量重新绑定到布尔值
print(num) # True
为什么 print() 输出的是值,而不是内存地址? Python 的变量本质是"名字 → 对象"的绑定关系,变量里保存的确实是对象的引用(可理解为地址)。但 print() 的设计目标就是给人看的,它会自动把对象当前的内容转换成可读文本输出,所以看到的是"值"而不是地址——这与 C、Java 等语言打印对象默认输出地址的习惯不同,是 Python 有意的设计。如果确实想查看对象的内存地址,可以使用内置函数 id(变量)。
一条语句定义多个变量:左右两侧用逗号分隔,按位置一一对应赋值:
a, b = 1, "Python" # a = 1,b = "Python"
numBase, incr = 20.7, 50
输出变量的常用方式(以"字符串 + 数字"混合输出为例):
numBase = 20.7
incr = 50
方式一:print 多参数输出,逗号分隔,各部分之间自动加一个空格
print("未来第一个月的播放量:", numBase + incr)
方式二:f-string 格式化(推荐),变量直接嵌入字符串
print(f"未来第一个月的播放量: {numBase + incr}")
方式三:字符串拼接,非字符串必须先用 str() 转换
print("未来第一个月的播放量: " + str(numBase + incr))
案例:B站课程播放量
需求:课程基础播放量为 20.7 万,每月新增播放量 50 万,输出未来两个月每个月的播放总量。
base = 20.7 # 基础播放量(万)
add = 50 # 每月新增播放量(万)
month1 = base + add # 第一个月:基础 + 新增
month2 = month1 + add # 第二个月:第一个月 + 新增
print(f"第一个月播放总量:{month1}万") # 第一个月播放总量:70.7万
print(f"第二个月播放总量:{month2}万") # 第二个月播放总量:120.7万
小结:
- 一个变量同一时刻只存储一个值,重复赋值会覆盖旧值
- 变量必须先赋值(定义)才能使用
- 一条语句可以定义多个变量:a, b = 1, "Python"
1.3 标识符
标识符:程序员在代码中为变量、函数、类等元素所起的名字。
命名规则(强制规定,违反会报错):
合法与不合法标识符示例:
| name | ✅ | 合法 |
| Name | ✅ | 合法(区分大小写,与 name 不同) |
| _name | ✅ | 合法 |
| __name | ✅ | 合法 |
| na_me | ✅ | 合法 |
| name_ | ✅ | 合法 |
| na$me | ❌ | 包含非法字符 $ |
| and | ❌ | 关键字 |
| or | ❌ | 关键字 |
| true | ✅ | 合法标识符(小写 true 不是关键字,可以运行),但容易与布尔值 True 混淆,不建议使用 |
| False | ❌ | 关键字 |
| 6name | ❌ | 数字开头 |
| name6 | ✅ | 合法 |
| naME | ✅ | 合法 |
命名规范(建议,不遵守不会报错):
PEP 8:PEP(Python Enhancement Proposal,Python 增强提案)是 Python 社区的核心技术文档与标准化机制;PEP 8 是其中针对代码风格的指南(https://peps.python.org/pep-0008)。
命名规范示例:
| name | ✅ 符合规范 |
| age | ✅ 符合规范 |
| update_time | ✅ 符合规范 |
| my_name | ✅ 符合规范 |
| user_first_name | ✅ 符合规范 |
| a | ⚠️ 不推荐(意义不明确) |
| a1、a2 | ⚠️ 不推荐(意义不明确) |
| updatetime | ⚠️ 不推荐(未用下划线分隔) |
| myname | ⚠️ 不推荐(未用下划线分隔) |
小结:
1.4 变量交换案例
案例1:两个变量 a = 10、b = 20,交换它们的值并输出。
a = 10
b = 20
方法一:借助临时变量(通用写法,任何语言都适用)
temp = a # 先把 a 的值 10 保存到 temp
a = b # 把 b 的值 20 赋给 a
b = temp # 把 temp 中保存的 10 赋给 b
方法二:Python 特有的多元赋值(推荐)
a, b = b, a # 等号右边先整体求值,再按位置依次赋给左边
print(f"a = {a}, b = {b}") # a = 20, b = 10
错误写法:
a = b # a 变为 20,原来的 10 丢失
b = a # b 仍为 20,交换失败
案例2:三个变量 a = 100、b = 200、c = 300,将 a, b, c 的值分别赋给 c, a, b,并输出。
a, b, c = 100, 200, 300
a, b, c = c, a, b # 等号右边先求出 (300, 100, 200),再依次赋值
print(f"a = {a}, b = {b}, c = {c}") # a = 300, b = 100, c = 200
二、常见数据类型
2.1 基础数据类型
| int | 整数 | 数字类型,存放整数 | 10、-5 |
| float | 浮点数 | 数字类型,存放小数 | 8.5、3.14、1.0、-3.5 |
| str | 字符串 | 用引号包裹的文本 | "Python" |
| bool | 布尔 | 描述真和假 | True、False |
| NoneType | 空值 | 表示空或无值,仅包含一个值 None | None |
2.2 查看数据类型
方法一:type() —— 直接返回数据的类型。
type(要查看类型的数据)
print(type("Hello")) # <class 'str'>
print(type(10)) # <class 'int'>
print(type(3.14)) # <class 'float'>
print(type(True)) # <class 'bool'>
print(type(None)) # <class 'NoneType'>
num = 5.0
print(num) # 5.0(虽然数值上是整数,但带小数点)
print(type(num)) # <class 'float'>
布尔值参与算术运算时按整数处理:True 是 1,False 是 0
print(type(True + 1)) # <class 'int'>
方法二:isinstance() —— 判断数据是否属于指定类型,返回布尔值(True / False)。
isinstance(数据, 类型)
num = 5.0
print(isinstance(num, int)) # False
print(isinstance(num, float)) # True
num2 = -100
print(isinstance(num2, int)) # True
print(isinstance(num2, float)) # False
print(isinstance(num2, bool)) # False
isinstance() 的用途:当需要"根据数据的类型决定下一步做什么"时使用,典型场景是校验数据的类型是否合法(例如校验函数参数、处理外部传入的数据):
print(isinstance(100, int)) # True
print(isinstance("abc", str)) # True
print(isinstance(3.14, (int, float))) # True:第二个参数也可以是类型元组,匹配其中任意一个即成立
type() 与 isinstance() 的区别:type() 返回数据的准确类型;isinstance() 返回"是/否"的判断结果,并且支持判断"是否属于某个类型(或其子类)",实际开发中更常用。
说明:变量本身没有类型,type(变量) 得到的是变量当前所存储数据的类型。
2.3 字符串
字符:文本世界的基本单位,一个字母、一个数字、一个标点符号、一个汉字都是一个字符。字符串:由若干字符组成的序列,用引号包裹。
三种定义方式:
# 1. 双引号定义
s1 = "Hello"
2. 单引号定义:字符串本身含有单引号时,可用 \\ 转义;
更简洁的做法是外层直接用双引号(内外引号要一一配对,不能交叉)
s2 = 'It's very interesting'
s2 = "It's very interesting" # 推荐写法
3. 三引号定义:支持多行文本(前两种方式做不到)
s3 = """
尊敬的客户:
感谢您选择我们公司的产品。
我们将为您竭诚服务。
祝好~
"""
常见转义字符:
| \\' | 单引号 | 在单引号字符串中表示单引号本身 |
| \\" | 双引号 | 在双引号字符串中表示双引号本身 |
| \\n | 换行符 | 开始新的一行 |
| \\t | 制表符 | 缩进一个 Tab 的宽度 |
转义字符示例:
print('It\\'s OK') # It's OK(转义单引号)
print("say \\"hi\\"") # say "hi"(转义双引号)
print("第一行\\n第二行") # 分两行输出
print("姓名:\\tTom") # 冒号后隔一个 Tab 再输出 Tom
小结:
- 单引号与双引号完全等效,项目中保持一种写法即可
- 三引号适合多行文本等场景
2.4 字符串拼接
很多时候需要把多个字符串拼接起来,可以直接使用 +。
# 写法一:相邻的字符串字面量会自动拼接(仅适用于字面量,中间不能放变量)
slogan = "人生苦短 " "," "喵而咪之"
print(slogan) # 人生苦短 ,喵而咪之
写法二:使用 + 号拼接(字面量、变量都可以)
slogan = "人生苦短 " + "," + "喵而咪之"
print(slogan)
s1 = "人生苦短"
s2 = "我用Python"
print("吉多·范罗苏姆:" + s1 + "," + s2)
注意:+ 只能拼接字符串与字符串,无法直接拼接非字符串类型,非字符串必须先用 str() 转换成字符串。
案例:输出个人信息
需求:输出"大家好,我是lily,今年18岁,学习的专业是计算机科学,爱好Python、Java"。
name = "lily"
age = 18 # age 是 int 类型
pro = "计算机科学"
hobby = "Python、Java"
+ 号只认字符串,age 是整数,所以必须先 str(age) 转成字符串再拼接
message = "大家好,我是" + name + ",今年" + str(age) + "岁,学习的专业是" + pro + ",爱好" + hobby
print(message)
+ 拼接的局限:写法冗长、非字符串必须手动转换,于是有了下面的字符串格式化方案。
2.5 字符串格式化
2.5.1 使用 % 占位符
记忆方法:把 %s 读作"这里留一个空位"。% 表示占位,s 表示把填入的数据先转成字符串(s = string)再放到这个位置。
好处:因为会自动转成字符串,所以任何类型的数据都能填入 %s,不需要手动 str() 转换。
# 一个占位符:字符串后写 % 变量
s1 = "lily"
print("大家好,我是%s,欢迎大家进入Python课程的学习" % s1)
多个占位符:数据用括号包起来,按顺序一一对应
s1 = "人生苦短"
s2 = "我用Python"
print("吉多·范罗苏姆:%s,%s" % (s1, s2))
%s 可以接收任意类型,数字也会自动转成字符串
print("我今年%s岁" % 18)
2.5.2 使用 f-string(推荐)
在字符串前加 f,用 {} 直接嵌入变量或表达式,语法最简洁、可读性最好。
name = "涛哥"
age = 18
print(f"大家好,我是{name},今年{age}岁") # {} 中也可以写表达式,如 {age + 1}
s1 = "人生苦短"
s2 = "我用Python"
print(f"吉多·范罗苏姆:{s1},{s2}")
小结:
三、输入与输出
3.1 输入 —— input()
input() 用于接收键盘输入,程序会暂停等待用户输入,输入的内容以返回值的形式交给变量:
s = input(提示信息)
name = input("请输入您的姓名:")
print(f"欢迎您,{name}")
age = input("请输入您的年龄:")
print(f"您今年{age}岁")
注意:无论用户输入什么,input() 返回的一律是字符串类型。如果需要参与数学运算,必须先做类型转换(int() / float())。
3.2 输出 —— print()
print() 用于把数据输出到控制台,一次可以输出多个数据,用逗号分隔:
print(数据, …)
print("Hello World")
print(10)
print(3.14)
print("结果是:", 10 + 5) # 多个数据用逗号分隔,输出时自动以空格隔开
3.3 类型转换
| int(…) | 转为整数 | int("10") → 10 |
| str(…) | 转为字符串 | str(18) → "18" |
| float(…) | 转为浮点数 | float("3.14") → 3.14 |
| bool(…) | 转为布尔值 | bool(0) → False |
案例1:银行卡 ATM 取款
需求:银行卡余额 10000 元,根据输入的密码和取款金额执行取款,取款完毕后展示余额。
balance = 10000
password = input("请输入密码:")
amount = int(input("请输入取款金额:")) # input 返回字符串,必须转成数字才能参与减法
balance -= amount # 等效于 balance = balance – amount
print(f"取款成功,当前余额:{balance}元")
关键点:input() 得到的是字符串,字符串不能和整数做减法,所以要用 int() 转换后再计算。
案例2:计算两个数之和
需求:根据用户输入的两个数字,计算它们的和并输出。
num1 = float(input("请输入第一个数字:"))
num2 = float(input("请输入第二个数字:"))
print(f"两数之和为:{num1 + num2}")
常见错误:先拼接、后转换是错的。
num1 = input("请输入第一个数字:") # 输入 1,得到字符串 "1"
num2 = input("请输入第二个数字:") # 输入 2,得到字符串 "2"
int(num1 + num2) # 错:字符串的 + 是拼接,"1" + "2" 得到 "12",再转成 12,不是 3
int(num1) + int(num2) # 对:先把每个字符串各自转成数字,再做加法
小结:
四、运算符
4.1 算术运算符
算术运算符用于执行基本的数学运算。
| + | 加法 | 8 + 3 → 11 |
| – | 减法 | 8 – 3 → 5 |
| * | 乘法 | 3 * 8 → 24 |
| / | 除法 | 10 / 5 → 2.0(结果一定是小数) |
| // | 整除(向下取整) | 10 // 3 → 3 |
| % | 取余(求模) | 10 % 3 → 1(10 除以 3 取余数) |
| ** | 幂(乘方) | 10 ** 3 → 1000 |
代码示例:
print(8 + 3) # 11
print(8 – 3) # 5
print(3 * 8) # 24
print(10 / 5) # 2.0 除法结果永远是浮点数
print(10 // 3) # 3 只保留整数部分
print(10 % 3) # 1 余数
print(10 ** 3) # 1000 幂运算
优先级:() 最高 > ** > * / // % > + –
print(0.1 + 10 / 4 ** 2) # 先算 4**2=16,再算 10/16=0.625,最后加 0.1 → 0.725
案例1:输入两个数 x 与 y,分别输出 x+y 和 x-y 的结果。
x = float(input("请输入x:"))
y = float(input("请输入y:"))
print(f"x + y = {x + y}")
print(f"x – y = {x – y}")
浮点数精度损失:计算机底层用二进制存储数据,而二进制无法精确表示所有小数(就像十进制无法用有限位数写出 1/3),所以浮点运算可能出现误差,例如 0.1 + 0.2 的结果是 0.30000000000000004。这是所有编程语言的通病,不是 Python 的 bug。一般场景可以用 round(x, 2) 四舍五入到指定小数位;对精度要求高的场景(如金额计算)使用 decimal 模块。
案例2:输入三个整数,计算平均数。
a = int(input("请输入第一个整数:"))
b = int(input("请输入第二个整数:"))
c = int(input("请输入第三个整数:"))
avg = (a + b + c) / 3
print(f"平均数为:{avg}")
案例3:输入梯形的上底、下底、高,计算梯形面积。
upper = float(input("请输入上底:"))
lower = float(input("请输入下底:"))
height = float(input("请输入高:"))
area = (upper + lower) * height / 2
print(f"梯形面积为:{area}")
案例4:输入圆的半径,计算圆的周长和面积(周长:2πr,面积:πr²)。
import math
r = float(input("请输入圆的半径:"))
circumference = 2 * math.pi * r
area = math.pi * r ** 2
print(f"圆的周长为:{circumference}")
print(f"圆的面积为:{area}")
案例5:计算身体质量指数 BMI(BMI = 体重(kg) / 身高(m)²)。
weight = float(input("请输入体重(kg):"))
height = float(input("请输入身高(m):"))
bmi = weight / (height ** 2)
print(f"您的BMI指数为:{bmi}")
小结:
- 算术运算符:+、-、*、/、//、%、**。
- 注意事项:涉及浮点数的运算可能损失精度(计算机底层基于二进制存储和处理数据,二进制无法精确表示所有小数)。
4.2 赋值运算符
赋值运算符用于把右侧的值(或表达式的结果)保存到左侧的变量中。
| = | 赋值 | num = 1 + 2,结果 num 的值为 3 |
| += | 加法赋值 | num += 2 等效于 num = num + 2 |
| -= | 减法赋值 | num -= 2 等效于 num = num – 2 |
| *= | 乘法赋值 | num *= 2 等效于 num = num * 2 |
| /= | 除法赋值 | num /= 2 等效于 num = num / 2 |
| %= | 取余赋值 | num %= 2 等效于 num = num % 2 |
| //= | 整除赋值 | num //= 2 等效于 num = num // 2 |
| **= | 幂赋值 | num **= 2 等效于 num = num ** 2 |
代码示例:
num = 85
print(num) # 85
num += 10 # 等效 num = num + 10
print(num) # 95
num -= 10 # 等效 num = num – 10
print(num) # 85
num *= 10 # 等效 num = num * 10
print(num) # 850
num /= 10 # 等效 num = num / 10
print(num) # 85.0 结果变成了浮点数!
num //= 10 # 等效 num = num // 10
print(num) # 8.0
num %= 3 # 等效 num = num % 3
print(num) # 2.0
num **= 3 # 等效 num = num ** 3
print(num) # 8.0
为什么 /= 之后变量变成了浮点数? Python 3 中 / 是真除法,无论操作数是不是整数,结果一律是 float(850 / 10 得到 85.0 而不是 85),复合赋值 /= 同理;而 +=、-=、*= 在两个整数之间运算时仍保持整数。这正是普通除法 / 与整除 // 的关键区别。
4.3 比较运算符
比较运算符(关系运算符)用于比较两个值的大小或相等关系,结果一定是布尔值:关系成立为 True,不成立为 False。
| == | 等于 | a == b:判断 a 是否等于 b |
| != | 不等于 | a != b:判断 a 是否不等于 b |
| > | 大于 | a > b:判断 a 是否大于 b |
| >= | 大于等于 | a >= b:判断 a 是否大于等于 b |
| < | 小于 | a < b:判断 a 是否小于 b |
| <= | 小于等于 | a <= b:判断 a 是否小于等于 b |
代码示例:
a, b = 10, 20
print(a == b) # False
print(a != b) # True
print(a > b) # False
print(a >= b) # False
print(a < b) # True
print(a <= b) # True
注意:== 是比较是否相等,= 是赋值,两者完全不同
典型应用场景:
# 判断一个数是否为偶数:能被 2 整除(余数为 0)
num = 8
print(num % 2 == 0) # True
电商支付:判断银行卡余额是否足够
balance, price = 99.9, 59.9
print(balance >= price) # True
电商购买:判断货物库存是否足够
stock, quantity = 3, 5
print(stock >= quantity) # False
点餐筛选:价格不超过 100 元
price = 88
print(price <= 100) # True
4.4 逻辑运算符
逻辑运算符用于连接多个布尔表达式(其值为"真"或"假"),并返回一个最终的布尔结果。
| and | 逻辑与(并且) | 左右两边都为 True,结果才为 True |
| or | 逻辑或(或者) | 左右两边只要有一个为 True,结果就为 True |
| not | 逻辑非(取反) | True 变为 False,False 变为 True |
代码示例:
print(True and True) # True 两者都成立
print(True and False) # False
print(True or False) # True 有一个成立即可
print(False or False) # False
print(not True) # False 取反
print(not False) # True
age = 25
print(age >= 18 and age <= 60) # True:年龄在 18~60 之间
案例1:键盘输入一个整数,判断它是否在 10~20 之间(含边界)。
num = int(input("请输入一个整数:"))
print(f"是否在10-20之间:{num >= 10 and num <= 20}")
案例2:键盘输入一个整数,判断它是否不在 10~20 之间。
num = int(input("请输入一个整数:"))
print(f"是否不在10-20之间:{num < 10 or num > 20}")
not 什么时候用? 当逻辑是"某个条件不成立时才……",或需要对已有的布尔变量、判断结果整体取反时使用,可以避免写出啰嗦的否定条件:
is_vip = False
if not is_vip: # 不是会员时执行,比 is_vip == False 更规范
print("请开通会员")
"不在 10~20 之间"的另一种写法:先算出"在之间",再整体取反
print(not (10 <= num <= 20))
典型应用场景:
| 密码登录:用户名正确并且密码正确 | and | 两个条件同时满足 |
| 登录方式:扫码登录或者密码登录或者短信登录 | or | 满足其中一个即可 |
小结:
网硕互联帮助中心



评论前必须登录!
注册