python:把英文字母转换为数字相加
话不多说,看题:
题目描述:
读入两个小于100的正整数A和B,计算A+B.
需要注意的是:A和B的每一位数字由对应的英文单词给出.
输入:
测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B =",相邻两字符串有一个空格间隔.当A和B同时为0时输入结束,相应的结果不要输出.
输出:
对每个测试用例输出1行,即A+B的值.
样例输入:
one + two =
three four + five six =
zero seven + eight nine =
zero + zero =
样例输出:
3
90
96
参考代码:
#encoding:utf-8
"""
题目描述:
读入两个小于100的正整数A和B,计算A+B.
需要注意的是:A和B的每一位数字由对应的英文单词给出.
输入:
测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B =",相邻两字符串有一个空格间隔.当A和B同时为0时输入结束,相应的结果不要输出.
输出:
对每个测试用例输出1行,即A+B的值.
样例输入:
one + two =
three four + five six =
zero seven + eight nine =
zero + zero =
"""
def changeTonum(str):
numdata = []
datas = ['zero','one','two','three','four','five','six','seven','eight','nine','ten']
numdatas = str.split(" + ")
numdata.append(numdatas[0].split(" "))
numdata.append(numdatas[1].split(" "))
#print(numdata)
#注意这里,把所有单数输入情况转换为双数即[['one'],['two']]转化为[['zero','one'],['zero','two']]
if len(numdata[0]) == 1:
numdata[0].insert(0,'zero')
if len(numdata[1]) == 1:
numdata[1].insert(0,'zero')
sum =(datas.index(numdata[0][0]) * 10)+datas.index(numdata[0][1])+\
(datas.index(numdata[1][0]) * 10)+datas.index(numdata[1][1])
return sum
data = []
results = [] #存放第一行到倒数第二行输入的计算结果
while True:
temp = input().strip(' =')
data.append(temp)
if temp == 'zero + zero': #输入结束标志
break
for i in range(len(data)-1): #最后一个zero+zero元素不考虑
result = changeTonum(data[i])
results.append(result)
for i in results:
print(i)