白本羽 发表于 2021-6-12 16:42:14

可能是python或pycharm的bug???

state_list = []
n = 3
for a in range(n):
    state_list.append(0)
for a in range(n):
    if a == 0: # 将list的所有0转为1
      for each in state_list: # 这里在pycharm中each会标黄,显示已重新声明上文无用法变量,但这是一个py文件中的所有代码了,之前也碰到这个问题,不知道怎么回事就能用了,没改过代码,现在又出现了
            print(each) # 打出来的是0
            each = 1 # 赋值语句无效
    else:
      for i in range(1, n // a):
            if state_list == 0:
                state_list = 1
            else:
                state_list = 0
            print(state_list)

state_list = []
n = 3
for a in range(n):
    state_list.append(0)
for a in range(n):
    if a == 0:
      for each in state_list: # 也标黄each
          each = 1 # 赋值语句仍然无效,不会对list的内容有影响
            print(each) # 打出来的是1
    else:
      for i in range(1, n // a):
            if state_list == 0:
                state_list = 1
            else:
                state_list = 0
            print(state_list)

Twilight6 发表于 2021-6-12 16:52:48


这不是 BUG,这是 PyCharm 的警告,或者说提示

黄色变量相当于提示你此处代码可能有错 或者 变量重复赋值后没有引用,即意义赋值

你第一个代码就是 for 循环时已经给 each 赋值了,而你又程序重新给 each 赋值,且没有使用

就相对于无意义赋值,那么 PyCharm 标黄提示你这里赋值变量是无意义的

for 循环 每次循环都会给 循环接收变量赋值,所以无论你在 for 循环中怎么改变 循环接收变量 each 的值,只要开始下次循环 each 就会被 for 循环重新赋值

白本羽 发表于 2021-6-13 15:28:44

Twilight6 发表于 2021-6-12 16:52
这不是 BUG,这是 PyCharm 的警告,或者说提示

黄色变量相当于提示你此处代码可能有错 或者 变量重复 ...

对啊,我就是想把state_list列表中所有的0换成1,列表中取出来的each应该是0,但是它换不了啊,之前也有写过类似的for循环,给each赋值相当于改变state_list相应的值,是可以改变列表中的内容的啊.
还是说不能这么写...

Twilight6 发表于 2021-6-13 15:32:01

白本羽 发表于 2021-6-13 15:28
对啊,我就是想把state_list列表中所有的0换成1,列表中取出来的each应该是0,但是它换不了啊,之前也有写过 ...


你想改变列表的内容不是这样写的,是这样:

for each in range(len(state_list)):
    state_list = 1
页: [1]
查看完整版本: 可能是python或pycharm的bug???