Skip to content

Latest commit

 

History

History
283 lines (206 loc) · 6.74 KB

File metadata and controls

283 lines (206 loc) · 6.74 KB
Error in user YAML: (<unknown>): found a tab character that violate indentation while scanning a plain scalar at line 3 column 3
---
- oeasy Python 0081
- 这是 oeasy 系统化 Python 教程,从基础一步步讲,扎实、完整、不跳步。愿意花时间学,就能真正学会。
- 本教程同步发布在: 
	- 个人网站: `https://oeasy.org` 
	- 蓝桥云课: `https://www.lanqiao.cn/courses/3584` 
	- GitHub: `https://github.com/overmind1980/oeasy-python-tutorial` 
	- Gitee: `https://gitee.com/overmind1980/oeasypython` 
---

ai编程最佳实践_ai辅助编程_提出要求_解决问题

回忆上次内容

图片描述

  • 这下知道
    • 平时收到的验证码
    • 怎么来的了

图片描述

  • 计算机中 没有所谓的 真·随机
    • 一般都是 依靠时间为变量 得到的 随机
  • AI 能如何 辅助我们编程呢?

猫屎咖啡

  • 有这么一个场景
    • 在Java岛上
    • 麝香猫 吃了 咖啡豆

图片描述

  • 咖啡果肉 麝香猫 能消化
    • 咖啡果核 消化不了
    • 完整排出

购买

  • 刚排出的 水分多
    • 经过清洗(会降低风味)
    • 晾晒 或 烘干
    • 去壳 烘焙
    • 得到 Kopi(咖啡) Luwak(猫)
    • 30,0000 印尼盾 / 公斤

图片描述

  • 我要 做个程序
    • 把购买的 斤数
    • 换算成 人民币金额
  • 怎么 问ai?

无用信息

  • 红色的 部分
    • 是 无关描述
    • 对 编程这个事 没用
    • 可以 删除

图片描述

  • 信息 分两种
    • 第一种 对 编程目标 有用
    • 第二种 对 编程目标 没用
  • 我们 首先 需要 明白
    • 哪些 能落实到 代码上
    • 哪些 没有意义

简化之后

  • 精简了 提示词

图片描述

  • 输入的部分
    • 没有进行异常处理
  • 这需要 我们大脑中 先有概念
    • 之前学的 try-except-else-finally 结构
    • 制作相关 容错处理
    • 增强 代码健壮性

结果

  • 直接提要求

图片描述

  • try 的 第一句

    • 对应 ValueError 就得了
    • 目前是 一try到底
  • 这需要 我们了解 try语句的作用

    • 能够 理解 和 安排
    • 代码的 先后次序

尝试失败

  • 嘴上对我进行夸奖

图片描述

  • try的作用域 没有改变
    • 还是 一try到底
  • 把程序 分成两步
    1. 录入购买斤数
    2. 根据斤数得到人民币金额

斤数

  • 先完成 第1步
    • 录入 斤数

图片描述

  • 目前代码 可行

    • 需要 我们来做判定
    • 确认保留 当前的代码
  • 先跟ai 肯定 目前的状态

    • 刚做的这个 很好
    • ValueError 能 重新输入 了

继续增加功能

  • 在此基础上 追加一句
    • 负数和零 要 重新输入

图片描述

  • 第一部分 录入功能 完成
  • 准备 第2步 转化工作
    • 从 猫屎斤数
    • 到 公斤数
    • 再到 印尼盾
    • 最后到 人民币

继续提要求

  • 还是 先巩固战果
    • 目前 已经成型的 部分
    • 在此基础之上
    • 添加新的代码

图片描述

# 定义印尼盾对人民币的汇率,这里只是示例,需按实际调整
exchange_rate = 0.00045

while True:
    try:
        weight = float(input("请输入猫屎咖啡的购买斤数: "))
        if weight <= 0:
            print("输入的斤数不能为负数或 0,请重新输入。")
        else:
            print(f"你输入的购买斤数是: {weight} 斤")
            break
    except ValueError:
        print("输入的不是有效的数字,请重新输入。")

# 将斤数转换为公斤数,1公斤 = 2斤
weight_kg = weight / 2

# 计算对应的印尼盾价格,每公斤30万印尼盾
price_idr = weight_kg * 300000

# 计算对应的人民币价格
price_cny = price_idr * exchange_rate

print(f"购买{weight}斤猫屎咖啡,共{weight_kg}公斤,需要{price_idr}印尼盾,折合人民币约为{price_cny}元。")

运行结果

图片描述

  • 常规情况 问题不大

图片描述

  • 需要在最终部分
    • 保留两位小数

继续提要求

  • 还是要 先巩固已有成果

图片描述

# 定义印尼盾对人民币的汇率,这里只是示例,需按实际调整
exchange_rate = 0.00045

while True:
    try:
        weight = float(input("请输入猫屎咖啡的购买斤数: "))
        if weight <= 0:
            print("输入的斤数不能为负数或 0,请重新输入。")
        else:
            print(f"你输入的购买斤数是: {weight} 斤")
            break
    except ValueError:
        print("输入的不是有效的数字,请重新输入。")

# 将斤数转换为公斤数,1公斤 = 2斤
weight_kg = weight / 2

# 计算对应的印尼盾价格,每公斤30万印尼盾
price_idr = weight_kg * 300000

# 计算对应的人民币价格
price_cny = price_idr * exchange_rate

# 使用字符串格式化保留两位小数
print(f"购买{weight}斤猫屎咖啡,共{weight_kg}公斤,需要{price_idr:.2f}印尼盾,折合人民币约为{price_cny:.2f}元。")
  • 不是 四舍五入
    • 而是 向上取整 保留两位小数

最终代码

图片描述

  • 最终代码 已经完全
    • 符合 目标要求

稳步推进

  • 这次使用ai 有3个结论
    1. 和程序逻辑无关的 没必要说
    2. 复杂的流程
      • 不期待一次成功
      • 一次说不清
        • 可以 拆解成 若干步骤
      • 单一步骤 用简单 话语描述清楚
      • 对自己、对ai都好
    3. 对于已经完成的代码
      • 能够确认 他可行👍
      • 并且 巩固战果
      • 再 向下 继续编码
      • 小步快跑 快速迭代

图片描述

  • ai时代的编程

    • 需要先整理好 自己的需求
    • 再将需求 合理拆分成 可以看到战果的 小目标
    • 然后 逐步巩固战果
    • 并 向前推进
  • 在此过程中

    • 人和ai 是 如何分工的呢?

总结

  • 人 需要
    • 明确 目标
    • 拆分 步骤
    • 确认 结果
    • 向前 推进
  • ai 负责
    • 落实 代码
    • 解释 含义
    • 提供 建议

图片描述

  • ai时代
    • 编程 不会 被终结
    • 一切 都会变成 编程
  • 总结一下本章内容吧~ 👋
  • 配套视频

  • 本文来自 oeasy Python 系统教程。
  • 想完整、扎实学 Python,
  • 搜索 oeasy 即可。