yuayuayu 发表于 2020-4-8 15:00:43

python3新课里的问题

>>> for x in range(2,2):
        print(2 % x)

       
>>> 2%x
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
    2%x
NameError: name 'x' is not defined

看不懂,为什么上面不报错?

qiuyouzhi 发表于 2020-4-8 15:02:29

你的for循环里面定义了x鸭
x的作用域只在for循环里面。

ab16838123 发表于 2020-4-8 15:09:09

缩进原因

txxcat 发表于 2020-4-8 15:14:00

for x in range(2,2): #rang(2,2),for循环条件没有达到,x没有赋值不存在,但因为循环没有进行,所以下一句没有执行,不会报错。
      print(2 % x)
如果改成rang(1,2),循环会进行一次,x赋值为1,循环1次,再运行 2%x就不会报错了。

txxcat 发表于 2020-4-9 10:46:13

qiuyouzhi 发表于 2020-4-8 15:02
你的for循环里面定义了x鸭
x的作用域只在for循环里面。

for循环里没有变量的作用域这一说法!看看下面代码,只要循环进行了,x就被赋值,在循环体外,x的值是最后一次循环的赋值:
for x in range(1,3):
    print('x在循环体内:',x)
print('x在循环体外:',x)

qiuyouzhi 发表于 2020-4-9 10:47:49

txxcat 发表于 2020-4-9 10:46
for循环里没有变量的作用域这一说法!看看下面代码,只要循环进行了,x就被赋值,在循环体外,x的值是最 ...

!感谢,我忘记了。。。
把Python的当成C语言的了。。。
页: [1]
查看完整版本: python3新课里的问题