【货币单位换算】

题目描述

【货币单位换算】

记账本上记录了若干条多国货币金额,需要转换成人民币分(fen),汇总后输出。
每行记录一条金额,金额带有货币单位,格式为数字+单位,可能是单独元,或者单独分,或者元与分的组合。
要求将这些货币全部换算成人民币分(fen)后进行汇总,汇总结果仅保留整数,小数部分舍弃。
元和分的换算关系都是1:100,如下:

1CNY=100fen(1元=100分)
1HKD=100cents(1港元=100港分)
1JPY=100sen(1日元=100仙)
1EUR=100eurocents(1欧元=100欧分)
1GBP=100pence(1英镑=100便士)

汇率如下表:

CNYJPYHKDEURGBP
10018251231412

即100CNY=1825JPY=123HKD=14EUR=12GBP

输入描述

第一行输入为N,N表示记录数。0<N<100

之后N行,每行表示一条货币记录,且该行只会是一种货币。

输出描述

将每行货币转换成人民币分(fen)后汇总求和,只保留整数部分。
输出格式只有整数数字,不带小数,不带单位。

该题是纯逻辑题目,使用正则提取对应单位的数字即可

代码一:

import re,math
count = 0
n = int(input())
for i in range(n):
    s = input()
    ret = re.findall(r'\d+CNY|\d+fen|\d+HKD|\d+cents|\d+JPY|\d+sen|\d+EUR|\d+eurocents|\d+GBP|\d+pence', s)
    for i in ret:
        if i.endswith('CNY'):
            count += int(i.strip('CNY')) * 100
        elif i.endswith('fen'):
            count += int(i.strip('fen'))
        elif i.endswith('HKD'):
            count += int(i.strip('HKD'))/123 * 10000
        elif i.endswith('cents'):
            count += int(i.strip('cents'))/123 *100
        elif i.endswith('JPY'):
            count += int(i.strip('JPY'))/1825 * 10000
        elif i.endswith('sen'):
            count += int(i.strip('sen'))/1825 * 100
        elif i.endswith('EUR'):
            count += int(i.strip('EUR'))/14 * 10000
        elif i.endswith('eurocents'):
            count += int(i.strip('eurocents'))/14 * 100
        elif i.endswith('GBP'):
            count += int(i.strip('GBP'))/12 * 10000
        else:
            count += int(i.strip('pence'))/12 * 100
print(math.floor(count))






代码二:

import math
import re
 
n = int(input())
arr = [input() for i in range(n)]
 
def getResult(arr):
    pattern = r"(\d+)((CNY)|(JPY)|(HKD)|(EUR)|(GBP)|(fen)|(cents)|(sen)|(eurocents)|(pence))"
 
    exchage = {
        "CNY": 100,
        "JPY": 100 / 1825 * 100,
        "HKD": 100 / 123 * 100,
        "EUR": 100 / 14 * 100,
        "GBP": 100 / 12 * 100,
        "fen": 1,
        "cents": 100 / 123,
        "sen": 100 / 1825,
        "eurocents": 100 / 14,
        "pence": 100 / 12
    }
 
    ans = 0
 
    for s in arr:
        result = re.findall(pattern, s)
        for item in result:
            amount = item[0]
            unit = item[1]
            ans += int(amount) * exchage[unit]
 
    return math.floor(ans)
 
print(getResult(arr))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值