【问题标题】:changing from string numbers in a list to int and sum them up. Number strings are separated by characters in the string it self where numbers从列表中的字符串数字更改为 int 并将它们相加。数字字符串由它自己的字符串中的字符分隔,其中数字
【发布时间】:2021-11-17 14:49:51
【问题描述】:

实现一个名为 add_even_numbers() 的函数。该函数接受一个名为的字符串列表 str_list (type: list) 作为其参数,其中 str_list 中的每个字符串都包含一个正整数序列 用“|”分隔,例如“12|89|34”。该函数应将给定列表中找到的所有偶数相加。 您可以假设 str_list 中的每个字符串始终按上述正确格式化,并且始终包含 至少一个整数。不过,str_list 可能为空。

例如,

  • add_even_numbers(['1|2|3', '10|50']) 返回 62(因为 2 + 10 + 50 = 62,而 1 和 3 是 未添加)。
  • add_even_numbers(['99|1|27', '11|5']) 返回 0(因为没有偶数)。
  • add_even_numbers(['1', '12']) 返回 12。
  • add_even_numbers([]) 返回 0。

我的代码是:



def add_even_numbers(str_list):
    count=[]
    num=""
    int_num=0
    accepted="02468" 
    for x in str_list:
        num=""
        for i in x:
            if i!="|":
                num=num+i
            
                    
            elif i=="|":
                if int(num)%2==0:
                    int_num+=int(num)
                    
                    num=""
            elif i==x[-1]:
                if int(num)%2==0:
                    int_num+=int(num)

                    num=""
            
    return int_num

我这样做的方式是尝试将所有字符串之间的所有字符串更改为 int 并总结它们,但我没有得到答案。 请帮我更正此代码,谢谢您提前

这些是测试代码

print()
print('-' * 20)
print()

print("Test Case 1: add_even_numbers(['1|2|3', '10|50']))")

print()

result = add_even_numbers(['1|2|3', '10|50'])
print('Expected: 62')
print('Actual:   ' + str(result))

print("Expected type of returned value: <class 'int'>")
print('Actual type of returned value:   ' + str(type(result)))

print()
print('-' * 20)
print()

print("Test Case 2: add_even_numbers(['99|1|27', '11|5'])")

print()

result = add_even_numbers(['99|1|27', '11|5'])
print('Expected: 0')
print('Actual:   ' + str(result))

print()
print('-' * 20)
print()

print("Test Case 3: add_even_numbers(['1', '12'])")

print()

result = add_even_numbers(['1', '12'])
print('Expected: 12')
print('Actual:   ' + str(result))

print()
print('-' * 20)
print()

print("Test Case 4: add_even_numbers([])")

print()

result = add_even_numbers([])
print('Expected: 0')
print('Actual:   ' + str(result))

【问题讨论】:

    标签: python string for-loop integer


    【解决方案1】:

    您可能不允许在作业中使用正则表达式,但如果可以,有一个非常简单的方法:

    def add_even_numbers(str_list):
        total = 0
        for str in str_list:
            total += sum([int(x) for x in re.findall(r'\d+', str) if int(x) % 2 == 0])
    
        return total
    
    print(add_even_numbers(['1|2|3', '10|50']))  # 62
    

    【讨论】:

      【解决方案2】:

      你可以这样做:

      def add_even_numbers(str_list):
          return sum(n for n in map(
              int, (x for s in str_list for x in s.split("|"))) if not n%2)
      
      >>> add_even_numbers(['1|2|3', '10|50'])
      62
      >>> add_even_numbers(['99|1|27', '11|5'])
      0
      >>> add_even_numbers(['1', '12'])
      12
      >>> add_even_numbers([])
      0
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2010-10-19
        • 2011-03-18
        • 2015-01-29
        • 2018-07-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-04-18
        相关资源
        最近更新 更多