为了账号安全,请及时绑定邮箱和手机立即绑定

我怎样才能解决我的Python代码中的这个错误?

我怎样才能解决我的Python代码中的这个错误?

叮当猫咪 2023-08-15 16:48:03
def almost_there(n):     list=[x for x in range(90,111)]    list_1=[i for i in range(190,211)]    if n in list or list_1:         return True     else:        return Falseprint(almost_there(1))>>> True为什么即使值为 1,它也给出 true?
查看完整描述

3 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

试试这个。


def almost_there(n): 

    list_1 = [x for x in range(90,111)]

    list_2 = [i for i in range(190,211)]

    

    if n in list_1 or n in list_2: 

        return True 

    else:

        return False


print(almost_there(1))

# False

检查 n 是否在list_1或 中list_2。如果您if n in list_1 or list_2这样做,则只会检查是否ninlist_1和 not list_2。

还有一件事不要用作list变量名称。这将覆盖该list()函数。


查看完整回答
反对 回复 2023-08-15
?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

由于条件: if n in list or list_1:

当你有 or 条件时,条件的两个部分都应该是False条件为 False

在您的情况下:
n is not in list是 False ,但list_1不为空并且是 True 。

所以你有 if False or True: - 这返回 True (满足条件)


查看完整回答
反对 回复 2023-08-15
?
慕慕森

TA贡献1856条经验 获得超17个赞

问题出在你的if陈述中。

if n in list or list_1: 计算结果为: 1) if n in list(假) or2) if list_1(真)

现在第二个参数总是会是True因为它是一个填充列表。

正确的陈述方式if应该是:if (n in list or n in list_1)

计算结果为if1) n in list(假) or2) n in list_1(假)

这样你就会得到预期的结果。


查看完整回答
反对 回复 2023-08-15
  • 3 回答
  • 0 关注
  • 91 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信