Description
读入两个正整数A和B,计算A+B. 需要注意的是:A和B的每一位数字由对应的英文单词给出.
Input
测试输入包含若干测试用例,每个测试用例占一行,格式为"A + B =",相邻两字符串有一个空格间隔.当A和B同时为0时输入结束,相应的结果不要输出.
Output
对每个测试用例输出1行,即A+B的值.
Sample Input
one + two =
three four + five six =
zero seven + eight nine =
zero + zero =
Sample Output
3
90
96
参考程序:
dic={'zero':0,'one':1,'two':2,'three':3,'four':4,'five':5,'six':6,'seven':7,
'eight':8,'nine':9}
def GetNum(ls):
tot=len(ls)
s=0
for i in range(len(ls)):
s+=10**(tot-i-1)*dic[ls[i]]
return s
while True:
exp=input()
exp=exp[:-2]#去掉表达式最后面的空格和等号
A,B=exp.split("+")#分离A,B
A=A.strip(" ")#去掉字符串两边多余的空格
B=B.strip(" ")
lsA=A.split()#将组成A的各位数字的英文单词提取出来,存入列表
lsB=B.split()
a=GetNum(lsA)
b=GetNum(lsB)
if a==0 and b==0:
break
else:
print(a+b)
'''
three four three four + zero =
3434
'''
本题难点在于逐层提取出表示数字的英文单词,需要运用字符串的常用方法如split,strip等。保存英文单词和数字的对应关系用字典实现。