在交互式 shell 和 Linux 终端中运行 python 脚本有什么区别?
class Player():
def __init__(self, char):
self.char = char
self.position = 'f'
def setMove(self):
while True:
print(self.char + ' make a move')
self.position = input()
if self.position.isdigit():
break
def getMove(self):
return int(self.position)
def makeMove(self):
self.setMove()
board[self.getMove()].fillCell(self)
class Cell():
def __init__(self):
self.filled = False
self.image = '_'
def __str__(self):
return self.image
def fillCell(self, player):
if not self.filled:
self.image = player.char
self.filled = True
else:
player.makeMove()
class Board(list):
def __init__(self,cells):
super(list,self).__init__(cells)
def __str__(self):
return '\n'.join([chunk for chunk in self._chunks()])
def _chunks(self):
chunk_len = 3
for i in range(0,len(self),chunk_len):
yield ' '.join([cell.image for cell in self[i:i+3]])
def checkRow(self,player):
chunk_len = 3
test_list = [player.char for i in range(chunk_len)]
for idx in range(0,len(self)-1,chunk_len):
return ([cell.image for cell in self[idx:idx +chunk_len]] == test_list)
board = Board([Cell() for i in range(9)])
if __name__ == '__main__':
pl1 = Player('x')
pl2 = Player('o')
while True:
print(board)
pl1.makeMove()
print(board)
pl2.makeMove()
这是我的脚本。当我在Python的命令行里运行它时,一切都能正常工作。但是当我在终端里尝试同样的事情时,我却遇到了一个错误。
Traceback (most recent call last):
File "tictactoe.py", line 63, in <module>
board = Board([Cell() for i in range(9)])
File "tictactoe.py", line 39, in __init__
super().__init__(cells)
TypeError: super() takes at least 1 argument (0 given)
然后我上网查了一下,添加了一个参数。我再次运行这个脚本,结果显示了一个不同的错误。
x make a move
Traceback (most recent call last):
File "tictactoe.py", line 77, in <module>
pl1.makeMove()
File "tictactoe.py", line 16, in makeMove
self.setMove()
File "tictactoe.py", line 10, in setMove
if self.position.isdigit():
AttributeError: 'int' object has no attribute 'isdigit'
当错误发生时我并不感到惊讶,真正让我惊讶的是“板子”没有显示出来。所以如果有人能帮我,那将会对我有很大的帮助。
1 个回答
0
在交互式命令行和Linux终端中运行Python脚本的区别在于,你可以安装多个版本的Python。如果运行了错误的版本,你就需要找出问题出在哪里。
如果你在交互式命令行中运行Python脚本,它会使用与运行该脚本的Python版本对应的库。