python - 为什么 def 函数不会与我的最后一个打印行计算相同的答案?
问题描述
只是想知道为什么最后两个命令的返回值不同 对于交换函数,返回值应该是 600 而不是 100。
unit ={"HKD":1, "USD":7.8, "CAN":6}
price = 100
for cur, rate in unit.items():
print (cur, rate)
def exchange(price, cur):
for (cur, rate) in unit.items():
if cur=="HKD":
exp = unit["HKD"]*price
elif cur=="USD":
exp = unit["USD"]*price
else:
exp = unit["CAN"]*price
return print(exp)
exchange(100, "CAN")
print(unit["CAN"]*price)
解决方案
只需正确使用字典:
def exchange(price, cur):
return unit[cur]*price
为什么你的代码不起作用?cur
除了低效方面,在字典键上循环时,您会隐藏参数。
总是问自己“为什么我要在字典上循环执行查找,而字典是为不循环查找而制作的”
推荐阅读
- sql - 使用多个 OR 条件优化查询
- python - 定义的前缀不会从 json 文件不和谐中加载
- forms - 是否有任何解决方法来指定发件人的电子邮件地址,以便在提交表单时自动发送电子邮件?
- python - 如果带有布尔函数调用的条件在 Python 中始终为 True
- three.js - 如何从three.js/editor 中的脚本创建或引用动画?
- javascript - 通过 URL 和 URLSearchParams 创建多个查询键
- javascript - 如何在 Jasmine / Angular 中使用文档间谍覆盖 setTimeout 函数?
- angular - 如何“按下”关闭按钮以关闭导航栏
- amazon-web-services - AWS Contigo - 在我的 Flutter 应用程序上向 Google 进行身份验证
- google-apps-script - 如何从 URL 连接 Web API 并使用该数据?