【发布时间】:2023-03-14 01:15:01
【问题描述】:
我正在做的练习是由一本接受字典参数并要求我给出 True 或 False 的返回值的书给出的。我是 Python 3 的新手,作为个人学习练习,我想将“作为棋盘的有效字典”的所有条件转换为单个返回值。我还没有真正测试过这段代码的错误,因为它还没有完成,但我确实通过我找到的在线验证器运行了它https://extendsclass.com/python-tester.html。
我想知道如何将以下 2 个代码块转换为简单的表达式,以便在下面的函数中的 return 语句中使用,您可以在下面看到我已经将大多数表达式转换为返回值" 因为“所有表达式都必须 == True”
for pieces in dictionary.values():
if all(pieces.startswith('b')) or \
all(pieces.startswith('w')):
return True
else:
return False
上面的代码块循环遍历传递给函数的字典键作为“片段”, 并单独比较每个键以确定它是否以“b”或“w”的值开头。因此,如果任何键不以“b”或“w”开头,则字典“棋盘”为假,因为它包含不正确的棋子。好的,我想我看到了一个错误,我将对其进行调查并尝试解决。好的,我注意到上面代码中有一些错误需要解决我目前正在研究如何正确执行上面的代码。
for square in dictionary:
try:
if int(square[:0]) <= 8 and \
square[-1] <= 'h':
return True
else:
return False
except ValueError:
return False
我在上面的代码块上工作了很长时间,但仍然不确定这是我想要它做的“最佳”实现。但我还是新手,我已经尽力了。 无论如何,它切片字典键并比较键中的第一个字符以确保它不超过 8,这是最大“有效范围”,如果超过有效范围,它返回 false,并且任何非 int 显然自动为 False 并返回由“例外”。
然后它对字典键进行切片以获取字典键的最后一个字符,并将其与
这是当前的函数,末尾有一个测试字典:
def cBV(dic): # (c)hess(B)oard(V)alidator
Err = 'Error: Invalid Board -'
if not isinstance(dic, type({})):
raise TypeError('Object passed to cBV is not of type <class dict>')
chess_pieces = {'bk pieces': 0, 'wh pieces': 0,
'bk pawns': 0, 'wh pawns': 0}
# converts dictionary values into keys and assigns those keys "counn of values"
for squares, pieces in dic.items:
if pieces.startswith('b'): # alt if pieces[:0] == 'b':
if pieces.startswith('bpawn'): # alt if pieces == 'bpawn':
chess_pieces['bk pawns'] += 1
chess_pieces['bk pieces'] += 1
elif pieces.startswith('w'):
if pieces.startswith('wpawn'):
chess_pieces['wh pawns'] += 1
chess_pieces['wh pieces'] += 1
return 'wking' in dic.values() and \
'bking' in dic.values() and \
chess_pieces['bk pieces'] <= 16 and \
chess_pieces['wh pieces'] <= 16 and \
chess_pieces['bk pawns'] <= 8 and \
chess_pieces['wh pawns'] <= 8 and \
dict = {'8h': 'wking', '2c': 'bking', '3a': 'wpawn', '3b': 'wpawn', '3c': 'wpawn',
'3d': 'wpawn', '3e': 'wpawn', '3f': 'wpawn', '3g': 'wpawn', '3h': 'wpawn', '4b': 'wpawn'}
test = cBV(dict)
print('Is this a valid chessboard? ' + str(test))
【问题讨论】:
标签: python-3.x return