从案例中初识Python——案例一汇率兑换

相关知识

在这里插入图片描述

算法 :

输入人民币金额——处理:汇率计算——输出:相应的美元金额

.idea:工程的一些相关配置

currency_converter_v1.0.py

#汇率
USD_VS_RMB= 6.77

#字符串
rmb_str_value = input(‘请输入人民币金额(CNY):)
      
#将包含数字的文本转换为数字
rmb_value = eval(rmb_str_value)                

#计算美元金额
usd_value = rmb_value / usd_vs_rmb

print(‘美元金额(USD)是:,usd_value)

eval()函数的使用:将包含数字的字符串转换为数字
单行注释#
多行注释以三引号开始结束(多用于整个程序的介绍)
删除一行代码快捷键ctrl+D(前提是file-steeings-keymap设定为Eclipse
常量常用大写
变量命名:大小写字母,数字,下划线
不能以数字开头
大小写敏感
不能和保留字相同
在这里插入图片描述

V2.0(功能更加强大,增加根据输入判断是人民币还是美元,进行相应的转换计算)

相关知识

在这里插入图片描述

分支结构的实现

:分支语句if else
If(条件):(语句) (冒号别忘了)
elif(条件):(语句)

else(语句)

currency_converter_v2.0.py

USD_VS_RMB = 6.77
#带单位的货币输入
currency_str_value = input('请输入带单位的货币金额:')
#获取货币单位
unit = currency_str_value[-3:]
#缩进
if unit == 'CNY':
    #输入的是人民币
    rmb_str_value = currency_str_value[:-3]
    #将字符串转换为数字
    rmb_value = eval(rmb_str_value)
    usd_value = rmb_value / USD_VS_RMB
    print('美元金额(USD)是:', usd_value)
elif unit == 'USD':
    # 输入的是美元
    usd_str_value = currency_str_value[:-3]
    # 将字符串转换为数字
    usd_value = eval(usd_str_value)
    rmb_value = usd_value * USD_VS_RMB
print('人民币金额(CNY)是:', rmb_value)
else:
    #其他情况
    print('该程序目前版本尚不支持该种货币!')

While(<条件>):(冒号别忘了)

<语句块1>
<语句块2>
当条件为真(true)执行语句块1;为假(false)退出循环

currency_converter_v3.0.py

添加功能:能否让程序一直执行,直到用户选择退出?

USD_VS_RMB = 6.77
#带单位的货币输入
currency_str_value = input('请输入带单位的货币金额(退出程序请输入Q):')
while currency_str_value != 'Q':
    #获取货币单位
    unit = currency_str_value[-3:]
    #缩进
    if unit == 'CNY':
        #输入的是人民币
        rmb_str_value = currency_str_value[:-3]
        #将字符串转换为数字
        rmb_value = eval(rmb_str_value)
        usd_value = rmb_value / USD_VS_RMB
        print('美元金额(USD)是:', usd_value)
    elif unit == 'USD':
        # 输入的是美元
        usd_str_value = curQrency_str_value[:-3]
        # 将字符串转换为数字
        usd_value = eval(usd_str_value)
        rmb_value = usd_value * USD_VS_RMB
        print('人民币金额(CNY)是:', rmb_value)
    else:
        # 其他情况
        print('目前版本尚不支持该种货币!')
print('程序已退出!')

如果程序中多次用到兑换功能,代码量会增加,如何简化?

v4.0:将汇率功能封装到函数中
函数:def<函数名><参数列表>:(冒号别忘了)
<函数体>
return<返回值列表>

currency_converter_v4.0.py

def convert_currency(im,er)"""
    汇率兑换函数
    """
    out = im * er
    return out

USD_VS_RMB = 6.77
#带单位的货币输入
currency_str_value = input('请输入带单位的货币金额:')
#获取货币单位
unit = currency_str_value[-3:]
#缩进
if unit == 'CNY':
    exchange_rate = 1 / USD_VS_RMB

elif unit == 'USD':
    exchange_rate = USD_VS_RMB

else:
    exchangge_rate = -1

if exchange_rate != -1:
    in_money = eval(currency_str_value[:-3])
    #调用函数
    out_money = convert_currency(in_money, exchange_rate)
    print('转换后的金额:',out_money)
else:
    print('不支持该种货币!')
   

如果复用的功能很简单(一句话能完成任务),是否有更简洁的写法?

Lambda函数
特殊函数——匿名函数
使用方法:
<函数名> = lambda<参数列表>:<表达式>
用于简单的,能够在一行内表示的函数,计算结果为返回值

def main():
    """
        主函数
    """
    USD_VS_RMB = 6.77
    #带单位的货币输入
    currency_str_value = input('请输入带单位的货币金额:')
    #获取货币单位
    unit = currency_str_value[-3:]
    #缩进
    if unit == 'CNY':
        exchange_rate = 1 / USD_VS_RMB
    elif unit == 'USD':
        exchange_rate = USD_VS_RMB
    else:
        exchange_rate = -1
    if exchange_rate != -1:
        in_money = eval(currency_str_value[:-3])

        #使用lambda定义函数
        convert_currency2 = lambda x: x * exchange_rate

        #调用lambda函数
        out_money = convert_currency2(in_money)
        print('转换后的金额:',out_money)
    else:
        print('不支持该种货币!')
if __name__ == '__main__':
    # 特殊变量名左右双下划线(一种python的内置属性)
    main()

if name== ‘main’:的运行原理
每个python模块(python文件,也就是此处的 test.py 和 import_test.py)都包含内置的变量 name,当该模块被直接执行的时候,name 等于文件名(包含后缀 .py );如果该模块 import 到其他模块中,则该模块的 name 等于模块名称(不包含后缀.py)。
而 “main” 始终指当前执行模块的名称(包含后缀.py)。进而当模块被直接执行时,name == ‘main’ 结果为真。
为了进一步说明,我们在 test.py 脚本的 if name"main": 之前加入 print(name),即将 name 打印出来。文件内容和结果如下:
在这里插入图片描述
在这里插入图片描述
可以看出,此时变量__name__的值为"main"。
再执行 import_test.py,执行结果如下:
在这里插入图片描述
在这里插入图片描述
此时,test.py中的__name__变量值为 test,不满足 name
"main" 的条件,因此,无法执行其后的代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值