这里是一个新的Python编码器,有相当多的C#经验。我试图用Python来完成这个练习:
国际象棋字典验证器在本章中,我们使用字典值{'1h':'bking','6c':'wqueen','2g':'bbishop','5h':'bqueen','3e':'wking'}来表示国际象棋棋盘。编写一个名为isValidChessBoard()的函数,它接受一个字典参数,并根据板是否有效返回True或False。一个有效的板将有一个黑王和一个白王。每个玩家最多只能拥有16枚棋子,最多8枚棋子,所有棋子必须在'1a'到'8H'的有效空间上;也就是说,一块不能在空间'9z'上。作品名称以“W”或“B”开头,代表白色或黑色,后面是“Pawn”、“Knight”、“Bishop”、“Rook”、“Queen”或“King”。当错误导致不正确的棋盘时,这个函数应该检测。
我目前的解决方案如下,
testBoard00 = {'1h': 'bking', '6c': 'wqueen', '2g': 'bbishop', '5h': 'bqueen', '3e': 'wking'}
testBoard01 = {'1a': 'brook', '1b': 'bknight', '1c': 'bbishop', '1d': 'bqueen', '1e': 'bking', '1f' : 'bbishop', '1g' : 'bknight', '1h' : 'brook',
'2a': 'bpawn', '2b' : 'bpawn', '2c': 'bpawn', '2d' : 'bpawn', '2e': 'bpawn', '2f' : 'bpawn', '2g': 'bpawn', '2h' : 'bpawn',
'8a': 'wrook', '8b': 'wknight', '8c': 'wbishop', '8d': 'wqueen', '8e': 'wking', '8f' : 'wbishop', '8g' : 'wknight', '8h' : 'wrook',
'7a': 'bpawn', '7b' : 'bpawn', '7c': 'bpawn', '7d' : 'bpawn', '7e': 'bpawn', '7f' : 'bpawn', '7g': 'bpawn', '7h' : 'bpawn',}
testBoard02 = {'1a': 'brook', '1b': 'bknight', '1c': 'bbishop', '1d': 'bqueen', '1e': 'bking', '1f' : 'bbishop', '1g' : 'bknight', '1h' : 'brook',
'2a': 'bpawn', '2b' : 'bpawn', '2c': 'bpawn', '2d' : 'bpawn', '2e': 'bpawn', '2f' : 'bpawn', '2g': 'bpawn', '2h' : 'bpawn',
'8a': 'wrook', '8b': 'wknight', '8c': 'wbishop', '8d': 'wqueen', '8e': 'wking', '8f' : 'wbishop', '8g' : 'bpawn', '8h' : 'wrook', # Extra pawn instead of second Knight!
'7a': 'wpawn', '7b' : 'wpawn', '7c': 'wpawn', '7d' : 'wpawn', '7e': 'wpawn', '7f' : 'wpawn', '7g': 'wpawn', '7h' : 'wpawn',}
testBoard03 = {'1a': 'brook', '1b': 'bknight', '1c': 'bbishop', '1d': 'bqueen', '1e': 'bking', '1f' : 'bbishop', '1g' : 'bknight', '1h' : 'brook',
'2a': 'bpawn', '2b' : 'bpawn', '2c': 'bpawn', '2d' : 'bpawn', '2e': 'bpawn', '2f' : 'bpawn', '2g': 'bpawn', '2h' : 'bpawn',
'8a': 'wrook', '8b': 'wknight', '8c': 'wbishop', '8d': 'wqueen', '8f' : 'wbishop', '8g' : 'wknight', '8h' : 'wrook', # Missing a king!
'7a': 'wpawn', '7b' : 'wpawn', '7c': 'wpawn', '7d' : 'wpawn', '7e': 'wpawn', '7f' : 'wpawn', '7g': 'wpawn', '7h' : 'wpawn',}
letters = 'abcdefgh'
numbers = '12345678'
BOARDUNITS = { 'pawn' : 0, 'rook' : 0, 'knight' : 0, 'bishop' : 0, 'queen' : 0, 'king' : 0 }
TOTALUNITS = { 'pawn' : 16, 'rook' : 4, 'knight' : 4, 'bishop' : 4, 'queen' : 2, 'king' : 2 }
def isValidChessBoard(board):
boardIsValid = True
for k in board:
let = str(k[1:]).lower()
num = str(k[:1]).lower()
if let not in letters:
print('INVALID: Letter is not in acceptable range!')
boardIsValid = false
return boardIsValid
if num not in numbers:
print('INVALID: Numbers are not in acceptable range!')
boardIsValid = false
return boardIsValid
# print('Number is ' + num + ' and Letter is ' + let + '.')
wPieces = bPieces = BOARDUNITS
for k in board:
# print('K is now: ' + str(k) + ' which is equal to ' + board[k])
#piece = board[k]
print(str(wPieces['king']) + ' white King(s), ' + str(bPieces['king']) + ' black King(s)')
if board[k][0] == 'b':
#print('First character of piece is ' + piece[0])
if(board[k][1:] in bPieces):
if(board[k][1:] == 'king'):
print('Black king here!')
#print('[][] Black ' + piece[1:] + ' is in bPieces!')
print('Before Increment: ' + str(wPieces['king']) + ' white King(s), ' + str(bPieces['king']) + ' black King(s)')
bPieces[board[k][1:]] += 1
print('After Increment: ' + str(wPieces['king']) + ' white King(s), ' + str(bPieces['king']) + ' black King(s)')
#else:
# print('#### ' + piece[1] + ' is not found in bPieces.')
elif board[k][0] == 'w':
#print('First character of piece is ' + piece[0])
if(board[k][1:] in wPieces):
if(board[k][1:] == 'king'):
print('White king here!')
print('[][] White '+ board[k][1:] + ' is in wPieces!')
wPieces[board[k][1:]] += 1
else:
print('#### ' + board[k][1] + ' is not found in wPieces.')
else:
print('Playing piece is missing "black" or "white" characteristic.')
return False
for k in bPieces:
#print('We have ' + str(bPieces[k]) + ' Black ' + str(k) + '(s)')
#print('We have ' + str(wPieces[k]) + ' White ' + str(k) + '(s)')
if bPieces[k] > TOTALUNITS[k] or wPieces[k] > TOTALUNITS[k]:
print('INVALID: Too many pieces!')
boardIsValid = False
print(str(wPieces['king']) + ' white King(s), ' + str(bPieces['king']) + ' black King(s)')
if bPieces['king'] <= 0 or wPieces['king'] <= 0:
print('INVALID: One of our kings is missing.')
#print('Black kings number: ' + str(bPieces['king']))
#print('White kings number: ' + str(wPieces['king']))
boardIsValid = False
return boardIsValid
if isValidChessBoard(testBoard03):
print("Board is valid!")
else:
print("Board is invalid.")
print('Before Increment: ' + str(wPieces['king']) + ' white King(s), ' + str(bPieces['king']) + ' black King(s)')
bPieces[board[k][1:]] += 1
print('After Increment: ' + str(wPieces['king']) + ' white King(s), ' + str(bPieces['king']) + ' black King(s)')
...我得到了黑王的增量,但我也得到了白王的增量。我很困惑。这里是不是缺少了某种全局变量,或者我只是在写一些乱七八糟的代码?
我真的很想再多看一双眼睛。先谢谢你,牧师。
错误在以下行:
wPieces = bPieces = BOARDUNITS
此语句的目的是创建BOARDUNITS字典的两个coppie。相反,此行将wpieces
和bpieces
变量分配给对同一字典对象的引用。因此,修改wpieces
的条目也会修改bpieces
,还会修改boardunits
,因为所有三个标识符都指向同一个对象。
您可以创建boardunits
对象的副本,如下所示:
wPieces = BOARDUNITS.copy()
bPieces = BOARDUNITS.copy()
问题是 有一个输入字符串集合和一个查询字符串集合。对于每个查询字符串,确定它在输入字符串列表中出现的次数。 字符串=[ab,ab,abc]查询=[ab,abc,bc]有ab的实例2,'abc'的实例1和'bc'的实例0。对于每个查询,添加一个元素。 现在我尝试使用链表实现它,但不是以2,1,0的形式获得输出。我得到的输出是2,1,0,2,2,1,0,2。我不知道是如何为超过3个链接创建LL的。请帮
今天我在家里的电脑上安装了netbean,以便在家做一些工作。我安装了java 8 JDK(151),并安装了包含所有内容的netbean(没有进行自定义安装)。然后我把我的项目从github上撤下来。 我的安装文件夹是在E:\netbean我的项目文件夹是默认的c: 我加载了项目,打开XAMPP并运行它。太好了,很管用。 然后我对HTML进行了更改(修复了我犯的一个拼写错误)。再次运行。找不到零
我想删除至少有一个“NaN”的所有行。数据框如下图所示,但实际的数据框大约有1000004行。 完整的CSV文件:文件 我写的代码如下: 我预计至少有300000行,但我只有大约200000行。当我签入实际的CSV文件时,第一个NaN至少在第380000行之前不会出现。那么,为什么删除多余的行?
这似乎与对象没有被实例化有关,尽管我不太明白为什么。有人知道出什么事了吗?
问题内容: 我有一个带有某些样式的简单html页面,但我不明白为什么会增加一些顶部边距? 来源如下: 如果我添加“ margin-top:0;” 到了空间已经消失了……但是直到我明白为什么我才感到不高兴。 问题答案: 上的空白来自浏览器添加到元素的默认样式。例如,如果您打开的并检查元素,您将看到这样的样式。该用户代理样式表是指浏览器默认样式。保证金变成16px为浏览器有一个默认。 由于浏览器之间的
问题内容: path = “/Volumes/Users” >>> path.lstrip(‘/Volume’) ‘s/Users’ >>> path.lstrip(‘/Volumes’) ‘Users’ >>> 我期望的输出是 问题答案: 是基于字符的,它将删除该字符串中左端的所有字符。 要验证这一点,请尝试以下操作: 由于是字符串的一部分,因此将其删除。 您需要改用切片: 或者,在Python