这个Python入门课程的第二课聚焦于编程基础中的核心概念——变量与数据类型,并通过一个极具时代感的AI提示词生成器作为实践项目。不同于传统教材中枯燥的"学生信息录入"案例,我们选择让初学者亲手打造一个能动态生成个性化AI指令的小工具。
在当今AI应用爆发式增长的环境下,提示词(Prompt)工程已成为一项基础数字技能。根据2023年GitHub开发者调查报告,使用AI辅助编程的开发者中,87%需要定期调整提示词来获取理想输出。本课设计的这个微型项目,既能让学员掌握编程基础,又能产出具有实际用途的成果。
变量是Python存储数据的基本单元,就像给数据贴上的标签。在提示词生成器中,我们会用变量来存储用户输入的各种信息:
python复制user_name = input("请输入你的名字:")
ai_topic = input("你想探讨什么AI主题?")
这里user_name和ai_topic就是变量,它们保存了用户输入的值。Python变量的独特之处在于:
提示:变量名应具有描述性,避免使用单字母(除非是临时变量)。Python社区推荐使用snake_case命名法(小写字母加下划线)。
Python有几种基本数据类型特别适合处理提示词生成:
字符串(str):文本数据,用单/双引号包裹
python复制greeting = "你好,AI助手"
整数(int)和浮点数(float):数值数据
python复制word_count = 200 # int
temperature = 0.7 # float
布尔(bool):True/False值
python复制is_creative = True
在提示词工程中,这些类型都有实际应用场景:
input()函数是控制台程序与用户交互的桥梁,它会:
python复制style = input("你希望回答风格是?(专业/幽默/简洁):")
一个常见陷阱是忘记处理输入类型。如果需要数值,必须显式转换:
python复制# 错误示范
age = input("你的年龄?") # 返回的是字符串"25"
print(age + 1) # 报错!
# 正确做法
age = int(input("你的年龄?")) # 转换为整数25
让我们构建一个能生成个性化AI指令的程序。完整代码如下:
python复制# 收集用户信息
name = input("请输入你的名字:")
topic = input("你想了解的AI主题是?")
detail_level = input("详细程度(1-简单 2-中等 3-深入):")
language = input("使用语言(中文/英文):")
# 根据输入构造提示词
prompt = f"""
作为AI助手,请以{detail_level}级详细程度向{name}解释{topic}。
要求:
- 使用{language}回答
- 包含实际应用案例
- 分点说明核心概念
"""
print("\n生成的AI提示词:")
print(prompt)
运行示例:
code复制请输入你的名字:王小明
你想了解的AI主题是?神经网络
详细程度(1-简单 2-中等 3-深入):2
使用语言(中文/英文):中文
生成的AI提示词:
作为AI助手,请以2级详细程度向王小明解释神经网络。
要求:
- 使用中文回答
- 包含实际应用案例
- 分点说明核心概念
基础版本已经可用,但我们可以通过数据类型转换和条件判断增强它:
python复制# 增强版提示词生成器
def create_prompt():
name = input("用户名称:")
topic = input("咨询主题:")
level = int(input("详细程度(1-5):"))
word_count = int(input("回答字数:"))
examples = input("需要示例?(y/n):").lower() == 'y'
# 根据级别设置描述词
if level == 1:
level_desc = "简要概述"
elif 2 <= level <= 3:
level_desc = "详细解释"
else:
level_desc = "深度技术分析"
# 构建提示词
prompt = f"""作为专业AI助手,请用{level_desc}的方式向{name}介绍{topic}。
具体要求:
- 回答约{word_count}字
- {"包含2-3个实际应用案例" if examples else "聚焦理论框架"}
- 避免使用过多专业术语
- 结尾提供学习资源推荐"""
return prompt
print("\n优化版提示词:\n" + create_prompt())
这个版本新增了:
int()转换)初学者最常遇到类型相关的错误:
忘记类型转换:
python复制# 会报TypeError
age = input("年龄:")
if age > 18: ...
# 正确做法
age = int(input("年龄:"))
无效输入处理:
python复制try:
level = int(input("级别(1-3):"))
except ValueError:
print("请输入数字!")
level = 1 # 默认值
现代Python推荐f-string(格式化字符串字面量),但注意:
python复制# 引号嵌套问题
prompt = f"解释'{topic}'" # 如果topic含单引号会出错
# 更安全的做法
prompt = f'解释"{topic}"' # 交替使用引号类型
对于多行提示词,建议使用三引号:
python复制prompt = f"""
请以{style}风格回答:
{question}
注意:
- 要点清晰
- 举例说明
"""
好的控制台程序应该:
改进示例:
python复制def get_positive_number(prompt):
while True:
try:
value = int(input(prompt))
if value > 0:
return value
print("请输入正整数!")
except ValueError:
print("无效输入,请输数字!")
word_count = get_positive_number("回答字数:")
掌握基础后,可以考虑以下增强功能:
参数验证模块:
python复制def validate_level(level):
return min(max(int(level), 1), 5) # 确保在1-5范围内
预设模板选择:
python复制TEMPLATES = {
'学术': "请用严谨的学术语言...",
'儿童': "请用简单有趣的方式..."
}
style = input(f"模板选择({'/'.join(TEMPLATES.keys())}):")
prompt = TEMPLATES.get(style, DEFAULT_TEMPLATE)
历史记录功能:
python复制import datetime
history = []
history.append({
'time': datetime.datetime.now(),
'prompt': prompt
})
配置文件存储:
python复制import json
with open('config.json') as f:
defaults = json.load(f)
与真实AI API集成(需后续课程知识):
python复制import openai
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}]
)
这个看似简单的项目实际上涵盖了Python编程的多个核心概念。通过构建实用的AI提示词生成器,初学者不仅能理解变量、数据类型和输入输出这些基础概念,还能获得即时的成就感——创造出真正可用的工具。