求助: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
相关产品推荐
相关产品推荐

