#原题在最后 while True: try: print(int(input())+int(input())) except: break
极简,然显然不符题意,只是体现python之实用
另一种方法稍长,考虑了输入为正和负的情况:
def add(s1,s2): maxlen = max(len(s1),len(s2)) s1 = s1.rjust(maxlen,'0') s2 = s2.rjust(maxlen,'0') rst = '' carry = 0 for i in range(maxlen-1,-1,-1): val = (int(s1[i])+int(s2[i])+carry)%10 carry = (int(s1[i])+int(s2[i])+carry)//10 rst = str(val)+rst if carry == 1: rst = '1'+rst return rst def minus(s1,s2): #abs(s1)>abs(s2) maxlen = len(s1) s2 = s2.rjust(maxlen,'0') rst = '' carry = 0 for i in range(maxlen-1,-1,-1): if int(s1[i])+carry>=int(s2[i]): rst = str(int(s1[i])+carry-int(s2[i]))+rst carry = 0 else: rst = str(int(s1[i])+carry+10-int(s2[i]))+rst carry = -1 while rst[0]=='0': rst = rst[1:] return rst def f1(s1,s2): if s1[0] in '0123456789': flag1 = '+' else: flag1 = s1[0] s1 = s1[1:] if s2[0] in '0123456789': flag2 = '+' else: flag2 = s2[0] s2 = s2[1:] if flag1==flag2: if flag1=='+': return add(s1,s2) else: return flag1+add(s1,s2) else: len1,len2 = len(s1),len(s2) if len1>len2: rst = flag1+minus(s1,s2) elif len1<len2: else:="" i="" rst="flag2+minus(s2,s1)" while=""><len1>int(s2[i]): rst = flag1+minus(s1,s2) else: rst = flag2+minus(s2,s1) if rst[0]=='+': rst = rst[1:] return rst while True: try: a = input().split() b = input().split() print(add(a[0],b[0])) except: break</len1></len2:>原题如下:
描述
输入两个用字符串表示的整数,求它们所表示的数之和。
字符串的长度不超过10000。
本题含有多组样例输入。
输入描述:
输入两个字符串。保证字符串只含有'0'~'9'字符
输出描述:
输出求和后的结果