当前位置: 首页 > news >正文

Python 首段可运行代码与 AI 协作入门学习笔记

代码不是写出来好看的,而是运行后能够验证的。Python 入门的第一段程序通常从print()开始,但真正有价值的学习目标,是逐步形成“明确需求—编写代码—运行验证—处理边界”的完整闭环。

一、用 print 完成程序的第一次输出

print()是 Python 最常用的输出函数,可以输出字符串、数字、变量或多个值:

print("Hello, Python!") print(42) print(3.14) print("A", "B", "C")

最后一行会输出A B C。当print()接收多个对象时,默认使用空格分隔,并在末尾换行。可以通过sepend修改这两个行为:

print("A", "B", "C", sep="-", end="!") print("学习完成")

输出结果为:

A-B-C!学习完成

其中,sep控制多个值之间的分隔符,end控制一次输出结束时追加的字符。换行符\n、制表符\t也可以用于控制输出格式:

print("姓名\t年龄") print("第一行\n第二行")

需要注意,带引号的内容是字符串,不带引号的名称通常会被解释为变量。若变量没有定义,print(hello)会触发NameError;如果只是想输出文字,应写成print("hello")

二、理解常见报错

第一段代码出现错误很正常,重点是学会读取报错,而不是盲目修改。

报错常见原因排查方式
SyntaxError引号未闭合、括号不匹配、使用中文符号检查报错行及其上一行
NameError使用了尚未定义的变量,或变量名拼错检查赋值语句和名称拼写
TypeError对不兼容的数据类型执行操作查看参与运算的数据类型
ZeroDivisionError除数为 0运算前检查分母
FileNotFoundError指定文件不存在或路径错误检查路径,并处理文件缺失情况

程序能够运行,只能说明语法基本可执行,并不能证明结果正确。因此应先预测输出,再运行并比较实际结果。

三、注释应该解释“为什么”

单行注释以#开头,适合说明业务规则、复杂公式来源或当前实现的限制:

# 会员订单享受九折,这是当前业务规则 final_price = original_price * 0.9

x = 5 # 给 x 赋值 5这样的注释只是重复代码,没有提供额外信息。变量名清晰时,应优先让代码本身表达含义。

三引号包裹的内容本质上是多行字符串;放在模块、函数或类的开头时,会成为文档字符串docstring,用于说明接口用途。它并不是 Python 专门的“多行注释”语法,因此普通代码说明仍建议使用#

四、向 AI 下达精确指令

生成式工具并不能自动知道隐含需求。相比“帮我写个程序”,一条可执行、可验收的指令至少应包含五个要素:

  1. 任务目标:程序具体要完成什么;

  2. 输入:参数名称、类型和示例;

  3. 输出:返回值或打印内容及其格式;

  4. 约束:允许使用的库、边界规则和异常处理方式;

  5. 验收标准:给出明确的测试输入与预期结果。

例如,模糊指令“判断一个数是不是质数”可以改写为:

使用 Python 3.10 编写函数is_prime(n)。输入为整数,输出为布尔值;小于 2 返回False,其余数字检查 2 到其平方根范围内是否存在因数,不使用第三方库。验收:is_prime(2)is_prime(17)返回Trueis_prime(9)返回False

精确指令不仅能提高生成质量,也使结果具备客观的接收标准。如果需求没有明确非法输入如何处理,工具只能自行猜测,其实现很可能与真实意图不一致。

五、如何判断代码是好是坏

可以从四个维度检查一段代码:

  • 可读性:函数和变量名称能否表达含义;

  • 可预测性:相同输入是否稳定得到相同结果;

  • 边界处理:是否考虑空输入、非法类型、零值和文件缺失;

  • 实现适度:是否在简洁与清晰之间保持平衡。

下面的函数虽然不复杂,但名称、行为和验收用例都比较明确:

def count_positive(numbers): """返回列表中正数的数量;空列表返回 0。""" count = 0 for number in numbers: if number > 0: count += 1 return count assert count_positive([1, -2, 3, 0]) == 2 assert count_positive([]) == 0

但它仍然隐含了“列表元素均为数字”的前提。如果输入包含None或字符串,比较操作会产生TypeError。究竟应该拒绝非法数据、转换数据还是跳过异常值,必须由需求规格决定。

六、AI 协作中的拒收意识

工具返回代码后,不应只看它是否简短,而要检查是否满足需求。例如:

print("结果:", 10 / 0)

