Легкая симпатичная печать плаваний в Python?

Сказано, что 80% времени жизни проекта потрачены на обслуживание. Если Ваш код нечитабелен, Вы обязаны потратить впустую много времени для того, кто бы ни поддерживает Ваш код, и неизбежно, Вы заставите их думать злые мысли о Вас.

Из того, что я видел, тем не менее, большинство команд программистов (или даже целая компания, иногда) имеют документ или что-то, объясняя конвенции кода и стили, которых они придерживаются. Это поэтому вполне снисходительно относится к Вашему первому дню работы там, чтобы ввести их правила в Ваш IDE и просто иметь его, автоформатируют Ваш код, таким образом, Вы не должны будете волноваться об этом. Еще лучше можно, вероятно, найти кого-то, кто готов "экспортировать" их prefs файл, таким образом, это - просто вопрос нескольких щелчков до всего кода, который Вы будете когда-либо писать в той компании, отформатирован отлично.

Однако у Вас не всегда будет доступ к этим определенным для команды конвенциям (скажите, например, в интервью). Это всегда - хорошая идея следовать некоторым основным конвенциям, которые имеют смысл. В зависимости от Вашего языка хорошая идея была бы к Google" конвенции кода yourLanguage" и читала бы на основах. То, что важно в ситуации с интервью, - то, что Вы следуете некоторым основным инструкциям и имеете стиль форматирования, которого Вы придерживаетесь. Если Вы "еще" делаете скобку после оператор на той же строке однажды и пишете это на следующей строке другое время, Вы, вероятно, говорите интервьюеру, что действительно не заботитесь достаточно, и/или у Вас нет достаточного опыта, что один путь стал привычкой для Вас.

82
задан mskfisher 10 May 2012 в 17:15
поделиться

9 ответов

Я согласен с комментарием SilentGhost, цикл for не так уж и плох. Вы можете добиться того, чего хотите, с помощью:

l = [9.0, 0.052999999999999999, 0.032575399999999997, 0.010892799999999999, 0.055702500000000002, 0.079330300000000006]
for x in l: print "%0.2f" % (x)
0
ответ дан 24 November 2019 в 09:01
поделиться

Сначала элементы внутри коллекции печатают свое представление. вы должны узнать о __ repr __ и __ str __ .

В этом разница между print repr (1.1) и print 1.1. Давайте объединим все эти строки вместо представлений:

numbers = [9.0, 0.053, 0.0325754, 0.0108928, 0.0557025, 0.07933]
print "repr:", " ".join(repr(n) for n in numbers)
print "str:", " ".join(str(n) for n in numbers)
2
ответ дан 24 November 2019 в 09:01
поделиться

Я считаю, что Python 3.1 по умолчанию распечатает их лучше, без изменения кода. Но это бесполезно, если вы используете какие-либо расширения, которые не были обновлены для работы с Python 3.1

4
ответ дан 24 November 2019 в 09:01
поделиться
print "[%s]"%", ".join(map(str,yourlist))

Это позволит избежать ошибок округления в двоичном представлении при печати, без введения фиксированного ограничения точности (например, форматирование с помощью "%. 2f" ):

[9.0, 0.053, 0.0325754, 0.0108928, 0.0557025, 0.0793303]
8
ответ дан 24 November 2019 в 09:01
поделиться

Более постоянное решение - в подкласс float :

>>> class prettyfloat(float):
    def __repr__(self):
        return "%0.2f" % self

>>> x
[1.290192, 3.0002, 22.119199999999999, 3.4110999999999998]
>>> x = map(prettyfloat, x)
>>> x
[1.29, 3.00, 22.12, 3.41]
>>> y = x[2]
>>> y
22.12

Проблема с подклассом float состоит в том, что он нарушает код, который явно ищет тип переменной. Но насколько я могу судить, это единственная проблема. А простой x = map (float, x) отменяет преобразование в prettyfloat .

К сожалению, вы не можете просто monkey-patch float .__ repr __ , потому что float неизменяем.

Если вы не хотите создавать подкласс float , но не возражаете против определения функции, map (f, x ) намного короче, чем [f (n) для n в x]

76
ответ дан 24 November 2019 в 09:01
поделиться

Поскольку никто не добавил его, следует отметить, что начиная с Python 2.6+ рекомендуемый способ форматирования строк - это формат , чтобы подготовиться к Python 3+.

print ["{0:0.2f}".format(i) for i in a]

Новый синтаксис формирования строк несложен в использовании, но все же достаточно мощный.

Я хотя это может быть pprint мог есть что-то, но я ничего не нашел.

93
ответ дан 24 November 2019 в 09:01
поделиться

Вы можете:

a = [9.0, 0.052999999999999999, 0.032575399999999997, 0.010892799999999999, 0.055702500000000002, 0.079330300000000006]
print ["%0.2f" % i for i in a]
37
ответ дан 24 November 2019 в 09:01
поделиться

Обратите внимание, что вы также можете умножить строку типа «% .2f» (пример: «% .2f» * 10).

>>> print "%.2f "*len(yourlist) % tuple(yourlist)
2.00 33.00 4.42 0.31 
22
ответ дан 24 November 2019 в 09:01
поделиться

Список comps - ваш друг.

print ", ".join("%.2f" % f for f in list_o_numbers)

Попробуйте:

>>> nums = [9.0, 0.052999999999999999, 0.032575399999999997, 0.010892799999999999]
>>> print ", ".join("%.2f" % f for f in nums)
9.00, 0.05, 0.03, 0.01
4
ответ дан 24 November 2019 в 09:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: