Есть ли способ отобразить правильный вывод?Python

Программы на Python
Anonymous
Есть ли способ отобразить правильный вывод?

Сообщение Anonymous »

Я не слишком разбираюсь в программировании и столкнулся с проблемой печати ожидаемой платы. Предполагается, что на доске будут отображаться только цифры и в определенных позициях.
Я успешно сделал это для одного символа, однако изо всех сил пытаюсь понять, как изменить положение другого. символ. Ожидаемый результат должен быть таким:
+------------------+
| |
| |
| 0 |
| |
| 1 |
| |
+------------------+

Мой текущий результат таков:
+------------------+
| |
| |
| 0 |
| |
| 1 |
| |
+------------------+

def print_board(self) -> None:
horizontal_border = "+{}+".format("-" * self.width)
print(horizontal_border)
for y in range(self.height):
row = "|{}|".format(" " * self.width)
for em in self.emitters:
if em.position[1] == y:
row = row[:em.position[0] + 1] + em.symbol + row[em.position[0] + 2:]
for rec in self.receivers:
if rec.position[1] == y:
row = row[:int(str(rec.position)[1]) + 1] + str(rec.symbol)[1] + row[int(str(rec.position)[1]) + 2:]
print(row)
print(horizontal_border)

Если я удалю int и str и изменю номер позиции на 0, у меня будут правильные позиции на доске, однако символы неправильные, поскольку должны отображаться только цифры.Добавлены излучатели («A», 2, 2) и («B», 8, 1).
Добавлены приемники («R0», 15, 2) и («R1», 6, 4).
Излучатели и приемники не находятся на одной плате. Они не отображаются вместе.
Излучатель:
def add_emitter(self, emitter: Emitter) -> bool:
if not isinstance(emitter, Emitter):
print("Error: Not an Emitter instance.")
return False
if self.get_collided_emitter(emitter) is not None:
print(f"Error: position {emitter.position} is already taken by emitter '{self.get_collided_emitter(emitter).symbol}'")
return False
if any(emitter.symbol == e.symbol for e in self.emitters):
print("Error: Emitter symbol already taken.")
return False
for e in self.emitters:
if e.position == emitter.position:
print(f"Error: position {emitter.position} is already taken by emitter '{e.symbol}'")
return False
self.emitters.append(emitter)
self.emitters.sort(key=lambda e: e.symbol)
self.board_displayer.add_component_to_board(emitter.symbol)
return True
def get_emitters(self):
return self.emitters

Получатель:
def add_receiver(self, receiver: Receiver) -> bool:
if not isinstance(receiver, Receiver):
print("Error: Not a Receiver instance.")
return False
if self.get_collided_receiver(receiver) is not None:
print(f"Error: position {receiver.position} is already taken by receiver '{self.get_collided_receiver(receiver).symbol}'")
return False
if self.get_collided_emitter(receiver) is not None:
print("Error: Emitter position already taken.")
return False
if any(receiver.symbol == r.symbol for r in self.receivers):
print(f"Error: symbol '{receiver.symbol}' is already taken")
return False
self.receivers.append(receiver)
self.receivers.sort(key=lambda r: r.symbol)
self.board_displayer.add_component_to_board(receiver.symbol)
return True

def get_receivers(self):
return self.receivers


Подробнее здесь: https://stackoverflow.com/questions/784 ... ect-output

Вернуться в «Python»