如何在Python中将字符与字符串中的所有字符进行比较?

1 投票
6 回答
37522 浏览
提问于 2025-04-17 18:02

我需要写一个函数,这个函数接收一个字符和一个字符串作为输入,然后把这个字符和字符串中的每个元素进行比较。最后,它会打印出这个字符在字符串中出现的次数,并返回这个次数。

这是我写的代码,但它的结果不对。如果有人能帮我解释一下并纠正错误,我会很感激。

我首先想写一个函数,用来比较两个字符是否相等,像这样:

def func1(x1, x2):
    if x1 == x2:
        return True
    else:
        return False

然后,我想写另一个主要的函数,像这样:

def func2():
    ch1 = input("Enter one character. ")
    str1 = str(input("Enter a string. "))
    list_1 = list(str1)
    a = 0
    for 1 in list_1:
        if func1(ch1, list_1):
            a += 1
        else:
            a += 0
        print(a)
        return a

这里有什么错误呢?如果我选择“a”作为我的字符,然后输入一个包含五个“a”的字符串,函数却告诉我“a”在字符串中只出现了一次。这是为什么呢?我该怎么修复这个问题?

6 个回答

1

要解决你现在的问题,你只需要把打印和返回的缩进调整一下。

def func2():
    ch1 = input("Enter one character. ")
    str1 = str(input("Enter a string. "))
    list_1 = list(str1)
    a = 0
    for 1 in list_1:
        if func1(ch1, list_1):
            a += 1
        else:
            a += 0
    print(a)  # <-- dedent
    return a  # <-- dedent

你不需要把字符串转换成列表来遍历它。如果else部分没有任何作用,就不需要它。你也不应该在for循环里面返回值。

def func2():
    ch1 = input("Enter one character. ")
    str1 = input("Enter a string. ")
    a = 0
    for c in str1:
        if c == ch:
            a += 1
        print(a)
    return a

更简单的方法是

def func2():
    ch1 = input("Enter one character. ")
    str1 = input("Enter a string. ")
    return str1.count(ch1)
3

有几种可能的方法。

使用列表

>>> len([x for x in test_string if x == test_char])

使用 collections.Counter

>>> from collections import Counter
>>> print(Counter(test_string)[test_char])
7

你可以用 "YourString".count("Char") 这个方法来计算字符串中某个字符出现的次数。

撰写回答