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