思路:将两个大数分类按位放进两个数组中,以最长的字符串为准不足的补 0 ,然后按位相加,之后反序遍历结果数组,如果需要进位,则当前位数据对 10 求余数,然后向前进一位 。
代码实现如下:
def big_num_add(): s1 = raw_input("please enter a number:") s2 = raw_input("please enter another number:") s1_arr = [] s2_arr = [] # 数组对齐空位补0 if len(s1) > len(s2): for i in range(0, len(s1)-len(s2)): s2_arr.append(0) if len(s2) > len(s1): for i in range(0, len(s2)-len(s1)): s1_arr.append(0) for i, j in zip(s1, s2): s1_arr.append(int(i)) s2_arr.append(int(j)) # 按位相加 for index, _ in enumerate(s1_arr): s1_arr[index] = s1_arr[index]+s2_arr[index] s1_arr.reverse() for index, value in enumerate(s1_arr): if value >= 10: if ((index+1) < len(s1_arr)): s1_arr[index+1] += 1 s1_arr[index] = value % 10 s1_arr.reverse() result_str = "" for i in s1_arr: result_str += str(i) print result_str