python 在没有计数功能的情况下对字符串中的字母进行计数

问题描述 投票:0回答:8

我正在尝试编写一个程序来计算字符串中特定字母的出现次数,而无需使用计数功能。我将字符串制作成一个列表并设置一个循环来计数,但计数永远不会改变,我无法弄清楚为什么。这就是我现在拥有的:

letter = 'a'
myString = 'aardvark'
myList = []

for i in myString:
    myList.append(i)

count = 1

for i in myList:
    if i == letter:
        count == count + 1

    else:
        continue

print (count)

非常感谢任何帮助。

python string counting letter
8个回答
2
投票

小心,你用的是

count == count + 1
,一定要用
count = count + 1

赋予新值的运算符是

=
,运算符
==
用于比较两个值


1
投票

代替

count == count + 1

你需要拥有

count = count + 1

1
投票

虽然其他人已经解决了你的问题,但是做你想做的最简单的解决方案是使用

Counter
数据类型:

>>> from collections import Counter
>>> letter = 'a'
>>> myString = 'aardvark'
>>> counts = Counter(myString)
>>> print(counts)
Counter({'a': 3, 'r': 2, 'v': 1, 'k': 1, 'd': 1})
>>> count = counts[letter]
>>> print(count)
3

或者,更简洁(如果你不想检查多个字母):

>>> from collections import Counter
>>> letter = 'a'
>>> myString = 'aardvark'
>>> count = Counter(myString)[letter]
>>> print(count)
3

最简单的实施方式是:

count = sum(i == letter for i in myString)

或:

count = sum(1 for i in myString if i == letter)

这是有效的,因为字符串可以像列表一样迭代,并且

False
被算作一个
0
True
被算作一个
1
用于算术。


0
投票

像这样使用

filter
函数

len(filter(lambda x: x==letter, myString))

0
投票

您的计数永远不会改变,因为您正在使用

==
,这是 equality testing,您应该使用
=
来重新分配
count
。 更好的是,你可以增加

count += 1

另请注意,

else: continue
并没有真正执行任何操作,因为无论如何您都将继续循环的下一次迭代。如果 I 不得不想出一种不使用
count
函数的替代方法,我会倾向于正则表达式:

import re
stringy = "aardvark"
print(len(re.findall("a", stringy)))

0
投票

除了上面的方法,还有一个最简单的方法就是使用python字典来解决问题

 word="purple"
 dic={}
 for letter in word:
     if letter in dic:
        dic[letter]+=1
     else:
        dic[letter]=1
 print(dic)
 {'p': 2, 'u': 1, 'r': 1, 'l': 1, 'e': 1}

如果你想计算单词中特定字符的出现次数。我们可以按照下面提到的方式得到它,

        dic['p']
        2  

0
投票

您的代码逻辑是正确的,除了在使用

count == 1
时考虑
count == 1
之外,您正在比较
count == 1
count = 1
是否用于分配而
count += 1
是否用于递增。
可能你知道这一点,你可能会感到困惑 另外,你必须初始化
count = 0

letter = 'a'
myString  = 'aardvark'
myList = []

for i in myString:
    myList.append(i)
count = 0
for i in myList:
    if i == letter:
        count +=1
    else:
        continue
print(count)

0
投票

为了使代码正常运行,需要进行两项更改:

  1. 修改count的初始化
count = 0
  1. 使用 = 而不是 ==
count = count + 1

count += 1
© www.soinside.com 2019 - 2024. All rights reserved.