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

Python如何判断两个变量相等?猜歌游戏输入正确仍判错如何修复

Python猜歌游戏判定逻辑异常修复方案

故障根本原因

  • readlines()读取的每一行文本末尾会自带换行符\n,而input()获取的用户输入会自动剔除末尾换行符,二者内容实际存在差异,因此哪怕字面内容一致也会判定不相等,这是你换了==也没用的核心原因
  • 用is/is not做字符串内容比较是完全错误的用法:is判断的是两个对象是否指向同一块内存地址,仅Python内部驻留的极短字符串才会返回True,正常内容比较必须使用==/!=
  • 额外隐藏问题:代码中用到的random、sys模块未导入,打开的文件没有主动关闭,存在资源泄漏风险

修复后的代码示例

import random
import sys

def EasySongs1(easy):
    # 用with语句自动管理文件句柄,无需手动关闭
    with open('easy.txt', 'r', encoding='utf-8') as f:
        lines = f.readlines()
    songline = random.randrange(1, 30)
    # 去掉答案末尾的换行符和多余空白
    answereasy = lines[songline].strip()
    with open('easyq.txt', 'r', encoding='utf-8') as f:
        lines = f.readlines()
    questioneasy = lines[songline].strip()
    print(questioneasy)
    
    life1 = input("Guess the song ")
    if life1 == answereasy:
        return "good job"
    
    life2 = input("2 lives left,Guess again ")
    if life2 == answereasy:
        return "good job"
    
    life3 = input("last chance, guess again ")
    if life3 == answereasy:
        return "good job"
    
    sys.exit("you messed up")

关键修改说明

  • 读取答案和问题行时调用.strip()方法,移除首尾的换行符、空格等空白字符,如果需要保留首尾空格可替换为.rstrip('\n')仅移除末尾换行符
  • 所有字符串比较逻辑统一使用==判断内容相等
  • 用with语句读写文件,无需手动调用close()方法,避免资源泄漏
  • 补充了缺失的模块导入,优化了重复判断的冗余逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 03:36:02