首页 > 解决方案 > 有什么办法可以循环 az 而不是编写多个 for 循环语句?

问题描述

所以我试图对给定的列表进行字符计数。

a = ["farshad", "ghassemi?d", "madam", "?radar?", "duration", "con?tained"]

我的预期输出是:

farshad 包含 2 个

而这继续......

我的代码是:

def charCount():
    a = ["farshad", "ghassemi?d", "madam", "?radar?", "duration", "con?tained"]

    for word in a:
        for letter in word:
            x = word.count("a")
        print(word, "contains", x, "a")

    for word in a:
        for letter in word:
            x = word.count("d")
        print(word, "contains", x, "d")

charCount()

我试图在一个 for 循环中完成这一切,例如 AZ ....

感谢您的帮助:D

标签: pythonpython-3.xfor-loop

解决方案


您可以在 2 个 for 循环中执行此操作。(我假设这个问题意味着 1 个单独的 for 循环并允许嵌套 for 循环)我就是这样做的:

import string

def charCount():
    a = ["farshad", "ghassemi?d", "madam", "?radar?", "duration", "con?tained"]

    for word in a:
        for i in string.ascii_lowercase:
            x = word.lower().count(i)
            print(word, "contains", x, i)

charCount()

您需要做的就是遍历每个字符。string.ascii_lowercase包含每个小写字母,所以我使用了它。然后,我们得到 i 中的计数word.lower()word.lower()将单词变成小写字母,使其也可用于大写字母。

如果您想进一步缩短它,您可以像这样更改内部 for 循环:

def charCount():
    a = ["farshad", "ghassemi?d", "madam", "?radar?", "duration", "con?tained"]

    for word in a:
        for i in string.ascii_lowercase: print(word, "contains", word.lower().count(i), i)

推荐阅读