教学环境:Jupyter Notebook
本章导读
在第1章中,我们了解了Python的由来和开发环境的搭建。从本章开始,我们将正式进入代码编写的核心环节。
本章我们将学习如何定义程序的“名字”(标识符),如何存储和处理数据(变量与数据类型),如何进行数学计算和文字处理,并最终通过算法思维完成一个简单的程序。
为了让学习更有趣,本章的所有案例都将围绕我们熟悉的重庆展开。让我们用代码来描绘我们的校园和生活吧!

2.1 Python的标识符
在Python中,给变量、函数、类等起名字时,必须遵循一定的规则,这些名字被称为标识符。
2.1.1 基本字符集
Python 3 支持Unicode字符集,这意味着我们可以使用中文作为标识符(虽然不推荐,但语法允许)。
- 合法字符:字母(a-z, A-Z)、数字(0-9)、下划线(_)。
- 特殊说明:汉字也可以作为标识符的一部分。
2.1.2 标识符命名规则
1.组成:由字母、数字、下划线组成。
2.开头:不能以数字开头。
3.大小写敏感:Score 和 score 是两个不同的变量。
4.保留字:不能使用Python的关键字(如 if, else, for, class 等)。
💡案例: 假设我们要记录CK学校各个学院的学生人数。
- ✅ 正确命名:ck_student_count, economicSchool, num_2024
- ❌ 错误命名:2024_num (数字开头), class (保留字), my-school (包含减号)
# [代码示例 2-1] 标识符的正确与错误使用# 定义CQ学校相关变量cq_school_name = "CQ学校" # 使用下划线连接,推荐风格economic_major_students = 1200 # 语义清晰# 尝试打印print(f"欢迎来到{cq_school_name}")print(f"数字经济专业所属的经济管理学院约有学生:{economic_major_students}人")

# 【互动练习】# 请尝试在下面单元格中定义一个变量,名为 'cq_hot_pot_level' (重庆火锅辣度),并赋值为 '特辣',然后打印出来。# 请在下方代码区编写:# 学生练习区cq_hot_pot_level = "特辣"print(f"重庆火锅的默认辣度是:{cq_hot_pot_level}")
2.2 数据类型与变量
程序的核心是处理数据。在Python中,数据有不同的类型,我们需要用变量来存储它们。
2.2.1 数据类型概述
Python主要的数据类型包括:
- 数值型:整数 (int)、浮点数 (float)、复数 (complex)
- 逻辑型:布尔值 (bool, True/False)
- 字符串型:文本 (str) - (后续章节将学习列表、元组等组合类型)
2.2.2 数值型数据
•整数 (int):没有小数部分的数字,如 100, -5, 2026。
•浮点数 (float):带有小数点的数字,如 3.14, 98.5。
💡案例: 学校图书馆的藏书量是整数,而学生的平均绩点(GPA)通常是浮点数。
2.2.3 逻辑型数据
布尔类型只有两个值:True (真) 和 False (假)。常用于判断条件。
- 例如:is_raining = True (正在下雨吗?是的)
2.2.4 变量
变量就像一个贴了标签的盒子,用来存放数据。 - 赋值操作:使用 = 号。注意:= 是赋值,不是数学上的相等。 - 动态类型:Python变量不需要声明类型,类型由赋给它的值决定。
# [代码示例 2-2] 变量的定义与使用# 定义CK学校的一些数据school_established_year = 1005 # int: 建校年份(假设)campus_area =1000.5 # float: 占地面积(亩)is_open_to_public =True # bool: 是否对外开放school_motto ="好好学习,天天向上" # str: 校训 (假设)# 查看变量类型print(f"建校年份类型: {type(school_established_year)}")print(f"占地面积类型: {type(campus_area)}")print(f"校训内容: {school_motto}")# 变量值的修改campus_area =1005.0 # 学校扩建了print(f"扩建后占地面积: {campus_area}")

