字典嵌套问题
def isvalidchessboard(board):lst = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
for k in board.keys():
if k in range(1, 9) and k in lst:
return True
else:
return False
b = {'1h': 'bking', '6c': 'wqueen', '2g': 'bbisshop', '5h': 'bqueen', '3e': 'wking'}
s = isvalidchessboard(b)
print(s)
哪位前辈帮忙看一下,为啥我这运行结果返回的是False啊?不应该是True嘛
因为你 k 属于字符串类型,而 range(1,9) 是生成 1~8 整数整型
这当然始终不成立,你把 range(1,9) 改成 '12345678' 即可
另外你这里使用直接使用 return ,会导致直接结束程序,后续的 for 循环就不会被遍历到,若你本意就是如此可以无视
建议 else 的 return 放到 for 循环外,否则若第一次不符合 if 条件,那么直接执行 else 导致 for 循环无意义了
参考代码:
def isvalidchessboard(board):
lst = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
for k in board.keys():
if k in '12345678' and k in lst:
return True
else:
return False
b = {'1h': 'bking', '6c': 'wqueen', '2g': 'bbisshop', '5h': 'bqueen', '3e': 'wking'}
s = isvalidchessboard(b)
print(s)
Twilight6 发表于 2021-6-25 22:43
因为你 k 属于字符串类型,而 range(1,9) 是生成 1~8 整数整型
这当然始终不成立,你把 range(1,9) 改 ...
谢谢,已经解决
页:
[1]