if部分中变量的范围

时间:2019-07-07 03:39:29

标签: python for-loop if-statement

为什么要为“ If”条件获取NameError?

NameError

Subproject zlib.wrap not found in directory tree.

运行代码段:

for i in range(int(n)):
        for j in range(int(k)):
            res = a1[i] + a2[j]
            if(res<=num and ((res-num)<(prev-num))):
                r1,r2 = a1[i],a2[j]
                prev = res

    print(r1,r2)

如果我在“ IF”条件中添加“ AND”,则会为在if语句下定义的变量提供NameError。 有人可以帮忙吗?

谢谢。

2 个答案:

答案 0 :(得分:3)

这是因为您不能保证if语句将始终为true(这实际上毫无用处)。因此,该变量可能未初始化,在这种情况下,您将无法在if语句之外打印该值。如果要使用它,则有两种选择。 1)使用默认值在if外部初始化变量 2)add and else语句,在这种情况下,您将不得不再次创建变量

选项1)是最常见的

答案 1 :(得分:1)

在两个if语句中,您都设置了变量prev = res,但是在代码的第一个代码段中,您尝试使用prev而不初始化if语句中的prev值。在这种情况下,您会看到以下错误消息:

if(res<=num and ((res-num)<(prev-num))):

NameError:名称'prev'未定义

解决方案:在if语句之前初始化prev的值,以便在if语句中使用“和”。