首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >数字之和/扩展数字

数字之和/扩展数字
EN

Stack Overflow用户
提问于 2021-12-07 20:29:40
回答 1查看 50关注 0票数 -1

我是新的编码和尝试提取和打印无数字。我写了两个不同的代码,但不能组合它们。我希望你能给我一些建议。(我试过使用*args,但没有起作用)

代码语言:javascript
运行
复制
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   
代码语言:javascript
运行
复制
def SumOfDigits(input):
    valids = []
    for character in input:
        if character.isalpha():
            valids.append(character)
    print("The extracted non-digits are:", ''.join(valids))
    return
EN

回答 1

Stack Overflow用户

发布于 2021-12-07 20:51:31

艾尔。Nik,我相信这两个函数没有被合并,因为它们做的是不同的行为,这导致了一个更复杂的函数,这可能会变得有点混乱。

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

然后,您只需以元组的形式返回这2个结果。

代码语言:javascript
运行
复制
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

下面是一个简单的例子:

代码语言:javascript
运行
复制
>>> digit_extraction("1a2b3c4d5e6f7g8h9i")
(45, 'abcdefghi')

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

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

为了进入更高级的东西,分离2函数将允许写一些被认为是更丙酮的东西:

代码语言:javascript
运行
复制
def sum_of_digits(string):
    return sum(int(c) for c in string if c.isalpha())

代码语言:javascript
运行
复制
def extract_alphas(string):
    return ''.join(filter(str.isalpha, c))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70266565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档