题目描述:
记账本上记录了若干条多国货币金额,需要转换成人民币分(fen),汇总后输出。
每行记录一条金额,金额带有货币单位,格式为数字+单位,可能是单独元,或者单独分,或者元与分的组合。
要求将这些货币全部换算成人民币分(fen)后进行汇总,汇总结果仅保留整数,小数部分舍弃。
元和分的换算关系都是1:100,如下:
1CNY=100fen(1元=100分)
1HKD=100cents(1港元=100港分)
1JPY=100sen(1日元=100仙)
1EUR=100eurocents(1欧元=100欧分)
1GBP=100pence(1英镑=100便士)
汇率如下表
即100CNY=1825JPY=123HKD=14EUR=12GBP
输入描述:
第一行输入为N,N表示记录数。0<N<100
之后N行,每行表示一条货币记录,且该行只会是一种货币。
输出描述:
将每行货币转换成人民币分(fen)后汇总求和,只保留整数部分。
输出格式只有整数数字,不带小数,不带单位。
补充说明:
输出格式只有数字,不带单位
示例1
输入:
1
100CNY
输出:
10000
说明:
100CNY转换后是10000fen,所以输出结果为10000
示例2
输入:
1
3000fen
输出:
3000
说明:
3000fen,结果就是3000
示例3
输入:
1
123HKD
输出:
10000
说明:
HKD与CNY的汇率关系是123:100,所以换算后,输出结果为10000
示例4
输入:
2
20CNY53fen
53HKD87cents
输出:
6432
说明:
20元53分+53港元87港分,换算成人民币分后汇总,为6432
解题思路:
关键是拆分输入,通过示例,我们可以知道格式为(金额:单位:金额:单位),以此为基础拆分出金额,由于十种货币单位的首字母均不同,所以可以通过首字母来进行分辨到底是什么货币单位。然后将对应的金额进行转换,存进总金额sum
Python中的/会自动将整型转换为浮点型,所以不需要过多得关注数字的类型,只需要在最后将浮点型转为整型即可
#华为机试,emo了#
n=int(input())
st=[input() for i in range(n)]
sum=0
for line in range(n):
#pre_word用来判定前一个字符是字母还是数字,因为字符串开头必定为数字,按照字符串中字符的排列规律,应该将pre_word初始化为字母,随便取一个字母就行
pre_word='x'
#cash列表用来存储数字,之后用来输出金额
cash=[]
for word in st[line]:
if word.isnumeric():
cash.append(word)
pre_word=word
else:
if pre_word.isnumeric():
if word=='C':
sum+=100*int(''.join(cash))
cash = []
elif word=='f':
sum+=1*int(''.join(cash))
cash = []
elif word == 'H':
sum+=int(''.join(cash))/123*10000
cash = []
elif word == 'c':
sum+=int(''.join(cash))/123*100
cash = []
elif word == 'J':
sum+=int(''.join(cash))/1825*10000
cash = []
elif word == 's':
sum+=int(''.join(cash))/1825*100
cash = []
elif word == 'E':
sum+=int(''.join(cash))/14*10000
cash = []
elif word == 'e':
sum+=int(''.join(cash))/14*100
cash = []
elif word == 'G':
sum+=int(''.join(cash))/12*10000
cash = []
elif word == 'p':
sum+=int(''.join(cash))/123*100
cash = []
pre_word=word
print(int(sum))