Python秘密单词猜词程序字符判断错误求助
问题排查与修正方案
核心错误点
- 字符串直接比较而非长度比较:你把秘密短语的长度转成了字符串
guess_1/guess_2,然后直接拿用户输入的字符串phrase和这些字符串做大小比较——这是按字典序比对,不是比较字符长度。比如输入单个字母'A',和字符串'10'(BRINGCOFFEE的长度是10)比较时,字典序'A' > '1',所以错误触发"Too Many Characters"。 - 循环条件逻辑错误:
while(secret != True)完全不成立,因为字符串secret永远不可能等于布尔值True,循环会无限运行。 - 大小写未统一:
secret是大写格式,但用户输入可能是小写,导致即使输入正确内容也无法匹配。
修正后的代码
secret = 'BRINGCOFFEE' secret_length = len(secret) # 直接存储数字长度,无需转字符串 while True: phrase = input('Guess the Secret phrase! \nGuess:').strip().upper() # 统一转大写并去除首尾空格 phrase_length = len(phrase) if phrase_length == 0: print('Too Few Characters') elif phrase_length < secret_length: print('Too Few Characters') elif phrase_length > secret_length: print('Too Many Characters') else: # 长度匹配时再检查内容是否正确 if phrase == secret: print('You got it!') break else: print('Wrong phrase, try again!')
关键修正说明
- 用
secret_length存储秘密短语的数字长度,拿用户输入的phrase_length(输入内容的长度)和它做数值比较,这才是正确的长度判断逻辑。 - 统一把用户输入转成大写,同时去除首尾空格,避免大小写不匹配或输入空格导致的错误。
- 循环改成
while True,当用户猜对时通过break终止循环,逻辑更清晰。
内容的提问来源于stack exchange,提问作者Mridge458
相关产品推荐
相关产品推荐

