繁体   English   中英

数字总和/精确数字

[英]sum of numbers/extact digits

我是编码新手,并尝试提取和打印无数字。 我编写了 2 个不同的代码,但无法将它们组合起来。 我会很感激一些建议。 (我尝试使用*args但没有用)

def SumOfDigits(str1):
    sum_digit = 0
    for x in str1:
        if x.isdigit():
            z = int(x)
            sum_digit += z
    print("The sum of digits operation is", sum_digit, end=".")
    return   
def SumOfDigits(input):
    valids = []
    for character in input:
        if character.isalpha():
            valids.append(character)
    print("The extracted non-digits are:", ''.join(valids))
    return

埃尔。 尼克,我相信那些 2 function 你不会被合并,因为它们的行为不同,这会导致更复杂的 function,这可能会让人有点困惑。

无论如何,您想要的是将两个 for 循环合并为一个。 由于str.isalpha匹配不会与str.isdigit匹配,因此您可以安全地使用if语句后跟elif来检查每个字符并应用所需的行为。

然后,您只需将 2 个结果作为元组返回。

def digit_extraction(string):
    sum_digits = 0
    extracted_alphas = ""

    for char in string:
        if char.isdigit():
            sum_digits += int(char)

        elif char.isalpha():
            extracted_alphas += char

    return sum_digits, extracted_alphas

这是一个简单的例子:

>>> digit_extraction("1a2b3c4d5e6f7g8h9i")
(45, 'abcdefghi')

如果您不知道 python 中的多重返回值是如何工作的,我建议您查看以下教程:

https://datagy.io/python-return-multiple-values/

要进入更高级的内容,将 2 function 分开将允许编写被认为更 Pythonic 的内容:


def sum_of_digits(string):
    return sum(int(c) for c in string if c.isalpha())

def extract_alphas(string):
    return ''.join(filter(str.isalpha, c))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM