MasterWang998
MasterWang998
2019-10-29 19:03
采纳率: 100%
浏览 2.9k

Python:字符串中数字求和

1.输入一个字符串,取出这个字符串中所有的数字并求和。每个数字都是*独立的,*不连续。
现在只知道如何提取字符串中的数字
例:s=‘Abc34g8’
for I in s:
I.isdigit()
或者 for I in s
if I in [1,2,3,4,5,6,7,8,9]
但是如何让提取出来的数字按照要求相加呢? 按照这种方法结果应是:15
2.输入一个字符串,取出这个字符串中所有的数字并求和。其中相邻的数字是*连续*的的。 按照这种方法结果应是:42
问如何求和?

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • xinwolf
    chimpanzee 2019-10-29 22:27
    已采纳

    cloudyzhao所说方案实现简单有效,此处列一个基础的写法,不依赖正则库
    s = "Abc34g8"
    result = 0
    i = 0
    while i < len(s):
    tmp_num = 0
    while i < len(i) and s[i] >= '0' and s[i] <= '9':
    tmp_num = tmp_num*10 + int(s[i])
    i += 1
    i+= 1
    result += tmp_num
    print(result)

    点赞 评论
  • zy841958835
    cloudyzhao 2019-10-29 20:12

    用正则表达式提取单个数字

    点赞 评论
  • u011256698
    家在田塍 2019-10-30 01:11

    1楼的正则表达式比较高阶,2楼的基础算法也可以说是非常漂亮!
    对我启发很大。
    所以我也想给出一个较为反面的算法(很低级,不巧妙),但结果
    当然是对的。这样可以一窥算法的优劣,容易知道从哪里提高自身水平。

    print('-'*20,'第二题,字符串中整数,相邻数字为连续整数','-'*20,'\n')
    s=input('输入一个带有数字和字母的字符串:\n')
    
    # 将所有是数字的对应索引提取出来作为list,为的是后续通过索引判断是否为连续数字,并且输出元素。
    list_index=[]
    list_new=[]
    sum=0
    for i in range(len(s)):
        if s[i].isdigit():
            list_index.append(i)
    # 用两个while循环,外循环获得单个数字输出,内循环通过判断是否为连续,在单个字符追加字符串。
    j=0
    while j<len(list_index):
        num=''
        num=num+s[list_index[j]]
        while j<len(list_index)-1 and list_index[j+1]-list_index[j] == 1:
            num=num+s[list_index[j+1]]
            j +=1
        num=int(num)
        list_new.append(num)
        j +=1
    #输出连续整数list的所有元素,以及他们的和。
    for m in list_new :
        sum=sum+m
    print('\n字符串中连续的整数有:\n',list_new)
    print(f'他们的和为:'+'\n'+f'{sum}')
    

    在下也是新手,希望能跟朋友们一起提高!

    点赞 评论
  • qq_43276855
    qq:315092669 2021-01-31 17:51
    string = "1234567"
    
    for i in range(len(string)):
        total += int(string[i])
    点赞 评论

相关推荐