本章通过汇率兑换的5个案例来进行学习基础的Python程序
案例描述
设计一个简单的汇率换算器程序,功能是能将外币转换成人民币或者相反
1.为了使程序简单,目前只考虑一种外币美元
2.新加功能:根据输入判断是人民币还是美元,进行相应的转换
3.新加功能:循环计算,输入Q退出循环
4.新加功能:通过调用函数减少荣域代码
5.新加功能:(1)结构化程序(2)将简单的函数转换为lambda函数
v1.0
根据问题描述,我们可以将这个分析称简单的输入、处理和输出(简称IPO),如下图:
![](https://img.haomeiwen.com/i13541328/e92c4e7f344460c6.png)
在程序中可以通过input函数赋值给变量实现输入数据。
变量无须定义类型可以直接调用,而通常全大写表示常量,变量只能通过字母、数字和下划线来组成且不能数字开头。
知识点:
1.变量无须定义类型可以直接调用,而通常全大写表示常量,变量只能通过字母、数字和下划线来组成且不能数字开头。
2.input()函数实现输入数据,类型为字符串。eval()可以将字符串中的数字转换为整数型
3.print()实现输出数据
代码实现如下:
"""
时间:2019年1月28日22:31:28
功能v1.0:汇率换算
"""
# 汇率
USD_RATE = 6.77
# 输入人民币
rmb_str_value = input("请输入人民币金额:")
# 字符型换成整数型
rmb_value = eval(rmb_str_value)
# 计算美元金额
usd_value = rmb_value / USD_RATE
# 输出金额
print("换算成美元为:", usd_value)
v2.0
新增判断输入来对数据进行不同的处理。
![](https://img.haomeiwen.com/i13541328/69f16f9a0dddba41.png)
知识点:
1.if elif else语句的使用,使用时记得带冒号“:”
2.数组的使用,通过[-3:]和[:-3]来取得倒数3位数据和顺数到倒数第3位的数据
ps:在程序中可以适当加判断来给程序处理不了的数据输出报错
"""
时间:2019年1月28日22:31:28
功能v1.0:汇率换算
新增功能v2.0:美元人民币相互转换
"""
# 汇率
USD_RATE = 6.77
# 输入人民币
current_value = input("请输入带单位金额:")
# print(current_value[-3:])
# 获取种类
nuit = current_value[-3:]
if nuit == "CNY":
# 字符型换成整数型
rmb_value = eval(current_value[:-3])
# 计算美元金额
usd_value = rmb_value / USD_RATE
# 输出金额
print("换算成美元为:", usd_value)
elif nuit == "USD":
# 字符串转换为整数型
usd_value = eval(current_value[:-3])
# 求人民币金额
rmb_value = usd_value * USD_RATE
# 输出金额
print("换算成人民币:", rmb_value)
else:
print("该版本尚未支持此货币转换汇率")
v3.0
在可以v2.0的基础上新增功能使用循环来多次换算货币,当用户确定要退出时输入设定值就可以退出。
![](https://img.haomeiwen.com/i13541328/6b5ec90eb7cf3045.png)
知识点:
1.while语句,当条件符合就进入循环体,否则退出
"""
时间:2019年1月28日22:31:28
功能v1.0:汇率换算
新增功能v2.0:美元人民币相互转换
新增功能v3.0:循环计算,输入Q退出循环
"""
# 汇率
USD_RATE = 6.77
# 循环计数
while_count = 0
# 输入人民币
current_value = input("请输入带单位金额:(退出程序请按Q)")
# 输入Q退出循环
while current_value != "Q":
# 循环一次就计数1次
while_count = while_count + 1
# print(current_value[-3:])
# 获取种类
nuit = current_value[-3:]
if nuit == "CNY":
# 字符型换成整数型
rmb_value = eval(current_value[:-3])
# 计算美元金额
usd_value = rmb_value / USD_RATE
# 输出金额
print("换算成美元为:", usd_value)
elif nuit == "USD":
# 字符串转换为整数型
usd_value = eval(current_value[:-3])
# 求人民币金额
rmb_value = usd_value * USD_RATE
# 输出金额
print("换算成人民币:", rmb_value)
# 其他情况
else:
print("该版本尚未支持此货币转换汇率")
print("*******************************")
# 带货币单位的输入
current_value = input("请输入带单位的金额:(退出程序请按Q)")
print("程序已退出")
v4.0
在v2.0基础上将计算金额封装成函数,使函数整洁
![](https://img.haomeiwen.com/i13541328/992b282e1652cde7.png)
知识点:
1.函数定义语句:def <函数名>([参数1],[参数2]) :
2.形参和实参
"""
时间:2019年1月28日22:31:28
功能v1.0:汇率换算
新增功能v2.0:美元人民币相互转换
新增功能v3.0:循环计算,输入Q退出循环
新增功能v4.0:通过调用函数减少荣域代码
"""
def count_money(im, cr):
"""
通过汇率计算金额
:param im:
:param cr:
:return:
"""
out = im * cr
return out
# 汇率
USD_RATE = 6.77
# 输入人民币
current_value = input("请输入带单位金额:")
# 获取种类
nuit = current_value[-3:]
if nuit == "CNY":
# 计算人民币汇率
current_rate = 1 / USD_RATE
elif nuit == "USD":
# 计算美元汇率
current_rate = USD_RATE
# 其他情况
else:
current_rate = -1
if current_rate != -1:
# 调用函数
im_money = count_money(eval(current_value[:-3]), current_rate)
print("兑换后的金额为:", im_money)
else:
# 否则输出不支持
print("该版本尚未支持此货币转换汇率")
v5.0
在v4.0的基础上新增:(1)结构化程序(2)将简单的函数转换为lambda函数
进一步将程序简洁和模块化,程序更加易读
![](https://img.haomeiwen.com/i13541328/3e4a75b8269452bc.png)
知识点:
1.lambda函数用法:<> = lambda <> : <>,用处:lambda函数可以将一行简单的代码直接定义成函数
2.if name == 'main':
main()
这个代码实现在主程序执行时可运行主函数main
"""
时间:2019年1月28日22:31:28
功能v1.0:汇率换算
新增功能v2.0:美元人民币相互转换
新增功能v3.0:循环计算,输入Q退出循环
新增功能v4.0:通过调用函数减少荣域代码
新增功能v5.0:(1)结构化程序(2)将简单的函数转换为lambda函数
"""
def count_money(im, cr):
"""
通过汇率计算金额
:param im:
:param cr:
:return:
"""
out = im * cr
return out
def main():
# 汇率
USD_RATE = 6.77
# 输入人民币
current_value = input("请输入带单位金额:")
# 获取种类
nuit = current_value[-3:]
if nuit == "CNY":
# 计算人民币汇率
current_rate = 1 / USD_RATE
elif nuit == "USD":
# 计算美元汇率
current_rate = USD_RATE
# 其他情况
else:
current_rate = -1
if current_rate != -1:
in_money = eval(current_value[:-3])
# 调用函数
# 定义简单的lambda函数
count_money2 = lambda x: x * current_rate
# 调用lambda函数
out_money = count_money2(in_money)
# out_money = count_money(eval(current_value[:-3]), current_rate)
print("兑换后的金额为:", out_money)
else:
# 否则输出不支持
print("该版本尚未支持此货币转换汇率")
if __name__ == '__main__':
main()
完整代码请查看
网友评论