python - 使用 for 循环计算总字母数和特定字母数\
问题描述
对于一个学校项目,我必须编写一个函数来计算字符串中的字母数量,还要计算特定字母的数量,但是当它是指定的字母时,它似乎只会增加总字母数。我不明白为什么它没有在 3.7 中将 ascii_lowercase 注册为小写字母,除非我严重误解了某些东西。
def analyze_string(quote, search_letter):
count_letters = 0
count_occurance = 0
phrase = quote.lower()
letter = string.ascii_lowercase
length = len(phrase)
for i in phrase:
if i == letter:
count_letters = count_letters + 1
elif i == search_letter:
count_letters = count_letters + 1
count_occurance = count_occurance + 1
else:
count_letters = count_letters + 0
return count_letters, count_occurance
解决方案
这条线是有问题的:
if i == letter:
您已通过 分配给letter
包含所有小写字母的字符串string.ascii_lowercase
。但i
只是一封信。您可以改为使用:
if i in letter:
# ...
检查字符串的成员资格需要 O( n ) 时间。您可能希望set
通过转换预先将其减少到 O(1):
letter = set(string.ascii_lowercase)
然后,您需要颠倒语句的顺序,if
以便search_letter
优先检查。否则,如果search_letter
存在于 中letter
,则永远不会满足第二个条件。
for i in phrase:
if i == search_letter:
count_letters = count_letters + 1
count_occurance = count_occurance + 1
elif i in letter:
count_letters = count_letters + 1
请注意以下几行是多余的,您可以安全地删除它们:
else:
count_letters = count_letters + 0
推荐阅读
- ms-access - 使用 32 位 office 访问 64 位运行时
- javascript - Javascript / Howler.js - 在 Firefox 和 Chrome 中加载音频时出错
- javascript - 我的图标不显示(Material-ui)。有人可以指导我如何解决它吗?
- python - 使用 apply() 从两列创建新列
- reactjs - d3js PieChart 用打字稿计算弧线
- swift - SwiftUI 绑定不适用于子层次结构
- c++ - C++ 中的 cin.clear() 有多确定
- python - 如何使用 POST 表单和Flask链接到另一个页面
- powerbi - PowerBI - 支持来自 adls gen1 的镶木地板格式
- html - 即使隐藏,HTML 选取框标签也会在后台运行吗?