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)