我正在尝试编写一个程序来计算字符串中特定字母的出现次数,而无需使用计数功能。我将字符串制作成一个列表并设置一个循环来计数,但计数永远不会改变,我无法弄清楚为什么。这就是我现在拥有的:
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)
非常感谢任何帮助。
小心,你用的是
count == count + 1
,一定要用count = count + 1
赋予新值的运算符是
=
,运算符==
用于比较两个值
代替
count == count + 1
你需要拥有
count = count + 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
用于算术。
您的计数永远不会改变,因为您正在使用
==
,这是 equality testing,您应该使用 =
来重新分配 count
。
更好的是,你可以增加
count += 1
另请注意,
else: continue
并没有真正执行任何操作,因为无论如何您都将继续循环的下一次迭代。如果 I 不得不想出一种不使用 count
函数的替代方法,我会倾向于正则表达式:
import re
stringy = "aardvark"
print(len(re.findall("a", stringy)))
除了上面的方法,还有一个最简单的方法就是使用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
您的代码逻辑是正确的,除了在使用
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)
为了使代码正常运行,需要进行两项更改:
count = 0
count = count + 1
或
count += 1