расширенное форматирование печати в python - PullRequest
0 голосов
/ 24 февраля 2019

Я хотел бы знать, есть ли лучший (более короткий / более чистый) способ форматирования следующего кода.

# Debug info
print('#-----------------------------------------------------------------#')
print('')
print('Id: {_id}, Name: {_name}'.format(_id = self._id, _name = self._name))
print('')
print('    Attributes:')
print('')
print('        {_attribute}: (level: {_level}), (experience: {_exp})'.format(_attribute = self._attribs[0]._name, _level = self._attribs[0]._level, _exp = self._attribs[0]._exp))
print('            Rebirth: (level: {_level}), (experience: {_exp})'.format(_level = self._attribs[0]._rebirth[0], _exp = self._attribs[0]._rebirth[1]))
print('            Rank: (level: {_level}), (experience: {_exp})'.format(_level = self._attribs[0]._rank[0], _exp = self._attribs[0]._rank[1]))
print('            Tier: (level: {_level}), (experience: {_exp})'.format(_level = self._attribs[0]._tier[0], _exp = self._attribs[0]._tier[1]))

Это output:

#-----------------------------------------------------------------#

Id: 0, Name: End

    Attributes:

        Vitality: (level: 1), (experience: 0.0)
            Rebirth: (level: 0), (experience: 0.0)
            Rank: (level: 0), (experience: 0.0)
            Tier: (level: 0), (experience: 0.0)

1 Ответ

0 голосов
/ 24 февраля 2019

Есть несколько вещей, которые вы можете сделать, чтобы исправить это.

Во-первых, print('') может быть достигнуто путем добавления '\n' в конец предыдущего оператора печати. ​​

Во-вторых, пробелы для отступов можно получить с помощью '\t'

В-третьих, вы можете разбить повторяющиеся разделы на for петли.

# Debug info
print('#-----------------------------------------------------------------#\n')
print('Id: {_id}, Name: {_name}\n'.format(_id=self._id, _name=self._name))
print('\tAttributes:\n')
for a in self.__attribs:
    print('\t\t{_name}: (level: {_level}), (experience: {_exp})\n'.format(_name=a._name, _level=a._level, _exp=a._exp))
    for t, at in [('Rebirth', a._rebirth), ('Rank', a._rank), ('Tier', a._tier)]:
        print('\t\t\t{_title}: (level: {_level}), (experience: {_exp}'.format(_title=t, _level=at[0], _exp=at[1])

Если вы используете Python 3Вы можете использовать f-строки для синтаксически более аккуратного форматирования.

https://medium.com/@NirantK/best-of-python3-6-f-strings-41f9154983e

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...