查看全课大纲(第 6 / 51 节)
  1. 1.为什么人人都该学点编程?
  2. 2.计算机与程序设计:你的电脑到底在“想”什么?
  3. 3.Python 这门语言,到底有什么魔力?
  4. 4.Python 开发环境配置:如何拥有你的第一个“编程工具箱”?
  5. 5.如何安装一个更强大的代码编辑器?
  6. 6.汇率兑换1.0:你的第一个“钱生钱”小程序
  7. 7.你的第一行代码,藏着哪些秘密?
  8. 8.汇率兑换2.0(上):让程序看懂“CNY”和“USD”
  9. 9.汇率兑换程序,如何让它“聪明”地判断币种?
  10. 10.汇率兑换程序能一直运行,直到我喊停吗?
  11. 11.汇率兑换4.0:如何把“算钱”功能打包成积木?
  12. 12.汇率兑换5.0:给你的程序穿上“结构化”的西装
  13. 13.怎么用 Python 画一个会动的五角星?
  14. 14.如何让程序自动画出不同大小的五角星?
  15. 15.函数自己调用自己,会发生什么?
  16. 16.用递归画出神奇的分形树
  17. 17.Python 怎么计算你一天躺着不动能消耗多少热量?
  18. 18.如何让程序“活”起来,持续为你服务?
  19. 19.如何让 BMR 计算器更“聪明”?
  20. 20.当程序遇到“不按套路出牌”的用户怎么办?
  21. 21.怎么用 Python 模拟一个“滚雪球”式的存钱计划?
  22. 22.如何用列表记录每一周的存款?
  23. 23.如何让程序自己数数?—— 用 for 循环解放你的双手
  24. 24.52周存钱挑战4.0:你的存款计算器能有多灵活?
  25. 25.52周存钱挑战:怎么根据日期自动查存款?
  26. 26.Python 怎么判断一年中的第几天?
  27. 27.列表 vs 元组:哪个更适合存储月份天数?
  28. 28.用集合给月份分个队,换个思路算天数
  29. 29.把月份和天数“锁”在一起:用字典给数据配个对
  30. 30.Python 怎么判断密码强弱?
  31. 31.Python 怎么给密码设置“防沉迷”系统?
  32. 32.Python 怎么把密码保存到文件里?
  33. 33.Python 怎么读取文件里的密码?
  34. 34.Python 怎么把密码检查工具“打包”起来?
  35. 35.Python 怎么把文件操作也“打包”起来?
  36. 36.计算机怎么“扔骰子”?——用Python模拟随机事件
  37. 37.如何用 Python 模拟掷两个骰子?
  38. 38.怎么用 Python 把骰子轨迹画出来?
  39. 39.骰子点数分布长啥样?用直方图一眼看穿!
  40. 40.用科学计算库让骰子程序“起飞”
  41. 41.空气质量指数怎么算?手把手教你写一个AQI计算器
  42. 42.空气质量指数计算:从零开始,让程序看懂空气
  43. 43.如何读取空气质量数据文件并找出空气质量最好的五个监测点?
  44. 44.JSON 数据怎么变成 Excel 表格?—— 让数据换个“马甲”
  45. 45.Python 怎么让程序自己判断文件类型?
  46. 46.如何让程序自己上网查空气质量?
  47. 47.用美味的汤来解析网页:Beautiful Soup 入门
  48. 48.如何让爬虫自动抓取全国所有城市的空气质量?
  49. 49.爬到的数据怎么存下来?—— 把全国空气质量数据保存为CSV文件
  50. 50.用 pandas 玩转空气质量数据:找出全国空气最好和最差的城市
  51. 51.空气质量数据怎么“洗”干净,还能画成图?

汇率兑换1.0:你的第一个“钱生钱”小程序

约 18 分钟

小象实战讲义 · Python 入门:8 个小项目边玩边学

想象一下,你刚拿到一笔美元零花钱,或者正准备海淘,是不是总得掏出手机查汇率、按计算器?从今天起,不用了!我们将一起写出你的第一个 Python 程序——一个超级简单的汇率兑换器。学完这一节,你就能让电脑帮你算:100块人民币到底值多少美元。是不是感觉离“让电脑干活”的梦想又近了一步?

