鱼C论坛

 找回密码
 立即注册
查看: 1317|回复: 3

[已解决]列表被同时识别为bool 和 list类型

[复制链接]
发表于 2020-8-16 13:20:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
我正在写八皇后代码,尝试运行,出现错误提示
Traceback (most recent call last):
  File ".\eightqueen.py", line 63, in <module>
    dfs(0)
  File ".\eightqueen.py", line 44, in dfs
    dfs(deep+1)
  File ".\eightqueen.py", line 39, in dfs
    if row[i] == False and x_row[i+deep] == False and y_row[i-deep+N] == False :
TypeError: 'bool' object is not subscriptable


代码如下:
  1. """
  2. Ver: 1.0
  3. Date: 2020年8月16日08:59:02
  4. Auther: CCandle
  5. """
  6. #######   definition of arrays    ######
  7. N = 8

  8. map = []
  9. for i in range(0, N+1):
  10.     line = []
  11.     for j in range(0, N+1):
  12.         line.append(False)
  13.     map.append(line)
  14. # create a N*N map filles with False
  15. # to store the queens' positions

  16. row = []
  17. x_row = []
  18. y_row = []
  19. for i in range(0, N+1):
  20.     row.append(False)
  21. for i in range(0, N*2 + 1):
  22.     x_row.append(False)
  23.     y_row.append(False)
  24. # to mark which row/x_row/y_row is occupied


  25. ###### definitions of functions ########
  26. def dfs(deep):
  27.     global row
  28.     global x_row
  29.     global y_row
  30.     if(deep >= N):
  31.         print_map()
  32.         return
  33.     for i in range(0, N+1):
  34.         if row[i] == False and \
  35.             x_row[i+deep] == False \
  36.             and y_row[i-deep+N] == False :
  37.             row[i] = True
  38.             x_row = True
  39.             y_row = True
  40.             map[deep][i] = True
  41.             dfs(deep+1)
  42.             row[i] = False
  43.             x_row = False
  44.             y_row = False
  45.             map[deep][i] = False
  46.     return



  47. def print_map():
  48.     for i in range(0, N+1):
  49.         for j in range(0, N+1):
  50.             if map[i][j]:
  51.                 print(' ', end='*')
  52.             else:
  53.                 print(' ', end=' ')
  54.         print()


  55. ########## call the function ###########
  56. dfs(0)

复制代码

百度后发现好像是给bool类型下标了,但是我检查代码发现并没有这一问题,后来我在编辑器中看到提示:
x_row: bool
x_row: list
我就蒙了,同一个变量怎么还出来两个类型,而且我上一行的row变量就是个单纯的列表
请问各位我是哪个地方出现了问题
最佳答案
2020-8-16 13:38:47
2020816_133826.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-8-16 13:22:53 | 显示全部楼层
  1. """
  2. Ver: 1.0
  3. Date: 2020年8月16日08:59:02
  4. Auther: CCandle
  5. """
  6. #######   definition of arrays    ######
  7. N = 8

  8. map = []
  9. for i in range(0, N+1):
  10.     line = []
  11.     for j in range(0, N+1):
  12.         line.append(False)
  13.     map.append(line)
  14. # create a N*N map filles with False
  15. # to store the queens' positions

  16. row = []
  17. x_row = []
  18. y_row = []
  19. for i in range(0, N+1):
  20.     row.append(False)
  21. for i in range(0, N*2 + 1):
  22.     x_row.append(False)
  23.     y_row.append(False)
  24. # to mark which row/x_row/y_row is occupied


  25. ###### definitions of functions ########
  26. def dfs(deep):
  27.     global row
  28.     global x_row
  29.     global y_row
  30.     if(deep >= N):
  31.         print_map()
  32.         return
  33.     for i in range(0, N+1):
  34.         if row[i] == False and \
  35.             x_row[i+deep] == False \
  36.             and y_row[i-deep+N] == False :
  37.             row[i] = True
  38.             x_row[i] = True
  39.             y_row[i] = True
  40.             map[deep][i] = True
  41.             dfs(deep+1)
  42.             row[i] = False
  43.             x_row[i] = False
  44.             y_row[i] = False
  45.             map[deep][i] = False
  46.     return



  47. def print_map():
  48.     for i in range(0, N+1):
  49.         for j in range(0, N+1):
  50.             if map[i][j]:
  51.                 print(' ', end='*')
  52.             else:
  53.                 print(' ', end=' ')
  54.         print()


  55. ########## call the function ###########
  56. dfs(0)
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-16 13:38:47 | 显示全部楼层    本楼为最佳答案   
2020816_133826.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-8-16 13:45:09 | 显示全部楼层

噢噢噢噢!!!我傻了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-25 19:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表