python 实现字符串加法

给定两个由数字组成的字符换num1和num2,计算它们的和,不能用内置的加法方法。

基本思路就是竖式计算的过程,两种方法,其中涉及一些容易出错的地方,代码中都做了注释。

# 两个字符串(合法的数字字符串)相加,不能用内置库
# 算竖式的思想,个位对齐,相加,并把进位传递到下一位

def add_strings(a, b):
    len_a = len(a)
    len_b = len(b)
    x = len_a - len_b
    if x > 0:
        b = '0' * x + b
    else:
        a = '0' * (-x) + a
    n = max(len_a, len_b)
    carry = 0  # 进位标志
    res = ''
    for i in range(n - 1, -1, -1):  # 逆序,即从最低位开始,因此遍历的下标是n-1->0,最后一个-1表示逆序
        # x = '0' if i > len_a - 1 else a[i]  # 注意python三元表达式的写法,尤其是else后没:
        # y = '0' if i > len_b - 1 else b[i]
        x, y = a[i], b[i]
        sum_x_y = (ord(x) - ord('0')) + (ord(y) - ord('0'))  # python 不能字符串不能直接相减,需ord转化为ASCII再运算

        res = str((sum_x_y + carry) % 10) + res
        carry = int((sum_x_y + carry) / 10)
    if carry:  # 遍历到字符串结束后,还应加上最后一位进位(若不为0)
        res = str(carry) + res
    return res

#优化
def add_strings1(a,b):
    i = len(a)
    j = len(b)
    carry = 0 #进位
    res = ''
    while i>0 or j>0 or carry:  # 对于不确定在哪里停止的循环,就用while,用i来控制循环次数
        x=a[i-1] if i>0 else '0'
        y=b[j-1] if j>0 else '0'
        sum_x_y = (ord(x) - ord('0')) + (ord(y) - ord('0'))
        res = str((sum_x_y+carry)%10) + res
        carry = int((sum_x_y+carry)/10)
        i -= 1
        j -= 1
    return res

if __name__ == '__main__':
    print(add_strings('123','456'))
    print(add_strings('789', '456'))
    print(add_strings('1234567890', '9876543210'))
    print(add_strings1('1234567890', '9876543210'))

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 可以使用 Python 中的内置函数 `eval()` 来实现字符串的数字加法。具体步骤如下: 1. 将需要相加的数字以字符串的形式拼接起来,例如 `"1+2+3+4"`。 2. 将拼接后的字符串作为参数传递给 `eval()` 函数,该函数会将字符串作为 Python 代码进行求值。 3. `eval()` 函数的返回值即为相加后的结果。 示例代码如下: ```python num_str = "1+2+3+4" result = eval(num_str) print(result) # 输出结果为 10 ``` 需要注意的是,使用 `eval()` 函数需要非常小心,因为它可以执行任意的 Python 代码。如果将不可信的字符串作为参数传递给 `eval()` 函数,可能会引发安全问题。 ### 回答2: Python提供了很多方法来实现字符串中数字的加法。其中最常用的方法是使用内置的`eval()`函数和字符串的拼接。我们可以将两个包含数字的字符串拼接成一个表达式,然后使用`eval()`函数来计算结果。 例如,假设有两个数字字符串`num1`和`num2`,我们可以将它们拼接成一个表达式`expression`,并使用`eval()`函数计算结果,然后将结果转换成字符串。 具体代码如下: ```python num1 = "123" num2 = "456" # 拼接表达式 expression = num1 + "+" + num2 # 使用eval函数计算结果 result = eval(expression) # 将结果转换成字符串 result_str = str(result) print("结果为:" + result_str) ``` 运行以上代码,结果将会是`579`。这是将两个数字字符串`123`和`456`拼接起来后得到的表达式`123+456`的计算结果。 使用`eval()`函数能够快速计算表达式的值,但需要注意其安全性。因为`eval()`函数会将字符串作为Python代码进行执行,如果被执行的字符串存在安全隐患,可能会造成代码注入或者其他安全问题。 所以在实际应用中,最好使用其他方法来实现字符串中数字的加法,比如使用正则表达式或者字符串转数字后进行计算。这样能够更加安全可靠地实现字符串加法操作。 ### 回答3: Python字符串可以通过将数字转换为字符串,然后使用字符串的拼接操作符(+)进行加法运算。 首先,我们需要将数字转换为字符串,可以使用内置的str()函数,如下所示: ```python num1 = 5 num2 = 10 str_num1 = str(num1) str_num2 = str(num2) ``` 接下来,我们可以使用字符串的拼接操作符将这两个字符串相加,得到它们的和的字符串形式: ```python sum_str = str_num1 + str_num2 ``` 注意,此时的结果仍然是一个字符串。如果我们希望得到一个数字类型的结果,可以使用int()函数将结果转换为整数,如下所示: ```python sum_num = int(sum_str) ``` 最后,我们可以打印出结果进行验证: ```python print(sum_num) ``` 完整的代码如下所示: ```python num1 = 5 num2 = 10 str_num1 = str(num1) str_num2 = str(num2) sum_str = str_num1 + str_num2 sum_num = int(sum_str) print(sum_num) ``` 以上就是使用Python字符串实现数字加法的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值