Python 为什么我的代码会说';第'行;在for循环外部引用时未定义? def攻击(n,文件): 全球线 j=randint(0,n-4) 对于范围(0,j)内的i: line=file.readline() 打印(行[切片(0,透镜(行)-1)])
为什么此语句中未定义Python 为什么我的代码会说';第'行;在for循环外部引用时未定义? def攻击(n,文件): 全球线 j=randint(0,n-4) 对于范围(0,j)内的i: line=file.readline() 打印(行[切片(0,透镜(行)-1)]),python,Python,为什么此语句中未定义line print(line[slice(0, len(line)-1)]) 如果您阅读此处的文档,则randint(…)中的值包含在内。因此,在某一点上,j的值等于0 由于您正在为循环内的line赋值,并且如果循环从未执行,则变量line从未赋值 您可以将randint更改为: randint(1, n-4) # assuming n > 4, otherwise you will get an error 或者预先为行指定一个虚拟值。因为j在某些情况下为零(
line
print(line[slice(0, len(line)-1)])
如果您阅读此处的文档,则randint(…)
中的值包含在内。因此,在某一点上,j
的值等于0
由于您正在为循环内的line
赋值,并且如果循环从未执行,则变量line
从未赋值
您可以将randint更改为:
randint(1, n-4) # assuming n > 4, otherwise you will get an error
或者预先为
行指定一个虚拟值。因为j
在某些情况下为零(你可能会得到0作为你的随机数),所以对于范围(0,j)内的i:
什么都不做。您从未进入循环,因此从未定义行
为什么在此处使用全局
?在任何情况下,for循环体有时都不会执行,因此line
永远不会被赋值(并且没有全局line
变量)。我这样做了,得到了以下错误:ValueError:randrange()的空范围(1,1,0)