Python 基础课:环境搭建与入门语法
学习目标
今天结束后,你能够:
- 在本地成功安装并配置 Python 环境
- 使用 PyCharm 创建和运行 Python 项目
- 理解 Python 的基本语法规则
- 掌握变量、数据类型、字符串操作
- 掌握运算符和条件判断
- 完成简单的命令行交互程序
Python 简介
Python 是什么
Python 是一门高级编程语言,由 Guido van Rossum 在 1991 年发布。
核心特点:
- 动态类型语言:变量不需要声明类型,运行时自动推断
- 解释型语言:代码写在
.py文件中,由 Python 解释器逐行执行,不需要编译 - 跨平台:同一份代码可以在 Windows、macOS、Linux 上运行
- 语法简洁:用缩进表示代码块,没有大括号和分号
与 Java 的对比:
- Java 是静态类型、编译型语言(
.java→.class→ JVM 执行) - Java 用大括号表示代码块,Python 用缩进
- Python 代码量通常是 Java 的 1/3
主要应用领域:
- Web 开发(Django、Flask)
- 数据分析(Pandas、NumPy)
- 机器学习(TensorFlow、PyTorch)
- 自动化脚本
- AI 应用开发(本课程重点)
为什么选择 Python 做 AI 开发
很多人有 Java 基础,会问为什么 AI 开发不用 Java 而要用 Python?
原因很简单:
- Python 语法简洁,开发效率高
- AI 框架几乎都提供 Python SDK(OpenAI、LangChain、LlamaIndex)
- 数据处理方便,处理 JSON、文本、文件比 Java 简单
- 社区活跃,遇到问题容易找到答案
Python 在 AI 领域的典型应用:
- 调用大模型 API(GPT、Claude 等)
- 构建 Agent 智能体(工具调用、任务规划)
- 处理知识库(文档读取、文本分割、向量化)
- 搭建 API 服务(FastAPI)
Python 解释器与环境
什么是 Python 环境?
Python 环境包括:
- Python 解释器:执行
.py文件的程序 - 标准库:Python 自带的模块(os、json、datetime 等)
- pip:Python 的包管理工具,用于安装第三方库
为什么要安装 Python 环境?
就像 Java 需要安装 JDK 才能运行 .class 文件,Python 需要安装解释器才能运行 .py 文件。
解释型 vs 编译型:
Java: hello.java → javac 编译 → hello.class → java 执行
Python: hello.py → python 直接执行(边解释边执行)
优点:开发快,不需要编译这一步 缺点:运行速度比编译型语言慢(但对 AI 应用来说影响不大)
Python 环境安装
Windows 安装步骤
- 访问 python.org 下载 Python 3.12
- 运行安装程序,务必勾选 “Add Python to PATH”(容易遗漏)
- 选择 “Customize installation”,安装路径建议设为
C:\Python312 - 安装完成后,勾选 “Disable path length limit”
验证安装:
打开命令提示符(Win+R 输入 cmd),执行:
python --version
pip --version
正常输出:
Python 3.12.8
pip 24.0 from C:\Python312\Lib\site-packages\pip (python 3.12)
macOS 安装步骤
- 下载对应芯片的安装包(M 系列选 ARM64,Intel 选 x86-64)
- 双击
.pkg文件安装 - 打开终端验证:
python3 --version
pip3 --version
macOS 自带的是 Python 2.7,安装的是 Python 3.x,所以命令是 python3 而不是 python。
Linux 安装步骤
sudo apt update
sudo apt install python3.12 python3-pip
python3 --version
Python IDE 安装
常用 IDE 对比
| IDE | 特点 | 适合场景 | 推荐度 |
|---|---|---|---|
| PyCharm | 专业 Python IDE,功能强大,代码提示好 | 大型项目,初学者 | ⭐⭐⭐⭐⭐ |
| VS Code | 轻量级,插件丰富,多语言支持 | 多语言开发,轻量需求 | ⭐⭐⭐⭐ |
| Jupyter | 交互式编程,适合数据分析 | 数据分析,实验代码 | ⭐⭐⭐ |
| Sublime Text | 轻量,启动快 | 简单脚本 | ⭐⭐ |
推荐 PyCharm:
- 做 Java 开发用 IDEA,做 Python 开发用 PyCharm(同一家公司)
- 代码补全、调试、项目管理功能完善
- 对初学者友好
PyCharm 安装与配置
下载安装:
- 下载 PyCharm Community(免费版)
- 安装时选择默认设置即可
- 首次启动选择界面主题
初始化配置:
首次打开 PyCharm,建议配置:
-
设置编码为 UTF-8
- File → Settings → Editor → File Encodings
- Global Encoding: UTF-8
- Project Encoding: UTF-8
-
设置自动保存
- File → Settings → Appearance & Behavior → System Settings
- 勾选 “Save files automatically”
-
设置缩进为 4 个空格(默认已是,确认即可)
- File → Settings → Editor → Code Style → Python
- Tab size: 4
- Indent: 4
创建第一个项目:
- 点击 “New Project”
- 配置项目:
- Location:
D:\python_projects\hello_python - Interpreter:选择 “Custom environment” → “Virtualenv”
- Base interpreter:选择已安装的 Python 3.12
- Location:
- 点击 “Create”
项目创建后的目录结构:
hello_python/
├── .venv/ # 虚拟环境目录
├── main.py # 主程序文件
└── .idea/ # PyCharm 配置(不用管)
虚拟环境
虚拟环境是项目独立的 Python 环境,类似 Java 中的项目依赖隔离。
举个例子:
- 项目 A 需要
openai==0.28.0 - 项目 B 需要
openai==1.12.0
如果不用虚拟环境,两个项目会冲突。虚拟环境让每个项目有独立的依赖,互不干扰。
现在不用深究,PyCharm 会自动创建。
第一个程序与基础语法
Hello World
在 PyCharm 中创建文件:右键项目 → New → Python File → 输入 hello_world
写入代码:
print("Hello, Python!")
print("欢迎来到 AI 开发的世界")
运行方式:
- 右键代码区 → Run ‘hello_world’
- 或者点击代码左侧的绿色三角
- 快捷键
Shift + F10
输出:
Hello, Python!
欢迎来到 AI 开发的世界
和 Java 对比:
// Java
public class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello, Java!");
}
}
# Python
print("Hello, Python!")
Python 不需要类、不需要 main 方法、不需要分号,代码从上到下直接执行。
注释
注释是给人看的,程序运行时会被忽略。
单行注释
# 这是单行注释
print("Hello") # 行尾也可以加注释
多行注释
"""
这是多行注释
可以写很多行
通常用于函数说明
"""
print("Hello")
Java 中用 // 和 /* */,Python 中用 # 和 """ """。
注释的原则:解释为什么这么写,而不是复述代码在做什么。
错误示例:
# 打印 Hello
print("Hello") # 这行注释是多余的
正确示例:
# API 密钥,用于身份验证(从环境变量读取更安全)
api_key = "sk-xxxxxxxxxxxx"
缩进规则
Python 用缩进表示代码块,这是和 Java 最大的区别之一。
Java 用大括号:
if (age > 18) {
System.out.println("成年人");
}
Python 用缩进:
if age > 18:
print("成年人")
缩进用 4 个空格(PyCharm 会自动帮你转换)。
常见错误:
print("第一行")
print("第二行") # 多了一个空格,报错
错误信息:IndentationError: unexpected indent
顶层代码不能有缩进。
常见语法错误
1. 中文标点
print("Hello") # 错误:中文括号
错误信息:SyntaxError: invalid syntax
所有标点必须是英文的。
2. 忘记冒号
if age > 18 # 错误:缺少冒号
print("成年人")
错误信息:SyntaxError: expected ':'
正确写法:
if age > 18:
print("成年人")
3. 引号不配对
text = "Hello # 错误:缺少结束引号
错误信息:SyntaxError: unterminated string literal
常见报错类型
写代码时遇到报错很正常。看报错时先看三件事:
- 错误类型是什么
- 报错指向哪一行
- 报错信息里的关键词
SyntaxError(语法错误)
代码的写法不符合 Python 语法规则。
常见原因:
- 中文标点
- 括号、引号不配对
- 缺少冒号
- 缩进错误
NameError(名称错误)
使用了未定义的变量。
print(result) # 错误:result 未定义
错误信息:NameError: name 'result' is not defined
TypeError(类型错误)
对数据类型的操作不正确。
age = 25
print("我今年" + age + "岁") # 错误:字符串不能直接和数字相加
错误信息:TypeError: can only concatenate str (not "int") to str
IndentationError(缩进错误)
缩进不正确。
print("第一行")
print("第二行") # 错误:多余的缩进
错误信息:IndentationError: unexpected indent
ValueError(值错误)
值的类型对,但值本身不合适。
age = int("abc") # 错误:"abc"不能转换为整数
错误信息:ValueError: invalid literal for int() with base 10: 'abc'
变量与数据类型
变量定义
变量是存储数据的容器。Python 定义变量不需要声明类型。
name = "小明"
age = 20
is_student = True
Java 需要声明类型:
String name = "小明";
int age = 20;
boolean isStudent = true;
Python 是动态类型语言,变量的类型是根据赋的值自动推断的。
命名规范
规则(和 Java 一样):
- 只能包含字母、数字、下划线
- 不能以数字开头
- 不能使用关键字(if、for、class 等)
- 区分大小写
命名风格(和 Java 不同):
# Python:蛇形命名法(推荐)
user_name = "张三"
api_key = "sk-xxxxx"
max_token_count = 2000
# Java:驼峰命名法
String userName = "张三";
String apiKey = "sk-xxxxx";
int maxTokenCount = 2000;
常量命名(都用大写):
# Python
MAX_RETRY = 3
API_TIMEOUT = 30
# Java
static final int MAX_RETRY = 3;
基础数据类型
Python 的数据类型分为基础类型和引用类型。
基础类型(值类型):
| Python 类型 | Java 类型 | 说明 | 示例 |
|---|---|---|---|
| int | int/long | 整数,无大小限制 | age = 25 |
| float | float/double | 浮点数 | temperature = 0.7 |
| bool | boolean | 布尔值 | is_active = True |
| str | String | 字符串(不可变) | name = "GPT-4" |
注意:Python 的 bool 值是 True 和 False(首字母大写),Java 是 true 和 false(全小写)。
引用类型:
| Python 类型 | Java 类型 | 说明 |
|---|---|---|
| list | ArrayList | 列表(可变) |
| tuple | - | 元组(不可变) |
| dict | HashMap | 字典(键值对) |
| set | HashSet | 集合(无序不重复) |
今天先掌握基础类型,明天学习引用类型。
类型查看与转换
类型查看:
age = 25
print(type(age)) # <class 'int'>
name = "Alice"
print(type(name)) # <class 'str'>
类型转换:
# 数字 → 字符串
age = 25
age_str = str(age)
print(type(age_str)) # <class 'str'>
# 字符串 → 数字
price = "19.99"
price_float = float(price)
print(type(price_float)) # <class 'float'>
# 字符串 → 整数
count = "100"
count_int = int(count)
print(type(count_int)) # <class 'int'>
# 数字 → 布尔值(0 为 False,非 0 为 True)
print(bool(0)) # False
print(bool(1)) # True
print(bool(-5)) # True
# 字符串 → 布尔值(空字符串为 False,非空为 True)
print(bool("")) # False
print(bool("hello")) # True
常见转换错误:
# 错误:无法将非数字字符串转为数字
num = int("abc") # ValueError: invalid literal for int()
# 错误:浮点数字符串不能直接转整数
num = int("3.14") # ValueError
# 正确:先转 float 再转 int
num = int(float("3.14")) # 3
类型转换对比表:
| 源类型 | 目标类型 | 转换函数 | 示例 |
|---|---|---|---|
| int | str | str(x) | str(25) → "25" |
| float | str | str(x) | str(3.14) → "3.14" |
| str | int | int(x) | int("25") → 25 |
| str | float | float(x) | float("3.14") → 3.14 |
| int | float | float(x) | float(25) → 25.0 |
| float | int | int(x) | int(3.14) → 3(截断) |
| 任意 | bool | bool(x) | bool(0) → False |
AI 场景示例
# 模型配置参数
model_name = "gpt-4" # 字符串
max_tokens = 2000 # 整数
temperature = 0.7 # 浮点数
stream = True # 布尔值
print(f"模型: {model_name}")
print(f"最大tokens: {max_tokens}")
print(f"温度: {temperature}")
print(f"流式输出: {stream}")
输出:
模型: gpt-4
最大tokens: 2000
温度: 0.7
流式输出: True
常见错误
1. 字符串与数字直接相加
age = 25
print("我今年" + age + "岁") # 错误
错误信息:TypeError: can only concatenate str (not "int") to str
Java 中可以这样写(自动转换),但 Python 不行,必须显式转换:
print("我今年" + str(age) + "岁")
# 或者用 f-string(推荐)
print(f"我今年{age}岁")
2. 变量未定义就使用
print(result) # 错误:result 未定义
错误信息:NameError: name 'result' is not defined
课堂练习
定义 AI 配置变量
定义以下变量:
- 模型名称:gpt-3.5-turbo
- 最大 token 数:1500
- 温度参数:0.8
- 是否启用流式输出:True
然后打印所有配置。
参考答案:
model_name = "gpt-3.5-turbo"
max_tokens = 1500
temperature = 0.8
stream_enabled = True
print(f"模型: {model_name}")
print(f"最大tokens: {max_tokens}")
print(f"温度: {temperature}")
print(f"流式输出: {stream_enabled}")
字符串处理
字符串在 AI 开发中极其重要——用户输入、prompt、模型输出都是字符串。
字符串定义
Python 支持三种引号:
s1 = 'Hello' # 单引号
s2 = "World" # 双引号
s3 = """这是
多行文本""" # 三引号
print(s1, s2)
print(s3)
输出:
Hello World
这是
多行文本
三引号适合写长 prompt:
system_prompt = """你是一个 Python 编程助手。
你的任务是帮助用户解决编程问题。
请用简洁易懂的语言回答。"""
print(system_prompt)
转义字符
print("第一行\n第二行") # \n 换行
print("制表符\t对齐") # \t 制表符
print("他说:\"你好\"") # \" 双引号
输出:
第一行
第二行
制表符 对齐
他说:"你好"
索引与切片
Python 字符串可以像数组一样访问(Java 需要用 charAt()):
text = "Python AI"
print(text[0]) # P(第一个字符)
print(text[-1]) # I(最后一个字符)
print(text[0:6]) # Python(从索引0到5)
print(text[7:]) # AI(从索引7到末尾)
print(text[:6]) # Python(从开头到索引5)
print(text[-2:]) # AI(最后两个字符)
print(text[0:8:2]) # 每隔一个字符取一次
输出:
P
I
Python
AI
Python
AI
负数索引很方便,Java 没有这个特性。
常用字符串方法
text = " Hello World "
print(text.strip()) # 去除首尾空格
print(text.lower()) # 转小写
print(text.upper()) # 转大写
print(text.replace("World", "Python")) # 替换
print(text.split()) # 分割成列表 空格 逗号
print("Python" in text) # 检查是否包含
输出:
Hello World
hello world
HELLO WORLD
Hello Python
['Hello', 'World']
False
Java 对比:
// Java
String text = " Hello World ";
text.trim(); // 类似 strip()
text.toLowerCase(); // 类似 lower()
text.contains("World"); // 类似 in
AI 场景示例
# 用户输入清理
user_input = " 请帮我写一段代码 "
clean_input = user_input.strip()
print(f"原始: '{user_input}'")
print(f"清理后: '{clean_input}'")
# Prompt 拼接
system_prompt = "你是一个 Python 编程助手"
user_question = "如何读取文件?"
full_prompt = f"{system_prompt}\n\n用户问题: {user_question}"
print("\n" + full_prompt)
输出:
原始: ' 请帮我写一段代码 '
清理后: '请帮我写一段代码'
你是一个 Python 编程助手
用户问题: 如何读取文件?
课堂练习
构造 AI 消息
给定以下信息:
- 角色:assistant
- 内容:你好!我可以帮你解答 Python 问题。
要求输出格式:[角色] 内容
参考答案:
role = "assistant"
content = "你好!我可以帮你解答 Python 问题。"
message = f"[{role}] {content}"
print(message)
输入输出与格式化
input() 函数
name = input("请输入你的名字: ")
print(f"欢迎, {name}!")
运行效果:
请输入你的名字: 张三
欢迎, 张三!
重要:input() 返回的永远是字符串,即使你输入数字。
age = input("请输入年龄: ")
print(type(age)) # <class 'str'>
# 需要转换
age = int(age)
print(type(age)) # <class 'int'>
Java 对比:
// Java
Scanner scanner = new Scanner(System.in);
String name = scanner.nextLine();
int age = scanner.nextInt();
Python 简单很多,但要记得类型转换。
格式化输出三种方式
方式 1:% 格式化(老式,不推荐)
name = "GPT-4"
tokens = 2000
print("模型: %s, tokens: %d" % (name, tokens))
方式 2:format() 方法
print("模型: {}, tokens: {}".format(name, tokens))
print("模型: {0}, tokens: {1}".format(name, tokens))
方式 3:f-string(推荐,Python 3.6+)
name = "GPT-4"
tokens = 2000
temperature = 0.756
print(f"模型: {name}")
print(f"tokens: {tokens}")
print(f"温度: {temperature:.2f}") # 保留2位小数
输出:
模型: GPT-4
tokens: 2000
温度: 0.76
f-string 最直观,后面课程都用这个。
AI 场景示例
# 模拟 AI 对话
user_name = input("请输入你的名字: ")
question = input("请输入你的问题: ")
# 构造消息
system_msg = "你是一个友好的 AI 助手"
user_msg = f"用户 {user_name} 问: {question}"
print("\n" + "="*50)
print(f"[系统] {system_msg}")
print(f"[用户] {user_msg}")
print(f"[AI] 你好 {user_name},我正在思考你的问题...")
print("="*50)
课堂练习
token 费用计算
已知:
- 输入 token 数:1000
- 输出 token 数:500
- 输入价格:$0.03/1K tokens
- 输出价格:$0.06/1K tokens
计算总费用并输出。
参考答案:
input_tokens = 1000
output_tokens = 500
input_price = 0.03
output_price = 0.06
input_cost = (input_tokens / 1000) * input_price
output_cost = (output_tokens / 1000) * output_price
total_cost = input_cost + output_cost
print(f"输入费用: {input_cost:.4f}")
print(f"输出费用: {output_cost:.4f}")
print(f"总费用: {total_cost:.4f}")
运算符
有 Java 基础的话,Python 的运算符基本一样,只有几个特殊的。
算术运算符
a = 10
b = 3
print(a + b) # 13 加法
print(a - b) # 7 减法
print(a * b) # 30 乘法
print(a / b) # 3.3333... 除法(结果是浮点数)
print(a // b) # 3 整除(向下取整)
print(a % b) # 1 取余
print(a ** b) # 1000 幂运算(10的3次方)
和 Java 的区别:
- Python 的
/结果是浮点数,Java 中整数相除结果还是整数 - Python 有
**幂运算,Java 要用Math.pow() - Python 有
//整除运算符
// Java
int a = 10, b = 3;
System.out.println(a / b); // 3(整数除法)
System.out.println((double)a / b); // 3.333...(强制转换)
System.out.println(Math.pow(a, b)); // 1000.0
复合赋值运算符
count = 10
count += 5 # 相当于 count = count + 5
print(count) # 15
count -= 3 # 相当于 count = count - 3
count *= 2 # 相当于 count = count * 2
count /= 4 # 相当于 count = count / 4
和 Java 完全一样。
比较运算符
a = 10
b = 20
print(a == b) # False 等于
print(a != b) # True 不等于
print(a > b) # False 大于
print(a < b) # True 小于
print(a >= b) # False 大于等于
print(a <= b) # True 小于等于
和 Java 一样,但 Python 还可以这样写:
age = 25
print(18 < age < 60) # True(链式比较,Java 不支持)
# Java 要这样写:
// age > 18 && age < 60
逻辑运算符
a = True
b = False
print(a and b) # False 与
print(a or b) # True 或
print(not a) # False 非
Java 对比:
| Python | Java |
|---|---|
and | && |
or | || |
not | ! |
age = 25
has_permission = True
# Python
if age >= 18 and has_permission:
print("允许访问")
# Java 写法
// if (age >= 18 && hasPermission) {
// System.out.println("允许访问");
// }
AI 场景示例
# token 计算
input_tokens = 1000
output_tokens = 500
price_per_1k = 0.03
total_tokens = input_tokens + output_tokens
total_cost = (total_tokens / 1000) * price_per_1k
print(f"总 tokens: {total_tokens}")
print(f"总费用: ${total_cost:.4f}")
# 判断是否超出限制
max_tokens = 2000
if total_tokens <= max_tokens:
print("token 数量在限制内")
else:
print(f"超出限制 {total_tokens - max_tokens} tokens")
课堂练习
温度参数验证
编写程序,输入一个温度参数(0-1 的浮点数),判断是否合法:
- 如果小于 0 或大于 1,输出”温度参数无效”
- 如果在 0-1 之间,输出”温度参数有效”
参考答案:
temperature = float(input("请输入温度参数(0-1): "))
if temperature < 0 or temperature > 1:
print("温度参数无效")
else:
print("温度参数有效")
条件判断
有了判断能力,程序才能”聪明”地做决策。
if 单分支
age = 20
if age >= 18:
print("成年人")
print("可以访问")
print("程序继续")
输出:
成年人
可以访问
程序继续
Java 对比:
// Java
if (age >= 18) {
System.out.println("成年人");
}
Python 的括号和大括号规则:
- 条件表达式可以加括号(
if (age >= 18):),但不是必须的,通常不加 - 代码块不能用大括号,必须用缩进
- 如果分支下有多行代码,都要保持相同的缩进
# 正确:多行代码,相同缩进
if age >= 18:
print("成年人")
print("可以访问")
print("欢迎使用")
# 错误:缩进不一致
if age >= 18:
print("成年人")
print("可以访问") # 缩进错误
if-else 双分支
age = 15
if age >= 18:
print("成年人")
else:
print("未成年人")
输出:
未成年人
if-elif-else 多分支
score = 85
if score >= 90:
print("优秀")
elif score >= 80:
print("良好")
elif score >= 60:
print("及格")
else:
print("不及格")
输出:
良好
Java 用 else if,Python 用 elif(更简洁)。
嵌套判断
has_key = True
balance = 150
if has_key:
print("验证 API Key 成功")
if balance > 0:
print("余额充足,可以调用")
else:
print("余额不足")
else:
print("API Key 无效")
输出:
验证 API Key 成功
余额充足,可以调用
三元表达式
Python 也有类似 Java 三元运算符的写法:
age = 20
status = "成年人" if age >= 18 else "未成年人"
print(status) # 成年人
# Java 写法
// String status = (age >= 18) ? "成年人" : "未成年人";
AI 场景示例
# 根据 token 数量选择模型
token_count = 5000
if token_count <= 4000:
model = "gpt-3.5-turbo"
cost_per_1k = 0.002
elif token_count <= 8000:
model = "gpt-4"
cost_per_1k = 0.03
else:
model = "gpt-4-32k"
cost_per_1k = 0.06
estimated_cost = (token_count / 1000) * cost_per_1k
print(f"推荐模型: {model}")
print(f"预估费用: ${estimated_cost:.4f}")
输出:
推荐模型: gpt-4
预估费用: $0.1500
常见错误
错误 1:忘记冒号
if age >= 18 # 错误:缺少冒号
print("成年人")
错误 2:缩进不一致
if age >= 18:
print("成年人")
print("可以访问") # 错误:缩进不对齐
错误 3:使用赋值而不是比较
if age = 18: # 错误:应该用 ==
print("18岁")
正确写法:
if age == 18:
print("18岁")
课堂练习
AI 配置检查器
编写程序,检查 AI 配置是否合法:
- 输入模型名称、最大 token 数、温度参数
- 判断规则:
- max_tokens 必须在 1-4096 之间
- temperature 必须在 0-2 之间
- 如果都合法,输出”配置有效”
- 否则输出具体哪里不合法
参考答案:
model_name = input("模型名称: ")
max_tokens = int(input("最大token数: "))
temperature = float(input("温度参数: "))
is_valid = True
if max_tokens < 1 or max_tokens > 4096:
print("max_tokens 必须在 1-4096 之间")
is_valid = False
if temperature < 0 or temperature > 2:
print("temperature 必须在 0-2 之间")
is_valid = False
if is_valid:
print("配置有效")
print(f"模型: {model_name}, tokens: {max_tokens}, 温度: {temperature}")
当天作业
个人信息卡片生成器
编写程序,输入姓名、年龄、城市、学习目标,生成格式化的个人信息卡片。
要求:
- 使用 f-string
- 卡片要有边框装饰
- 信息对齐
参考答案:
name = input("请输入姓名: ")
age = input("请输入年龄: ")
city = input("请输入城市: ")
goal = input("请输入学习目标: ")
print("\n" + "="*50)
print(" 个人信息卡片")
print("="*50)
print(f"姓名: {name}")
print(f"年龄: {age}")
print(f"城市: {city}")
print(f"学习目标: {goal}")
print("="*50)
文本统计工具
编写程序,输入一段文本,计算并显示:
- 字符总数
- 单词数(按空格分割)
- 预估 token 数(简单按字符数 ÷ 4 计算)
提示:用 len() 函数获取长度,用 .split() 分割字符串。
参考答案:
text = input("请输入一段文本: ")
char_count = len(text)
word_count = len(text.split())
token_count = char_count // 4
print(f"\n字符总数: {char_count}")
print(f"单词数: {word_count}")
print(f"预估token数: {token_count}")
AI 配置输入器
编写程序,依次输入:
- 模型名称
- 最大 token 数(需要转换为整数)
- 温度参数(需要转换为浮点数)
然后格式化打印所有配置。
参考答案:
model_name = input("请输入模型名称: ")
max_tokens = int(input("请输入最大token数: "))
temperature = float(input("请输入温度参数: "))
print("\n=== AI 配置信息 ===")
print(f"模型: {model_name}")
print(f"最大tokens: {max_tokens}")
print(f"温度: {temperature:.2f}")
成绩等级判断器
编写程序,输入学生成绩(0-100),输出等级:
- 90-100:优秀
- 80-89:良好
- 60-79:及格
- 0-59:不及格
- 其他:输入无效
参考答案:
score = int(input("请输入成绩: "))
if 90 <= score <= 100:
print("优秀")
elif 80 <= score < 90:
print("良好")
elif 60 <= score < 80:
print("及格")
elif 0 <= score < 60:
print("不及格")
else:
print("输入无效")
BMI 计算器
编写程序,输入身高(米)和体重(公斤),计算 BMI 并给出评价:
- BMI = 体重 / (身高²)
- BMI < 18.5:偏瘦
- 18.5 <= BMI < 24:正常
- 24 <= BMI < 28:偏胖
- BMI >= 28:肥胖
参考答案:
height = float(input("请输入身高(米): "))
weight = float(input("请输入体重(公斤): "))
bmi = weight / (height ** 2)
print(f"\nBMI: {bmi:.2f}")
if bmi < 18.5:
print("评价: 偏瘦")
elif bmi < 24:
print("评价: 正常")
elif bmi < 28:
print("评价: 偏胖")
else:
print("评价: 肥胖")
智能 Prompt 构造器
编写程序,实现以下功能:
- 选择任务类型(1.代码编写 2.文本分析 3.问答对话)
- 根据任务类型设置不同的 system prompt
- 输入用户问题
- 检查输入是否为空
- 计算预估 token 数
- 输出完整的 prompt
参考答案:
print("=== 智能 AI Prompt 构造器 ===\n")
print("任务类型:")
print("1. 代码编写")
print("2. 文本分析")
print("3. 问答对话")
task_type = input("请选择(1-3): ")
if task_type == "1":
system_prompt = "你是一个专业的编程助手,擅长编写高质量的代码。"
elif task_type == "2":
system_prompt = "你是一个文本分析专家,擅长理解和分析各类文本。"
elif task_type == "3":
system_prompt = "你是一个友好的AI助手,可以回答各类问题。"
else:
print("无效的选择,使用默认模板")
system_prompt = "你是一个AI助手。"
user_content = input("\n请输入你的问题或需求: ")
if user_content.strip() == "":
print("错误:输入不能为空")
else:
total_chars = len(system_prompt) + len(user_content)
estimated_tokens = total_chars // 4
estimated_cost = (estimated_tokens / 1000) * 0.03
print("\n" + "="*60)
print("【生成的 Prompt】")
print("="*60)
print(f"\n[系统提示]\n{system_prompt}")
print(f"\n[用户输入]\n{user_content}")
print("\n" + "="*60)
print(f"预估 tokens: {estimated_tokens}")
print(f"预估费用: ${estimated_cost:.4f}")
print("="*60)
AI 模型选择器
根据任务类型和预算,推荐合适的模型:
- 简单任务 + 预算低:gpt-3.5-turbo
- 复杂任务 + 预算低:gpt-3.5-turbo-16k
- 简单任务 + 预算高:gpt-4
- 复杂任务 + 预算高:gpt-4-32k
参考答案:
print("任务复杂度:")
print("1. 简单")
print("2. 复杂")
complexity = input("请选择(1-2): ")
print("\n预算:")
print("1. 低")
print("2. 高")
budget = input("请选择(1-2): ")
if complexity == "1" and budget == "1":
model = "gpt-3.5-turbo"
elif complexity == "2" and budget == "1":
model = "gpt-3.5-turbo-16k"
elif complexity == "1" and budget == "2":
model = "gpt-4"
elif complexity == "2" and budget == "2":
model = "gpt-4-32k"
else:
model = "输入无效"
print(f"\n推荐模型: {model}")
今日总结
核心知识点回顾
1. Python 基础特性
- 动态类型、解释型、跨平台
- 用缩进表示代码块(4 个空格)
- 文件扩展名
.py
2. 数据类型
- 基础类型:int、float、bool、str
- 引用类型:list、dict、tuple、set(明天学习)
- 类型转换:
str()、int()、float()、bool()
3. 字符串操作
- 索引和切片:
text[0]、text[0:6]、text[-1] - 常用方法:
strip()、lower()、upper()、replace()、split() - 格式化:推荐使用 f-string
4. 运算符
- 算术:
+、-、*、/、//、%、** - 比较:
==、!=、>、<、>=、<=、链式比较 - 逻辑:
and、or、not
5. 条件判断
- if 单分支、if-else 双分支、if-elif-else 多分支
- 条件可以不加括号,代码块必须用缩进
- 三元表达式:
a if x else b
Python vs Java 关键对比
| 概念 | Java | Python |
|---|---|---|
| 代码块 | 大括号 {} | 缩进(4空格) |
| 变量声明 | 需要类型 int age | 不需要 age = 25 |
| 布尔值 | true false | True False |
| 逻辑运算符 | && || ! | and or not |
| 条件语句 | else if | elif |
| 除法 | 整数除法 10/3=3 | 浮点除法 10/3=3.333 |
| 整除 | / | // |
| 幂运算 | Math.pow(a,b) | a ** b |
| 三元运算 | x ? a : b | a if x else b |
| 命名风格 | 驼峰 userName | 蛇形 user_name |
| 字符访问 | charAt(0) | text[0] |
| 字符串拼接 | + 自动转换 | 需显式转换或用 f-string |
常见问题
Q:Python 有没有 public、private?
A:有,但方式不同。用 _ 和 __ 前缀,后面 OOP 会讲到。
Q:Python 有接口吗? A:没有 interface 关键字,但有抽象类(ABC),后面会讲。
Q:为什么 Python 的除法结果是浮点数?
A:这是 Python 3 的设计,更符合数学直觉。如果要整除,用 //。
Q:链式比较 18 < age < 60 怎么理解?
A:相当于 age > 18 and age < 60,Python 独有的语法糖。
Q:条件判断可以加括号吗?
A:可以加(if (age >= 18):),但不是必须的,通常不加。代码块不能用大括号,必须用缩进。
重点注意事项
- 环境变量:Windows 安装时务必勾选 “Add Python to PATH”
- 中文标点:所有标点必须是英文的,这是最常见的错误
- 缩进一致:同一代码块的缩进必须一致,不能混用空格和 Tab
- 冒号:if、elif、else 后面不要忘记冒号
- 类型转换:
input()返回的是字符串,需要手动转换 - 字符串拼接:不能直接
"文本" + 数字,要先转换或用 f-string - 除法:
/结果是浮点数,//才是整除 - 布尔值:首字母大写
True/False,不是小写