字母计数字符串

sha*_*tac 18 python

Python newb在这里.我试图计算给定字符串中字母"a"的数量.代码如下.它在字符串"banana"中保持返回1而不是3.任何输入赞赏.

def count_letters(word, char):
    count = 0
    while count <= len(word):
        for char in word:
            if char == word[count]:
                count += 1
            return count



print count_letters('banana','a')
Run Code Online (Sandbox Code Playgroud)

Cla*_*diu 39

其他答案显示您的代码有什么问题.但是,如果您不仅仅是为了练习,还有一种内置的方法可以做到这一点:

>>> 'banana'.count('a')
3
Run Code Online (Sandbox Code Playgroud)

Danben给出了这个更正版本:

def count_letters(word, char):
  count = 0
  for c in word:
    if char == c:
      count += 1
  return count
Run Code Online (Sandbox Code Playgroud)

以下是其他一些方法,希望他们能够教你更多关于Python的知识!

类似但更短的for循环.利用布尔可以变为1的事实,如果为真,则为0,如果为假,则为0:

def count_letters(word, char):
  count = 0
  for c in word:
    count += (char == c)
  return count
Run Code Online (Sandbox Code Playgroud)

循环的简称通常可以转换为列表/生成器的理解.这将创建一个与每个字母对应的整数列表,如果字母不匹配则为0,如果为,则为char1,然后将它们相加:

def count_letters(word, char):
  return sum(char == c for c in word)
Run Code Online (Sandbox Code Playgroud)

下一个过滤掉所有不匹配的字符char,并计算剩余的字符数:

def count_letters(word, char):
  return len([c for c in word if c == char])
Run Code Online (Sandbox Code Playgroud)

  • Python中的布尔值不需要`int()`:`True == 1和False == 0` http://ideone.com/k4QLc http://ideone.com/5dHkK (3认同)

dan*_*ben 11

一个问题是你count用来引用你正在检查的单词中的位置,以及char你看到的数字,并且你char用来引用你正在检查的输入字符和当前字符.串.请改用单独的变量.

另外,将return语句移出循环; 否则你将在检查第一个字符后总是返回.

最后,您只需要一个循环来遍历字符串.摆脱外部while循环,您不需要跟踪字符串中的位置.

根据这些建议,您的代码将如下所示:

def count_letters(word, char):
  count = 0
  for c in word:
    if char == c:
      count += 1
  return count
Run Code Online (Sandbox Code Playgroud)


小智 7

一个简单的方法如下:

def count_letters(word, char):
    return word.count(char)
Run Code Online (Sandbox Code Playgroud)

或者,还有另一种方法可以直接计算每个元素:

from collections import Counter
Counter('banana')
Run Code Online (Sandbox Code Playgroud)

当然,您可以指定一个元素,例如

Counter('banana')['a']
Run Code Online (Sandbox Code Playgroud)


Jus*_*ini 6

return的for循环!小心缩进,你希望行在return count循环之外.因为for循环遍历所有字符word,所以外部while循环完全不需要.

清理版本:

def count_letters(word, to_find):
    count = 0
    for char in word:
        if char == to_find:
            count += 1
    return count
Run Code Online (Sandbox Code Playgroud)