You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何Python代码执行break命令后计数器无法正常计数?

问题

我尝试编写一个持续向用户请求输入单词的程序,当用户第二次输入已录入过的重复单词时程序终止。写的代码理论上应该能实现需求,但计数器仅运行一次就停止计数,找不到问题根源。
原代码如下:

count = 0

while True:
    my_word = input("Word: ")
    if my_word == my_word in my_word:
        count += 1
        print(f"You typed in", (count), "different words")
        break
错误原因
  • 重复判断逻辑完全错误:my_word == my_word in my_word是Python链式比较语法,等价于(my_word == my_word) and (my_word in my_word),只要输入非空字符串,这个判断永远为真,第一次输入就会直接触发分支,根本没有做重复校验。
  • 没有存储历史输入的结构:代码里没有变量保存之前输入过的单词,根本无法判断当前输入是否重复。
  • 逻辑位置错误:计数累加和终止循环break写在同一个分支下,只要触发判断就会计数一次后直接退出,自然计数器只会运行一次。
修正后可运行代码
count = 0
seen_words = []

while True:
    current_word = input("Word: ")
    if current_word in seen_words:
        print(f"You typed in {count} different words")
        break
    seen_words.append(current_word)
    count += 1
逻辑说明
  • 新增空列表seen_words存储所有已经录入的不重复单词
  • 每次获取用户输入后,先校验单词是否存在于历史记录中:如果存在,说明遇到重复输入,直接输出统计的不重复单词数量,终止程序
  • 如果单词未出现过,就将其加入历史记录列表,计数器加1,进入下一轮输入请求

内容的提问来源于stack exchange,提问作者Zaeema

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 19:18:44