这段代码一定会发生除零错误,应在运算前检查分母,或者设计明确的异常处理逻辑。再如:

print(open("data.txt").read())

它假设文件一定存在,并且没有使用上下文管理器。更可靠的实现需要使用with open(...),同时根据需求处理文件不存在和编码错误等情况。

代码的接收流程可以概括为:

  1. 对照任务目标检查功能是否完整;

  2. 对照输入和输出检查类型、格式;

  3. 使用正常值、边界值和异常值测试;

  4. 阅读变量名、注释和结构,判断是否便于维护;

  5. 修改问题后重新运行全部测试。

七、可复用的提示词模板

以后让 AI 辅助编程时,可以使用以下结构:

任务目标: 编程语言与版本: 输入(类型与示例): 输出(类型与示例): 约束(库、性能、异常处理等): 反例(明确不要做什么): 验收标准(测试用例):

其中,“反例”能够进一步减少误解。例如判断闰年时,应明确不能只判断年份能否被 4 整除,因为能被 100 整除但不能被 400 整除的年份不是闰年。

总结

从第一段print()程序开始,需要建立的不只是语法记忆,更是一套可靠的编程习惯:理解输出参数和转义字符,学会从报错类型定位问题,用有价值的注释解释原因,把模糊想法转换成包含目标、输入、输出、约束和验收标准的指令,并通过边界测试决定代码能否接收。

AI 可以快速生成代码,但不能替代需求定义和结果责任。真正有效的协作不是“让工具把代码写完”,而是人给出清晰规格、审查实现,并用测试证明结果满足要求。

http://www.jsqmd.com/news/1317039/

相关文章:

  • 量子谐振子与二次量子化:从基础理论到连续变量量子信息应用
  • 东南亚20米巨蟒事件:科学验证、生态警示与爬行动物学解析
  • 龍魂系统 · 全维度融合升级协议
  • 供应链龙头的数字化样本:怡合达如何打通跨区域业务协同
  • ncmdumpGUI:3分钟解锁网易云音乐ncm文件,实现跨平台播放自由
  • 英伟达战略转向:AI GPU优先,游戏显卡更新放缓背后的技术逻辑与行业影响
  • Datawhale AI 夏令营:Agent Infra方向
  • 基于SSM框架的高校招生答疑APP设计与实现
  • 深入解析HikariCP初始化:从配置到高性能连接池的构建
  • ComfyUI-LTXVideo:一站式LTX-2视频生成解决方案
  • 效率翻 10 倍:Codex CLI 隐藏技巧全攻略,90% 的开发者都没用对
  • 2026 年至今,南通热门的车位划线公司怎么联系,你家小区的这圈线竟藏着省车位费的大秘密,90%的人都没留意!-路久远市政交通有限公司 - 行业推荐官[官方】--
  • QCC5181 LE Audio 调试实战:从零到有声的完整旅程
  • W600 Wi-Fi SoC模块:物联网开发的核心架构、RT-Thread生态与实战应用
  • 003007002_WPF DockPanel 基类官方类定义逐行深度解析
  • 基于Vue3与Spring Boot的商品预购平台开发实践
  • AI能看懂《蒙娜丽莎》的微笑吗?:3大神经美学指标+7类生成式缺陷识别法,实测准确率92.6%
  • 字符串模式匹配(KMP)
  • 英硕开题报告辅导避坑指南,新手必看!
  • Synology HDD db深度解析:突破群晖硬盘兼容性限制的完整技术方案
  • ESPHome与Espectre在XIAO ESP32上的部署与智能家居开发实践
  • AI副业技能清单(2024实战验证版):仅限前1000名开发者获取的7层能力模型
  • 构建抗脆弱的AI开发环境:从云端故障到本地化备份实战
  • 腾达 Ax1806 开启 telnet
  • 老显卡焕新:GeForce 920M适配PyTorch GPU环境的完整指南
  • 鸿蒙分布式事件总线高级设计:发布订阅/延迟解耦/优先级队列/跨设备事件一致性保障
  • 人群计数行人检测数据集分享(适用于YOLO系列深度学习检测任务)
  • Microsoft glTF-SDK 深度解析:如何高效处理3D资产序列化与反序列化实战指南
  • Java 23 种设计模式:从踩坑到精通 | 番外:命令模式 —— 仓储设备控制实战
  • 定点数与浮点数深度解析:从IEEE 754到Q格式的工程实践