繁体   English   中英

计算列表的字母和数字

[英]Counting letters and numbers of list

我正在尝试计算列表的字母和数字的数量。 例如我想得到 15 个字母和 5 个数字。 我有一个问题,因为我得到了结果,但是当我使用调试器时,我看到 isdigit() 的 5 个函数跳过选项并转到 isaplha()。 这是什么原因? 第二个问题是,例如我得到了 2 个数字作为 10,但我只想得到 1。如何重建此代码?

def coutning(list):
    a= 0
    b = 0
    for elem in list:
        for symbol in elem:
            if elem.isdigit():
                a+=1
            if symbol.isalpha():
                b+=1
    return f' There is {a} numbers and {b} letters'
print(coutning(["1","7","8","9","10", "Hello my 543 friends"]))

您需要在第二个循环之前移动if elem.isdigit():条件,并将第二个循环放入else: 因此,您首先检查元素是否显示数字,如果没有,则计算其中的字母。

def coutning(list):
    a = 0
    b = 0
    for elem in list:
        if elem.isdigit():
            a += 1
        else:
            for symbol in elem:
                if symbol.isalpha():
                    b += 1
    return f' There is {a} numbers and {b} letters'


print(coutning(["1", "7", "8", "9", "10", "Hello my 543 friends"]))

印刷:

There is 5 numbers and 14 letters

如果你想把所有的数字和字母都算作符号,你可以这样做:

def coutning(list):
    a,b = 0,0
    for elem in ''.join(list):
        a += elem.isdigit()
        b += elem.isalpha()
    return f' There is {a} numbers and {b} letters'

print(coutning(["1", "7", "8", "9", "10", "Hello my 543 friends"]))

输出:

There is 9 numbers and 14 letters

对于大家,我很抱歉你没有理解我的意思。 我说在这段代码中一切都很好,直到我达到数字(543)。 当我到达它时,我在调试器中看到我得到了 5,但是代码跳过了 isdigit 并转到了 isalpha。 我认为 5 不是 alpha,但它以这种方式工作。

def coutning(list):
    a= 0
    b = 0
    for elem in list:
        for symbol in elem:
            if elem.isdigit():
                a+=1
            if symbol.isalpha():
                b+=1
    return f' There is {a} numbers and {b} letters'
print(coutning(["1","7","8","9","10", "Hello my 543 friends"]))

暂无
暂无

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

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