02 基础语法
📋 资料说明
- 来源:课程 day01 后半 ~ day02
- 笔记:
尚硅谷大模型技术之Python1.0.docx第 2~3 章 - 每日一考:
day01.md(7题)、day02_答案.md(3题) - 视频:❌ 跳过(约 36 个视频)
🟢 🤖 AI 替代率:99%
为什么是这个水平:
本节涉及的所有内容——变量声明、数据类型、运算符、输入输出——都是确定性语法规则,没有任何设计决策或判断余地。AI 在训练数据中见过数亿行 Python 代码,对这些基础语法的生成准确率接近 100%。无论是代码示例、语法解释还是练习题,AI 都可以稳定输出正确结果。
唯一需要人类参与的可能是:type() 函数在不同场景下的输出结果判断,以及位运算等不常用的知识——这些属于"知道存在即可、用时查阅"的范畴。
👤 人工干预率:1%
几乎无需人工干预。建议:理解不同语言之间的语法差异(如 Python 的 // 是整除,Java 的 // 是注释),这一条在实际编码中很少出错。
1. 注释
python
# 单行注释:使用 # 号
"""
多行注释:使用三个双引号
可以写多行说明
"""
'''
三个单引号也可以
'''2. 变量
变量的定义
python
# Python 是动态类型语言,变量不需要声明类型
name = "Alice" # 字符串
age = 25 # 整数
height = 1.75 # 浮点数
is_student = True # 布尔值
# 变量重新赋值可以改变类型(不推荐在正式代码中这样做)
age = "二十五" # 从 int 变为 str变量的内存模型
python
# Python 中的变量本质上是"标签"(引用),而非"盒子"
a = 10 # 变量 a 指向对象 10
b = a # 变量 b 指向同一个对象 10
a = 20 # 变量 a 指向新对象 20,b 仍指向 10
print(b) # 10标识符命名规则
| 规则 | 说明 | 示例 |
|---|---|---|
| 组成 | 字母、数字、下划线 | my_var, var1, _private |
| 数字开头 | ❌ 不允许 | 1var ❌ |
| 区分大小写 | name 和 Name 不同 | ✅ |
| 关键字 | 不能使用 Python 保留字 | if, for, class ❌ |
| 约定 | 变量用小写+下划线 | user_name ✅ |
Python 中的关键字列表:
python
import keyword
print(keyword.kwlist)
# ['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', ...]常量约定
Python 没有真正的常量。通常用全大写命名表示"请勿修改":
python
PI = 3.14159
MAX_CONNECTIONS = 1003. 数据类型
基本数据类型
| 类型 | 名称 | 示例 | 说明 |
|---|---|---|---|
int | 整数 | 10, -5, 0 | 任意大小(不限长度) |
float | 浮点数 | 3.14, 1.5e10 | 双精度浮点 |
bool | 布尔值 | True, False | 注意大写开头 |
str | 字符串 | "Hello", 'World' | 单引号或双引号均可 |
NoneType | 空值 | None | 表示"没有值" |
整数类型
python
# Python 整数支持任意精度
a = 42
b = 9999999999999999999999999999999 # 大整数没问题
# 不同进制表示
print(0b1010) # 二进制 → 10
print(0o12) # 八进制 → 10
print(0xA) # 十六进制 → 10
# 进制转换
print(bin(10)) # '0b1010'
print(oct(10)) # '0o12'
print(hex(10)) # '0xa'浮点数类型
python
# 浮点数精度问题(所有编程语言共有)
print(0.1 + 0.2) # 0.30000000000000004
print(round(0.1 + 0.2, 1)) # 0.3
# 科学计数法
print(1.5e10) # 15000000000.0
print(1.5e-10) # 0.00000000015布尔类型
python
# 布尔值实质上是整数的子类:True=1, False=0
print(True + True) # 2
print(False * 10) # 0
# 布尔转换
print(bool(1)) # True
print(bool(0)) # False
print(bool("")) # False
print(bool("abc")) # True
print(bool([])) # False (空容器为 False)字符串类型
python
# 三种表示方式
s1 = '单引号'
s2 = "双引号"
s3 = """三引号:支持
换行"""
# 转义字符
print("Hello\nWorld") # 换行
print("Tab\there") # 制表符
print("她说:\"你好\"") # 转义双引号
# 原始字符串
print(r"C:\Users\name") # 不转义:C:\Users\name类型转换
python
# 转换为整数
print(int(3.14)) # 3(直接截断,不四舍五入)
print(int("42")) # 42
# 转换为浮点数
print(float(3)) # 3.0
print(float("3.14")) # 3.14
# 转换为字符串
print(str(42)) # "42"
print(str(3.14)) # "3.14"
# 转换为布尔值
print(bool(1)) # True
print(bool(0)) # False类型判断
python
print(type(10)) # <class 'int'>
print(type("hello")) # <class 'str'>
print(isinstance(10, int)) # True4. 运算符
算术运算符
| 运算符 | 含义 | 示例 | 结果 |
|---|---|---|---|
+ | 加法 | 10 + 3 | 13 |
- | 减法 | 10 - 3 | 7 |
* | 乘法 | 10 * 3 | 30 |
/ | 除法(浮点) | 10 / 3 | 3.333... |
// | 整除 | 10 // 3 | 3 |
% | 取余 | 10 % 3 | 1 |
** | 幂运算 | 2 ** 3 | 8 |
Python vs Java/JS 差异:
- Python 的
//是整除(Java 和 JS 的/在整数操作时就是整除)- Python 的
/总是返回浮点数(Java 需要手动转换为 float)- Python 的
**表示幂(Java 用Math.pow(),JS 可用**也可用Math.pow())
赋值运算符
python
x = 10
x += 3 # x = x + 3
x -= 3 # x = x - 3
x *= 3 # x = x * 3
x /= 3 # x = x / 3
x //= 3 # x = x // 3
x %= 3 # x = x % 3
x **= 3 # x = x ** 3比较运算符
| 运算符 | 含义 | 示例 | 结果 |
|---|---|---|---|
== | 等于 | 10 == 10 | True |
!= | 不等于 | 10 != 5 | True |
> | 大于 | 10 > 5 | True |
< | 小于 | 10 < 5 | False |
>= | 大于等于 | 10 >= 10 | True |
<= | 小于等于 | 10 <= 5 | False |
Python 特性:支持链式比较
pythonprint(1 < 3 < 5) # True(等价于 1 < 3 and 3 < 5)
逻辑运算符
| 运算符 | 含义 | 示例 | 结果 |
|---|---|---|---|
and | 与 | True and False | False |
or | 或 | True or False | True |
not | 非 | not True | False |
Python vs Java/JS 差异:
- Python 用
andornot(单词)- Java 用
&&||!(符号)- JS 两种方式都支持
成员运算符
python
print("a" in "abc") # True
print("x" not in "abc") # True
print(10 in [1, 2, 3]) # False身份运算符
python
a = [1, 2, 3]
b = [1, 2, 3]
c = a
print(a == b) # True (值相等)
print(a is b) # False (不同对象)
print(a is c) # True (同一对象)
# 小整数缓存(-5~256)
x = 256
y = 256
print(x is y) # True(Python 缓存了小整数)运算符优先级(从高到低)
** # 幂运算
+x, -x, ~x # 正负号、按位取反
*, /, //, % # 乘除取余
+, - # 加减
<<, >> # 移位
& # 按位与
^ # 按位异或
| # 按位或
==, !=, >, <, >=, <= # 比较
not # 逻辑非
and # 逻辑与
or # 逻辑或5. 输入与输出
print 输出
python
# 基本输出
print("Hello World")
# 输出多个值(自动空格分隔)
print("Name:", "Alice", "Age:", 25)
# Name: Alice Age: 25
# 修改分隔符
print("a", "b", "c", sep="-")
# a-b-c
# 修改结束符(默认换行)
print("Hello", end=" ")
print("World")
# Hello World
# 输出到文件
with open("output.txt", "w") as f:
print("写入文件", file=f)格式化输出
python
name = "Alice"
age = 25
# 方式一:f-string(Python 3.6+,推荐)
print(f"Name: {name}, Age: {age}")
# Name: Alice, Age: 25
# 数字格式化
price = 3.14159
print(f"Price: {price:.2f}") # Price: 3.14
print(f"Percent: {0.85:.1%}") # Percent: 85.0%
# 方式二:format()
print("Name: {}, Age: {}".format(name, age))
print("Name: {n}, Age: {a}".format(n=name, a=age))
# 方式三:% 格式化(类 C 风格)
print("Name: %s, Age: %d" % (name, age))input 输入
python
name = input("请输入名字: ")
print(f"你好, {name}")
# input 返回的是字符串,需要类型转换
age = int(input("请输入年龄: "))
print(f"明年你 {age + 1} 岁")6. 练习题
练习 1:变量交换
不使用第三个变量,交换两个变量的值。
练习 2:类型转换
输入一个浮点数(如 3.14),分别输出它的整数部分、小数部分和字符串形式。
练习 3:计算器
输入两个数和一个运算符(+ - * /),输出计算结果。
参考答案
练习 1:
python
a, b = 10, 20
a, b = b, a # Python 特有的多重赋值交换
print(a, b) # 20 10练习 2:
python
num = float(input("请输入浮点数: "))
print(f"整数部分: {int(num)}")
print(f"小数部分: {num - int(num)}")
print(f"字符串: {str(num)}")练习 3:
python
a = float(input("第一个数: "))
b = float(input("第二个数: "))
op = input("运算符 (+ - * /): ")
if op == "+":
print(f"{a} + {b} = {a + b}")
elif op == "-":
print(f"{a} - {b} = {a - b}")
elif op == "*":
print(f"{a} * {b} = {a * b}")
elif op == "/":
print(f"{a} / {b} = {a / b}")