2.3 数值型数据的处理
2.3.1 4个术语
•操作数:参与运算的数据。
•运算符:进行运算的符号(+,-,*,/等)。
•表达式:由操作数和运算符组成的式子。
•值:表达式计算的结果。
2.3.2 数值型数据的运算
Python支持丰富的数学运算:
- 算术运算符:+ (加), - (减), * (乘), / (除), // (整除), % (取余), ** (幂)
💡案例: 计算学校食堂一顿饭的人均消费,或者计算从学校到解放碑的距离耗时。
# [代码示例 2-3] 数值运算应用# 场景:计算学校某班级春游包车费用total_students =45 # 总人数bus_cost =1200 # 包车总费用 (元)snack_cost_per_person =15 # 每人零食费 (元)# 计算人均车费 (使用 / 得到浮点数)avg_bus_cost = bus_cost / total_students# 计算总花费total_expense = bus_cost + (total_students * snack_cost_per_person)# 计算如果只带1000元,还差多少钱 (假设)budget =1000gap = total_expense - budgetprint(f"人均车费: {avg_bus_cost:.2f} 元") # :.2f 保留两位小数print(f"春游总预算: {total_expense} 元")print(f"资金缺口: {gap} 元")# 取余运算示例:45人坐车,每车坐20人,需要几辆车?余下几人?cars_needed = total_students //20remaining_students = total_students %20print(f"需要整车数: {cars_needed}, 剩余人数: {remaining_students}")
2.3.3 5个常用内置函数
Python内置了一些无需导入即可使用的数学函数:
1. abs(x): 绝对值
2. round(x, n): 四舍五入,保留n位小数
3. pow(x, y): 计算x的y次方 (等同于 x**y)
4. max(...): 求最大值
5. min(...): 求最小值
# [代码示例 2-4] 内置函数演示scores = [88.5, 92.0, 76.5, 95.5, 89.0] # 学校某小组Python成绩print(f"最高分: {max(scores)}")print(f"最低分: {min(scores)}")print(f"平均分(原始): {sum(scores)/len(scores)}")print(f"平均分(保留1位小数): {round(sum(scores)/len(scores), 1)}")# 计算温差:重庆某日最高温38度,最低温22度temp_high =38temp_low =22print(f"当日温差: {abs(temp_high - temp_low)} 度")
2.4 字符串类型及其处理
字符串是Python中最常用的数据类型之一,用于处理文本信息。
2.4.1 字符串类型与字符串
•使用单引号 ' ' 或双引号 " " 包裹。
•三引号 ''' ''' 或 """ """ 可用于多行字符串。
2.4.2 字符串索引与切片
字符串是有序的字符序列,可以通过索引访问单个字符,通过切片获取子串。
- 索引:从0开始(正向),-1表示最后一个字符(反向)。
- 切片:[start:end:step],包含start,不包含end。
💡 案例: 处理学校的官方网址或学生学号。
# [代码示例 2-5] 字符串索引与切片school_info ="CQ学校-数字经济专业-2026届"phone_number ="023-49898888" # 假设的学校电话# 索引first_char = school_info[0] # 'C'last_char = school_info[-1] # '届'# 切片# 提取 "数字经济专业"# C(0)Q(1)学(2)校(3)-(4)数(5)字(6)经(7)济(8)专(9)业(10)...major = school_info[5:11]# 提取区号 "023"area_code = phone_number[0:3]print(f"首字符: {first_char}")print(f"专业名称: {major}")print(f"电话区号: {area_code}")# 步长切片:每隔一个字符取一个print(f"隔字读取: {school_info[::2]}")
2.4.3 字符串处理函数与方法
•函数:len(), str(), ord(), chr()
•方法 (使用 . 调用):
–.upper(), .lower(): 大小写转换
–.strip(): 去除两端空格
–.split(): 分割字符串
–.replace(): 替换内容
–.find(): 查找子串位置
# [代码示例 2-6] 字符串方法应用student_input = " 重庆 " # 用户输入可能带空格clean_city = student_input.strip()print(f"清理后的城市名: '{clean_city}'")# 将欢迎语转为大写welcome = "welcome to ck school"print(welcome.upper())# 替换操作:将口号中的旧词换新词slogan = "建设老校区"new_slogan = slogan.replace("老校区", "新校园")print(new_slogan)# 分割操作:处理逗号分隔的社团名单clubs = "书法社,舞蹈社,Python社,篮球社"club_list = clubs.split(",")print(f"社团列表: {club_list}")print(f"第三个社团是: {club_list[2]}")

