Series Article

Python 基础课 Day1:环境搭建与入门语法

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 安装步骤

  1. 访问 python.org 下载 Python 3.12
  2. 运行安装程序,务必勾选 “Add Python to PATH”(容易遗漏)
  3. 选择 “Customize installation”,安装路径建议设为 C:\Python312
  4. 安装完成后,勾选 “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 安装步骤

  1. 下载对应芯片的安装包(M 系列选 ARM64,Intel 选 x86-64)
  2. 双击 .pkg 文件安装
  3. 打开终端验证:
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 安装与配置

下载安装:

  1. 下载 PyCharm Community(免费版)
  2. 安装时选择默认设置即可
  3. 首次启动选择界面主题

初始化配置:

首次打开 PyCharm,建议配置:

  1. 设置编码为 UTF-8

    • File → Settings → Editor → File Encodings
    • Global Encoding: UTF-8
    • Project Encoding: UTF-8
  2. 设置自动保存

    • File → Settings → Appearance & Behavior → System Settings
    • 勾选 “Save files automatically”
  3. 设置缩进为 4 个空格(默认已是,确认即可)

    • File → Settings → Editor → Code Style → Python
    • Tab size: 4
    • Indent: 4

创建第一个项目:

  1. 点击 “New Project”
  2. 配置项目:
    • Location:D:\python_projects\hello_python
    • Interpreter:选择 “Custom environment” → “Virtualenv”
    • Base interpreter:选择已安装的 Python 3.12
  3. 点击 “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 一样):

  1. 只能包含字母、数字、下划线
  2. 不能以数字开头
  3. 不能使用关键字(if、for、class 等)
  4. 区分大小写

命名风格(和 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 类型说明示例
intint/long整数,无大小限制age = 25
floatfloat/double浮点数temperature = 0.7
boolboolean布尔值is_active = True
strString字符串(不可变)name = "GPT-4"

注意:Python 的 bool 值是 TrueFalse(首字母大写),Java 是 truefalse(全小写)。

引用类型:

Python 类型Java 类型说明
listArrayList列表(可变)
tuple-元组(不可变)
dictHashMap字典(键值对)
setHashSet集合(无序不重复)

今天先掌握基础类型,明天学习引用类型。

类型查看与转换

类型查看:

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

类型转换对比表:

源类型目标类型转换函数示例
intstrstr(x)str(25)"25"
floatstrstr(x)str(3.14)"3.14"
strintint(x)int("25")25
strfloatfloat(x)float("3.14")3.14
intfloatfloat(x)float(25)25.0
floatintint(x)int(3.14)3(截断)
任意boolbool(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 对比:

PythonJava
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. 运算符

  • 算术:+-*///%**
  • 比较: ==!=><>=<=、链式比较
  • 逻辑:andornot

5. 条件判断

  • if 单分支、if-else 双分支、if-elif-else 多分支
  • 条件可以不加括号,代码块必须用缩进
  • 三元表达式:a if x else b

Python vs Java 关键对比

概念JavaPython
代码块大括号 {}缩进(4空格)
变量声明需要类型 int age不需要 age = 25
布尔值true falseTrue False
逻辑运算符&& || !and or not
条件语句else ifelif
除法整数除法 10/3=3浮点除法 10/3=3.333
整除///
幂运算Math.pow(a,b)a ** b
三元运算x ? a : ba 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):),但不是必须的,通常不加。代码块不能用大括号,必须用缩进。

重点注意事项

  1. 环境变量:Windows 安装时务必勾选 “Add Python to PATH”
  2. 中文标点:所有标点必须是英文的,这是最常见的错误
  3. 缩进一致:同一代码块的缩进必须一致,不能混用空格和 Tab
  4. 冒号:if、elif、else 后面不要忘记冒号
  5. 类型转换input() 返回的是字符串,需要手动转换
  6. 字符串拼接:不能直接 "文本" + 数字,要先转换或用 f-string
  7. 除法/ 结果是浮点数,// 才是整除
  8. 布尔值:首字母大写 True / False,不是小写