|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
- def isvalidchessboard(board):
- lst = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
- for k in board.keys():
- if k[0] in range(1, 9) and k[1] 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[0] in '12345678' and k[1] in lst:
- return True
- else:
- return False
- b = {'1h': 'bking', '6c': 'wqueen', '2g': 'bbisshop', '5h': 'bqueen', '3e': 'wking'}
- s = isvalidchessboard(b)
- print(s)
复制代码
|
|