
 
目录
- 一、题目描述
 - 二、输入描述
 - 三、输出描述
 - 四、解题思路
 - 五、Python算法源码
 - 六、效果展示
 - 1、输入
 - 2、输出
 - 3、思路分析
 - 4、输入
 - 5、输出
 - 6、思路分析
 
一、题目描述
记账本上记录了若干条多国货币金额,需要转换成人民币分 (fen),汇总后输出每行记录一条金额,金额带有货币单位,格式为数字+单位,可能是单独元,或者单独分,或者元与分的组合要求将这些货币全部换算成人民币分 (fen) 后进行汇总,汇总结果仅保留整数,小数部分舍弃。元和分的换算关系都是1:100,如下:
- 1CNY=100fen (1元=100分)
 - 1HKD=100cents (1港元=100港分)1JPY=100sen (1日元=100仙)
 - 1EUR=100eurocents (1欧元=100欧分)
 - 1GBP=100pence (1英镑=100便士)
 
汇率如下表:
| CNY | JPY | HKD | EUR | GBP | 
|---|---|---|---|---|
| 100 | 1825 | 123 | 14 | 12 | 
即100CNY=1825JPY=123HKD=14EUR=12GBP。
二、输入描述
第一行输入为N,N表示记录数。0<N<100之后N行,每行表示一条货币记录,且该行只会是一种货币。
三、输出描述
将每行货币转换成人民币分 (fen) 后汇总求和,只保留整数部分输出格式只有整数数字,不带小数,不带单位。
四、解题思路
- 读取输入的记录数 N;
 - 创建一个变量 total,用于存储汇总结果;
 - 使用正则表达式匹配每条记录中的金额和货币单位;
 - 根据货币单位和对应的汇率,将金额转换成人民币分;
 - 将转换后的金额加到 total 中;
 - 输出 total 的整数部分,舍弃小数部分。
 
五、Python算法源码
T = int(input())
Y = ['CNY', 'HKD', 'JPY', 'EUR', 'GBP']
F = ['fen', 'cents', 'sen', 'eurocents', 'pence']
cost = [100, 123, 1825, 14, 12]
result = 0
for k in range(T):
    st = input()
    left = 0
    for i in range(5):
        if Y[i] in st:
            num =''
            j = 0
            while st[j] >= '0' and st[j]<= '9':
                num = num + st[j]
                j = j + 1
            num = int(num)
            result = result + num * 100/cost[i] * cost[0]
            while j < len(st) and not (st[j] >= '0' and st[j] <= '9'):
                j = j + 1
            left = j
    for i in range(4, -1, -1):
        if F[i] in st:
            num = ''
            j = left
            while st[j] >= '0' and st[j] <= '9':
                num = num + st[j]
                j = j + 1
            num = int(num)
            result = result + num/cost[i] * cost[0]
            break
print(int(result))
 
六、效果展示
1、输入
1
 100CNY
2、输出
10000
3、思路分析
100CNY转换后是10000fen,所以输出10000。

4、输入
2
 10CNY60fen
 99HKD88cents
5、输出
9180
6、思路分析
2
 10CNY60fen
 99HKD88cents
演变为
10元60分+99港元88港分
演变为
10100+60+9910000/123 +88*100/123
输出
9180

🏆下一篇:华为OD机试真题 Python 实现【相对开音节】【2022Q4 100分】,附详细解题思路
🏆本文收录于,华为OD机试(Python)真题(A卷+B卷)
每一题都有详细的答题思路、详细的代码注释、样例测试,订阅后,专栏内的文章都可看,可加入华为OD刷题群(私信即可),发现新题目,随时更新,全天CSDN在线答疑。




















