代码主体
案例说明:通过循环、判断语句来实现对输入金额和单位的转换。不过这里的函数要求你输入的内容必须是“金额单位”的格式,且,只满足美元和人民币之间的转换。
def main():
usd_vs_rmb = 6.77
i = 0
print('欢迎使用货币转换器(退出请输入Q)。')
value_string = input('请输入货币的金额和单位(CNY/USD)(示例:100CNY):')
while value_string.upper() != 'Q' :
unit = value_string[-3:]
value = value_string[:-3]
if unit.upper() == 'CNY' :
usd = float(value) / usd_vs_rmb
print('转换为美元为:',round(usd,3),'USD')
elif unit.upper() == 'USD' :
rmb = float(value) * usd_vs_rmb
print('转换为人民币为:',round(rmb,3),'CNY')
else :
print('请输入人民币或者美元单位!')
i += 1
#print('循环次数:',str(i))
print('\n*******************************************')
value_string = input('请输入货币的金额和单位(CNY/USD)(示例:100CNY):')
print('程序已结束!')
#封装函数之后对函数进行调用,使整体更加简洁
if __name__ == '__main__':
main()
函数说明:当输入以CNY或者RMB结尾的字符串时,函数将根据输入的货币单位进行判断,把相应的金额进行转换,并输出转换后的金额和货币单位。当输入q时将停止运算。
课程中是用的是eval()函数来实现对输入字符串中的金额(数字)的提取,我使用的则是浮点数函数。
其次,我添加了upper()函数来避免大小写不一致带来的错误。最后,在最终结果的输出时,我使用了round()函数来规范输出结果,使得结果更加美观。
课后思考
在学习过程中我就有两个思考,一个是如何实现多种货币的识别和转换;另一个是如何获得实时的汇率。
刚好这两点思考和课程中最后的课后思考不谋而合。
关于第一点,课程给出的提示是借助于集合进行操作。而我的做法是借助字典进行处理,不过目前只能实现单向转换:外币到人民币。
##思考1.1
#函数目的:将所有给出的货币转化为人民币
print('欢迎使用货币转换器(退出请输入Q)。')
currency_list = {'EUR':7.63,'AUD':4.76,'USD':6.72,'GBP':8.93,'JPY':0.06}
value_string = input('请输入货币的金额和单位(示例:100CNY,输入Q退出):')
i = 1
while value_string.upper() !='Q' :
unit = value_string[-3:]
value = value_string[:-3]
if unit.upper() in currency_list.keys() :
value = float(value) * currency_list[unit]
print('转换为人民币为:',round(value,3),'CNY')
else :
print('请输入如下货币:')
unit_list = list(currency_list.keys())
for i in range(0,len(unit_list)):
print(unit_list[i],end=' ')
i += 1
print('\n*******************************************')
value_string = input('请输入货币的金额和单位(示例:100CNY,输入Q退出):')
print('程序已结束!')
上面的函数实现了,当输入的字符串以字典中已有的货币单位结尾时,将转换成人民币单位,若不是已有的货币单位,将打印出现在支持的货币类型并且再次输出。
然后就我就突发奇想去做双向了,还好,很简单就实现了。数据如下:
import pandas as pd
currency_data = pd.read_csv('currency_rating.csv',index_col=0)
value_string = input('请输入货币的金额和单位(示例:100CNY,输入Q退出):')
units = list(currency_data.columns)
i = 1
while value_string.upper() !='Q' :
unit_to = input('请输入想要转换成的货币单位(示例:USD):')
unit_from = value_string[-3:]
value = value_string[:-3]
if unit_from.upper() in units :
if unit_to.upper() in units :
value = float(value) * currency_data.loc[unit_from,unit_to]
print('转换为',unit_to,'为:',round(value,3))
else :
print('请输入如下货币:')
for i in range(0,len(units)):
print(units[i],end=' ')
else :
print('请输入如下货币:')
for i in range(0,len(units)):
print(units[i],end=' ')
i += 1
print('\n*******************************************')
value_string = input('请输入货币的金额和单位(示例:100CNY,输入Q退出):')
print('程序已结束!')
第二点毋庸置疑肯定要借助于爬虫技术。所以这里先留个坑,等学会了爬虫就来把这这个问题解决了并且完善一下第一个问题,做一个自己的货币转换器哈哈哈。