2.5 算法与简单程序设计
程序设计不仅仅是写代码,更是解决问题的过程。
2.5.1 数据输入输出
•输出:print()
•输入:input(),接收到的数据默认为字符串类型,如需数值计算需转换 (int() 或 float())。
2.5.2 算法简介
算法是解决问题的步骤描述。
- 特征:有穷性、确定性、可行性、输入、输出。
- 描述方法:自然语言、流程图、伪代码。
2.5.3 自上而下的程序设计方法
1.分析问题:明确输入、输出、处理逻辑。
2.设计算法:规划步骤。
3.编写代码:将算法转化为Python代码。
4.调试运行:测试并修正。
💡综合案例: 任务:设计一个“CQ校园导游计算器”。
需求:用户输入想去的地方(如“图书馆”、“食堂”),程序输出该地点的简介和从校门口步行的大致时间。
# [代码示例 2-7] 综合程序设计:CQ校园导游print("--- 欢迎来到CQ学校智能导游系统 ---")# 1. 输入destination = input("请输入您想去的地点 (图书馆/食堂/操场): ")# 2. 处理 (简单的分支逻辑,第3章细讲,此处做简单演示)intro = ""time_cost = 0if destination == "图书馆": intro = "图书馆位于中心广场北侧,藏书丰富,是自习的最佳场所。" time_cost = 5elif destination == "食堂": intro = "第一食堂提供各地美食,二楼有重庆小面特色窗口。" time_cost = 3elif destination == "操场": intro = "标准400米跑道,傍晚有很多同学在此跑步锻炼。" time_cost = 8else: intro = "抱歉,暂未收录该地点信息。" time_cost = -1# 3. 输出print("-" * 30)if time_cost != -1: print(f"📍 目的地:{destination}") print(f"📝 简介:{intro}") print(f"🚶 预计步行时间:{time_cost} 分钟") print(f"💡 提示:从校门出发,沿主干道直行即可到达。")else: print(f"⚠️ {intro}")print("-" * 30)print("感谢使用CQ导游系统!")
2.6 习题与上机编程
课后练习题
1.基础题:定义变量存储你的姓名、学号和Python成绩,并打印出一句自我介绍。
2.计算题:已知重庆到北京的直线距离约为1400公里,高铁平均速度300公里/小时。编写程序计算所需时间(保留2位小数)。
3.字符串题:给定字符串 s = "Python是数字经济的重要工具",请利用切片提取出“数字经济”四个字。
上机实验任务
任务名称:CQ学校奖学金计算器
要求:
1. 输入学生的三门课成绩(Python、高数、英语)。
2. 计算平均分。
3. 如果平均分大于等于85分,输出“恭喜获得校级一等奖学金”;否则输出“继续努力”。 (注:分支逻辑若未完全掌握,可先仅实现输入和平均分计算)