💡 核心导读

  • 目标:制作一个人民币兑美元的换算器。
  • 核心:理解程序的“IPO”模型(输入-处理-输出)。
  • 新朋友:认识 input() 函数和“变量”这个神奇的小盒子。
  • 小心坑:区分“数字”和“看起来像数字的文本”,并用 eval() 进行转换(但我们会告诉你为什么以后要小心用它)。
  • 成果:一个能跑起来的、真正有用的 Python 程序。

一、 任务拆解:IPO 思维法

任何程序,无论大小,都可以用“IPO”模型来理解:

  • I (Input):输入。我们的程序需要知道你要换算多少钱。
  • P (Process):处理。根据汇率进行计算。
  • O (Output):输出。把计算结果告诉你。

对于汇率兑换1.0,这个模型特别清晰:

  • 输入:人民币金额(比如 100)。
  • 处理:人民币金额 ÷ 汇率(假设1美元=6.77人民币)。
  • 输出:计算出的美元金额。

看,编程就是把我们脑子里的计算步骤,清晰地告诉电脑。

二、 动手开写:从输入开始

我们打开代码编辑器(比如 PyCharm),新建一个文件,就叫 currency_converter_v1.0.py。

本节新增的第一个知识点:input() 函数。它的作用就是“等待用户从键盘输入一些内容”。

# 汇率兑换 1.0
# 作者:小象教研组
# 功能:人民币兑美元

# 1. 获取用户输入
rmb_str_value = '100'  # 原程序用 input() 让用户输入数字,这里用固定值代替,你可以改成自己的值试

运行这几行代码,程序会在下方显示“请输入人民币(CNY)金额:”并等待。你输入一个数字(比如100)后按回车,程序就继续往下走了。

但,输入的数字去哪了?这就引出了第二个新知识点:变量。

你可以把变量想象成一个贴了标签的“盒子”。rmb_str_value 就是这个盒子的名字。input() 函数得到你输入的内容后,通过等号 = 这个“赋值”操作,把内容放进了这个盒子里。

重要提醒:编程中的等号 =,不是数学里的“相等”,而是“把右边的值,放进左边的变量里”。

三、 核心计算:文本与数字的魔法

如果我们直接用 rmb_str_value 这个“盒子”里的东西去计算,会出问题。因为 input() 拿到的一切,在电脑看来都是“文本”(也叫字符串),哪怕你输入的是“100”,它也是一段文字,而不是数学意义上的数字100。

“文本100”和“数字100”能一样吗?当然不能。就像“苹果”这个词和真实的苹果,你能拿“苹果”这个词去榨汁吗?

所以我们需要一个转换器。本节新增的第三个(也是最后一个)知识点:eval() 函数。它能把一段只包含数字的文本,变成真正的数字。

rmb_str_value = '100'  # 原程序这里用 input() 让用户输入数字(eval/float 要求字符串内容是纯数字)

# 2. 将字符串转换为数字
rmb_value = eval(rmb_str_value)  # ⚠️ eval 会原样执行字符串,处理真实用户输入不安全,真实程序请改用 float()/int()(见本节安全提示)

现在,rmb_value 这个新“盒子”里装的,就是可以用于计算的数字100了。

接下来,设定汇率并进行计算:

rmb_str_value = '100'  # 原程序这里用 input() 让用户输入数字(eval/float 要求字符串内容是纯数字)
rmb_value = eval(rmb_str_value)  # ⚠️ eval 会原样执行字符串,处理真实用户输入不安全,真实程序请改用 float()/int()(见本节安全提示)

# 3. 设定汇率
USD_VS_RMB = 6.77  # 1美元 = 6.77人民币

# 4. 汇率计算
usd_value = rmb_value / USD_VS_RMB

最后,把结果输出给用户:

rmb_str_value = '100'  # 原程序这里用 input() 让用户输入数字(eval/float 要求字符串内容是纯数字)

USD_VS_RMB = 6.77  # 1美元 = 6.77人民币
rmb_value = eval(rmb_str_value)  # ⚠️ eval 会原样执行字符串,处理真实用户输入不安全,真实程序请改用 float()/int()(见本节安全提示)
usd_value = rmb_value / USD_VS_RMB

# 5. 输出结果
print('美元(USD)金额是:', usd_value)
美元(USD)金额是: 14.771048744460858

print() 是我们之前见过的老朋友了,它能把括号里的内容显示在屏幕上。用逗号隔开,可以一次输出多个东西。

四、 完整程序与试运行

把上面的代码组合起来,就是我们的汇率兑换1.0完整版:

# 汇率兑换 1.0
# 作者:小象教研组
# 功能:人民币兑美元

