Я пытаюсь улучшить игру «броненосец», которую вы делаете в курсе codecademy для python, и я решил, что первым шагом будет реализация классов.__str__ для печати строк по методу
Мой ожидаемый результат от кода составляет пять строк от O O O O O
. Это достижение, когда я использую только оператор печати внутри для цикла, но он выдает ошибку, заявив:
Traceback (most recent call last):
File "D:/PythonProjects/Battleship/Main.py", line 21, in <module>
print(board)
TypeError: __str__ returned non-string (type NoneType)
И когда я покину код, как это не бросать и ошибки, но печатает только одну строку выходов
код в вопросе:
class Board(object):
"""Creates the game board"""
board = []
def __init__(self, size):
self.size = size
for x in range(size):
self.board.append(["O"] * size)
def __str__(self):
for row in self.board:
display = (" ".join(row))
return display
board = Board(5)
print(board)
Ну это потому, что вы присваиваете новый строка для отображения в цикле. –
Вы должны конкатенировать '\ n' до конца каждой строки, чтобы получить новую строку. Это «новый символ линии». – Roope
О, ладно, теперь я понимаю. Так просто сейчас, когда кто-то указал мне на это! Спасибо! – Bitterguy