Python单个字符计数代码异常求助:返回结果不符合预期
问题修复指南
问题背景
我第一次学习计算机相关课程,目前处于第2周第2章的学习阶段,需要编写一个程序:输入包含一个字符和一个短语的字符串,输出该字符在短语中的出现次数。但代码运行结果异常,以下是相关信息,请求找出问题所在。
相关内容
原代码
user_string = input() user_character = user_string[0][0] times = user_string.count('user_character') # 问题行 # print(user_string) print(user_character) print(times)
输入内容
t Just trying to find all the ts.
期望输出
t Just trying to find all the ts. t 5
实际输出
t Just trying to find all the ts. t 0 <<< 为什么是0?
问题根源
- 核心错误:调用
count()方法时,你把变量名user_character用单引号括起来了。Python会将带引号的内容识别为普通字符串字面量,所以程序实际在输入字符串中查找的是'user_character'这一串字符,而非变量中存储的t,自然找不到匹配项,结果返回0。 - 次要冗余:
user_string[0][0]属于多余写法,user_string[0]已经能取到输入的第一个字符,额外加的[0]完全没必要。
修复后的代码
user_string = input() user_character = user_string[0] times = user_string.count(user_character) print(user_string) print(user_character) print(times)
额外补充
如果你的需求是仅统计短语部分(即跳过开头的字符和空格,只统计后面的内容),可以修改为以下代码:
user_string = input() user_character = user_string[0] # 从索引2开始截取,跳过开头的字符和空格 phrase = user_string[2:] times = phrase.count(user_character) print(user_string) print(user_character) print(times)
不过按照你的期望输出,是要统计整个输入字符串中t的出现次数(包括开头的那个),所以第一种修复代码就完全符合要求。
内容的提问来源于stack exchange,提问作者sarnac1220
相关产品推荐
相关产品推荐

