如何修正Python代码以统计含字母'a'的输入字符串数量?
修正Python代码:统计包含字母'a'的输入字符串数量
需求回顾
编写程序统计包含字母‘a’的输入字符串数量,当输入字符串为“####”时终止程序,预期运行示例如下:
输入字符串(输入####停止):apple
输入字符串(输入####停止):banana
输入字符串(输入####停止):strawberry
输入字符串(输入####停止):book
输入字符串(输入####停止):####
3个包含字母'a'的字符串
原代码存在的问题
- 初始
while str!= "####"会触发NameError,因为str变量未提前定义 - 输入提示文本与示例要求不符
- 判断字母'a'的语法错误:
if letter in str = 'a'是非法表达式;同时循环内的else: break会导致只要第一个字符不是'a'就停止检查,无法正确判断整个字符串是否包含'a' - 统计逻辑错误:原代码会对每个'a'字符计数,而需求是统计包含'a'的字符串的数量,而非字符个数
- 输入"####"时仍会进入检查逻辑,不符合终止要求
修正后的代码
count = 0 while True: input_str = input("输入字符串(输入####停止):") # 遇到终止符直接退出循环 if input_str == "####": break # 判断当前字符串是否包含字母'a',符合条件则计数+1 if 'a' in input_str: count += 1 # 按照预期格式输出结果 print(f"{count}个包含字母'a'的字符串")
修正说明
- 用
while True构建无限循环,通过判断输入是否为"####"主动终止,避免未初始化变量的错误 - 调整输入提示文本,与示例完全一致
- 利用Python字符串的
in操作符直接判断是否包含'a',无需遍历字符,简洁高效 - 仅当输入不是终止符且包含'a'时,才对计数器加1,完全符合需求的统计逻辑
- 使用f-string格式化输出,匹配预期的结果格式
内容的提问来源于stack exchange,提问作者Aishwarya Anand
相关产品推荐
相关产品推荐

