Python range结合if-else语句判断结果异常问题排查
问题根因
你的判断逻辑写错了:if Y in (X, X+200) 这行代码的实际作用是判断Y是否恰好等于X,或者恰好等于X+200,根本不是判断Y落在X到X+200的区间内。
Python里in关键字跟在元组/列表后面做的是精确成员匹配,你写的(X, X+200)是个只有两个元素的元组。你测试时输入的X=45、Y=200,这个元组就是(45, 245),200既不等于45也不等于245,所以判断条件返回False,最终输出no。
补充:如果你运行时第一行直接输入45 200,T = int(input("i"))这行本来应该报错(带空格的字符串无法直接转成整数),你能得到输出说明实际运行时第一行输入的是测试组数(比如1),第二行才输入的45 200。
修正方案
如果你的需求是判断Y处于[X, X+200]的闭区间内,直接用Python支持的链式比较写判断条件即可,写法简洁且对整数、浮点数都生效:
T = int(input("i")) for _ in range(T): X,Y = map(int, input().split()) if X <= Y <= X + 200: print("yes") else: print("no")
如果你坚持要用in关键字实现判断,需要搭配range()生成整数区间序列,注意range是左闭右开区间,要把右边界设为X+201才能包含端点X+200,该写法仅适用于X、Y均为整数的场景:
if Y in range(X, X + 201):
内容的提问来源于stack exchange,提问作者nikhil0505
相关产品推荐
相关产品推荐

