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

求助:IF语句忽略键盘输入,始终执行else分支

解决IF语句忽略输入始终走else分支的问题

嗨,这个问题我太熟悉啦!问题的根源在于sys.stdin.readline()的特性——它会把你输入结束时按下的**回车键(换行符\n)**也一并读取到变量中。举个例子,当你输入Yes后按回车,ans实际存储的是"Yes\n",这个字符串和你判断条件里的"Yes"或"yes"完全不匹配,所以代码每次都会执行else分支。

这里给你几个简单的解决办法:

  • 方法一:用strip()清除首尾空白字符
    直接在readline()后调用strip(),它会去掉字符串开头和结尾的所有空白(包括换行符、空格等):

    ans = sys.stdin.readline().strip()
    
  • 方法二:改用input()函数
    Python的input()函数会自动帮你去掉输入末尾的换行符,用法更简洁,也是日常获取用户输入的首选方式:

    print("Do you want to run the program? Yes/No")
    ans = input()
    # 或者直接把提示语放进input里,一步到位:
    ans = input("Do you want to run the program? Yes/No ")
    

另外给你个调试小技巧:如果以后遇到类似字符串匹配的问题,可以先打印变量的原始内容确认,比如用repr()函数,它会把字符串的所有隐藏字符都显示出来:

print(repr(ans))  # 会输出类似 'Yes\n',一眼就能看到换行符的存在

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:49:41