🤖 2.7 AI辅助学习与创意编程
学习目标:利用生成式AI作为你的“编程私教”,通过对话互动,深化对本章知识点的理解,并尝试创作有趣的代码。
在本章我们学习了字符串、变量和基本输出。现在,我们要利用AI的帮助,尝试用字符画(ASCII Art)或者简单的图形库来展示我们的学习成果。
🎯 任务一:生成“CQ”字样的字符画爱心
阶段1 - 基础版:
背景:我想在控制台打印出一个由字符组成的爱心,爱心中间要包含“CQ”字样,以此表达我对重庆的热爱。但我不知道如何排列字符。 操作步骤: 1. 打开你喜欢的AI对话工具。 2. 复制以下提示词 (Prompt) 发送给AI。 3. 将AI生成的代码复制到Jupyter Notebook中运行。
📋 推荐提示词 (Copy this):
我是一名Python初学者,正在学习变量和Print输出。请帮我写一段Python代码,在控制台打印出一个由星号(*)组成的爱心图案。要求:1. 爱心的形状要尽量饱满。2. 在爱心的正中间位置,巧妙地嵌入字母 "CQ" 。3. 代码中请使用变量来存储爱心的每一行字符串,最后统一打印,体现变量的用法。4. 请为代码添加详细的中文注释,解释每一部分的作用,方便我学习。
阶段3 - 动画版:
1.打开你喜欢的AI对话工具。
2.复制以下提示词 (Prompt) 发送给AI。
3.将AI生成的代码复制到Jupyter Notebook中运行。 > 📋 推荐提示词 (Copy this): 请使用turtle库绘制一个跳动的彩色爱心动画。 要求:
•爱心颜色随时间变化(从粉红到深红)
•大小有呼吸效果(周期性缩放)
•背景为黑色,爱心居中
•添加文字”CQ 2026”
•代码需要有详细的注释说明
🎯 任务二:模拟“重庆火锅”点餐小票
背景:结合本章的字符串格式化和数值计算,我想做一个有趣的火锅点餐模拟器。 操作步骤: 1. 向AI发送以下提示词。 2. 运行代码,并尝试修改变量中的菜品和价格,观察输出变化。
📋 推荐提示词 (Copy this):
请帮我设计一个“重庆火锅点餐小票”的Python程序。要求:1. 定义几个变量:店名(例如“CK巷子里的老火锅”)、桌号、菜品列表(包含菜名和价格)。2. 使用字符串格式化(f-string)输出一张整齐的小票。3. 小票内容需包含:表头、菜品明细、总金额、以及一句具有重庆特色的祝福语(如“吃得巴适!”)。4. 请在代码中演示如何使用字符串的 .upper() 方法将店名转换为大写显示。5. 请解释代码中哪里用到了本章学的“变量”和“字符串拼接/格式化”。
🎯 任务三:CK校园个性化名片生成器
场景:为数字经济专业学生设计一个炫酷的ASCII艺术名片。 1. 打开你喜欢的AI对话工具。 2. 复制以下提示词 (Prompt) 发送给AI。 3. 将AI生成的代码复制到Jupyter Notebook中运行。 > 📋 推荐提示词 (Copy this):
请帮我用Python编写一个程序,实现以下功能: 1. 使用input()获取用户输入:姓名、专业、座右铭 2. 使用字符串操作和格式化输出,生成一个带边框的ASCII艺术名片 3. 名片宽度为40个字符,使用”=“或”*“作为边框 4. 文字居中对齐 5. 在名片顶部添加”CQ UNIVERSITY”字样
要求: - 使用f-string格式化 - 添加适当的注释说明 - 给出3个不同输入的运行示例
🎯 任务四:智能学习助手(算法思维训练)
场景:设计一个帮助规划期末复习时间的智能程序。 1. 打开你喜欢的AI对话工具。 2. 复制以下提示词 (Prompt) 发送给AI。 3. 将AI生成的代码复制到Jupyter Notebook中运行。 > 📋 推荐提示词 (Copy this):
请帮我设计一个”CK期末复习规划助手”算法程序:
输入: - 课程数量(如5门) - 每门课程的名称、难度系数(1-10)、考试日期(距离今天的天数) - 每天可用的复习小时数
算法要求: 1. 根据难度系数和剩余天数计算每门课程的优先级(难度高且时间紧的优先) 2. 分配每天的复习时间(总时间不超过可用小时数) 3. 生成复习计划表(使用字符串格式化输出)
输出格式: - 表格形式展示每日安排 - 使用颜色或符号标记紧急程度(可用ANSI转义码实现终端颜色) - 给出复习建议
请使用自上而下的设计方法,先给出算法步骤描述,再给出Python代码。
💡 进阶挑战:让AI教你“调试”
如果你在运行上述代码时报错了(比如缩进错误、引号不匹配): 1. 不要慌! 2. 将错误的代码和报错信息直接复制发给AI。 3. 使用提示词:"这段代码报错了,错误信息是[...]。请告诉我错在哪里?是因为变量命名问题还是缩进问题?请修正它并解释原因。" 4. 通过这个过程,你将深刻理解标识符规则和语句块缩进的重要性。