# 汇率
USD_VS_RMB = 6.77

# 人民币的输入
rmb_str_value = '100'  # 原程序这里用 input() 让用户输入数字(eval/float 要求字符串内容是纯数字)


# 将字符串转换为数字
rmb_value = eval(rmb_str_value)  # ⚠️ eval 会原样执行字符串,处理真实用户输入不安全,真实程序请改用 float()/int()(见本节安全提示)

# 汇率计算
usd_value = rmb_value / USD_VS_RMB

# 输出结果
print('美元(USD)金额是:', usd_value)

运行一下!程序会提示你输入。我们试试输入100。

美元(USD)金额是: 14.771048744460858

恭喜!你的第一个功能性程序诞生了!它算出了100人民币大约等于14.77美元。

五、 关于 eval() 的一个重要安全提示

我们刚才用 eval() 把 "100" 变成了数字100,这在本例中没问题。但是,eval() 的功能非常强大,它会把字符串当作Python代码来执行。如果用户输入的不是 "100",而是 "__import__('os').system('rm -rf /')" 这样的恶意字符串(当然这只是一个夸张的例子),eval() 也会照常执行,这可能带来安全风险。

因此,在真正的、处理用户输入的程序中,我们不应该使用 eval()。 对于将纯数字字符串转为数字,有更安全的方法,比如 int()(转整数)或 float()(转小数)。我们会在后续版本中改进这一点。

现在,为了保持第一节课的简单和聚焦,我们先了解 eval() 能做什么,但请记住这个安全小贴士。

📝 动手练一练

  1. 改造计算器:我们的程序目前固定用 6.77 作为汇率。如果今天汇率变成了 6.85,你需要修改程序的哪个地方?动手改一下,重新计算100人民币可以兑换多少美元。

    👉 点击查看参考答案

    只需要修改定义汇率的那一行代码:

USD_VS_RMB = 6.85  # 将6.77改为6.85
其他代码完全不用动。这就是变量的好处:只需修改一个地方,整个计算就自动更新了。重新运行,100人民币现在约等于14.60美元。
</details>

2. 反向兑换:如果我想知道100美元值多少人民币,公式应该是 人民币 = 美元 * 汇率。你能修改上面的程序,让它实现“输入美元金额,输出人民币金额”的功能吗?(提示:需要改输入提示语、变量名和计算公式)

👉 点击查看参考答案

思路是:输入提示改为美元,变量名相应调整,计算时使用乘法。
USD_VS_RMB = 6.77

# 输入提示和变量名改为美元
usd_str_value = '100'  # 原程序这里用 input() 让用户输入数字(eval/float 要求字符串内容是纯数字)

usd_value = eval(usd_str_value)  # ⚠️ eval 会原样执行字符串,处理真实用户输入不安全,真实程序请改用 float()/int()(见本节安全提示)

# 计算改为乘法
rmb_value = usd_value * USD_VS_RMB

# 输出提示也相应改变
print('人民币(CNY)金额是:', rmb_value)
人民币(CNY)金额是: 677.0
输入100,输出应该是677。
</details>

本章小结

太棒了!你刚刚独立完成了第一个Python小项目。别看它简单,你已经摸到了编程的核心门道:

  • IPO思维:用输入-处理-输出的框架分析任务。
  • 与程序对话:用 input() 获取输入,用 print() 给出输出。
  • 使用变量:像使用贴标签的盒子一样,用变量存储和操作数据。
  • 类型转换:意识到“文本100”和“数字100”的区别,并用 eval() 进行转换(同时知道了它的安全隐患)。

📋 行动清单

学完立刻可以做的两件事:

  • 运行并“玩坏”你的程序:输入不同的数字,观察输出。试试输入非数字(比如“abc”),看看会发生什么?这是了解程序行为的好方法。
  • 给你的代码加“日记”:在程序最开头,用 # 注释写上你的名字、日期和程序功能,例如 # 作者:[你的名字] 于2023年10月27日制作,功能:汇率换算。好的注释是给未来自己(或别人)的情书。

—— 小象教研组

配套资料 · 直接下载

课件、代码、数据集等配套资料全部免费,点击即可直接下载,无需分享或解锁。

  • 第2章代码包:汇率兑换(含全部版本 5 个 .py)
    ZIP · 3KB
    下载
看图文没弄懂?展开看本节视频讲解(约 18 分钟)
📺 正在播放小象学院官方高清录播(支持倍速与清晰度调节)