Как писать верхнюю запятую python в консоли
Перейти к содержимому

Как писать верхнюю запятую python в консоли

Python Как добавить запятую в строке

У меня есть число в строке, к которому нужно добавить запятую через 3 знака (с конца).

Исходная строка:
122236055

Исходная строка:
123456789

Как это сделать?

Можно использовать срезы и f-строку :

Если выводишь переменную, то перед выводом дели на 1000.

Вывод программы: 123456,789.

Если число, то, как уже выше сказали: a/1000 , но при приведении к строковому типу наверняка будет точка вместо запятой.
Можно воспользоваться стандартным модулем locale или просто заменить точку.

Если это строка, вариантов тоже несколько:

В первом я просто конвертирую строку в число с плавающей запятой, во втором перед последними 3-мя символами добавляю запятую.

Советы Google по кодированию на языке Python. Часть вторая: советы по форматированию исходного кода


Доброго времени суток. Вот и пришло время для публикации второй части так понравившегося многим хабровчанам перевода стайл гайда для языка Python от компании Google, (первая часть бережно хранится хабром). Теперь мы коснемся напрямую форматирования исходного кода на языке программирования Python. Как известно, чистота — залог здоровья, а чистота программного кода — залог уважения коллег и (в идеале) поощрения от кого-нибудь свыше. Вообще, Python сам по себе является хорошо читаемым языком, и даже синтаксис данного языка призывает к порядку в коде (и, как следствие — в голове). Но каждый из нас сам себе документатор и сам себе творец оформления. А как уже говорилось однажды — ко мнению авторитетных товарищей нельзя не прислушиваться. Итак, вторая часть Google Python Style Guide — Python Style Rules ждет Вас под катом. И pdf тут как тут.

Python Style Rules
Точки с запятой
Длина строки
Исключения
  • Длинные строки импорта
  • URL в комментариях

Когда Ваш текст не помещается в одну строку, используйте скобки для явного объединения строк.

Что касается комментариев, располагайте длинный URL, если это необходимо, на одной строке.

Обратите внимание на отступ элемента в строке выше (смотрите раздел про отступы, чтобы получить разъяснения).

Скобки

Не используйте их (скобки) с выражением return или с условной конструкцией, если не требуется организовать перенос строки. (Смотрите выше). Однако скобки хорошо использовать для создания кортежей.

Отступы

В случае, когда вы подразумеваете перенос строки, вы должны выровнять каждый перенесенный элемент по вертикали так, как описано в примере о длине строк, либо используя отступ в 4 пробела, в этом случае не должно быть ни одного аргумента на первой строке.

Пустые строки
Пробелы

Никаких пробелов внутри каких-либо скобок.
Хорошо: spam(ham[1], , [])
Плохо: spam( ham[ 1 ], < eggs: 2 >, [ ] )

Никаких пробелов перед запятой, точкой с запятой, либо точкой. Используйте пробел после запятой, точки с запятой или точкой, исключая тот случай, когда они находятся в конце строки.

Никаких пробелов перед открывающей скобкой, которая начинает список аргументов, индекс или срез.
Хорошо: spam(1)
Плохо: spam (1)
Хорошо: dict[‘key’] = list[index]
Плохо: dict [‘key’] = list [index]
Окружайте бинарные операторы одиночными пробелами с каждой стороны, это касается присваивания (=), операторов сравнения (==, <, >, !=, <>, <=, >=, in, not in, is, is not), и булевых операторов (and, or, not). Используйте как вам покажется правильно окружение
пробелами по отношению к арифметическим операторам, но всегда расстановка пробелов по обоим сторонам бинарного оператора будет придавать целостность Вашему коду.
Хорошо: x == 1
Плохо: x<1
Не используйте пробелы по сторонам знака » python»>def complex(real, imag=0.0): return magic(r=real, i=imag)

Не используйте пробелы для вертикального выравнивания кусков последовательных строк, так как такие выравнивания оказываются обременительными. (Относится и к :,#,=, и т.д.):

Строка #! (хэш-бэнг)
Комментарии

Будьте уверены в использовании правильного стиля для модуля, функции, метода или строкового комментария.

Строки документации.

Python имеет уникальный стиль комментирования — строки документации. Строка документации это строка, которая является первой конструкцией в пакете, модуле, классе или функции. Такие строки могут быть экспортированы автоматически с помощью атрибута объекта __doc__ и используются pydoc-ом. (Попробуйте запустить pydoc на своем модуле, чтобы увидеть как это выглядит.) Наше соглашение по строкам документации велит использовать три двойные кавычки для обрамления такой строки. Строки документации должны быть организованы как суммарная строка (одна физическая строка), сносящаяся по кол-ву символов, знаку вопроса или восклицательному знаку, следующим за пустой строкой, а затем остальные строки документации с позиции курсора в качестве первой кавычки первой строки. Ниже описано еще больше информации по оформлению строк документирования.

Модули

Каждый файл должен содержать в себе шаблон лицензии. Выберите подходящий шаблон лицензии для вашего проекта.(Например, Apache 2.0, BSD, LGPL, GPL).

Функции и методы
  • Не видима снаружи модуля
  • Очень короткая
  • Очевидная (легко читаемая)
Классы

Классы должны иметь строку документации ниже своего объявления. Если Ваш класс имеет публичные атрибуты, они должны быть документированы тут же в разделе Attributes и следовать тому же стилю форматирования, что и раздел Args.

Блоки и инлайновые комментарии

Последнее место, которое должны иметь комментарии — это хитрые места в коде. Если Вы хотите пояснить их в Вашем следующем код-ревью, то вы должны прокомментировать их сейчас. Сложные операции, занимающие несколько строк документации перед ее выполнением. Неявные части должны иметь комментарий в конце строки.

Чтобы улучшить читаемость, такие комменарии должны находиться на расстоянии по меньшей мере 2-х пробелов от кода. С другой стороны, лучше вообще не описывайте код. Преположите, что человек, читающий данный код, знает Python (а не то, что вы пытались делать) лучше, чем Вы.

Классы

Это также касается вложенных классов.

Наследование от класса object необходимо, чтобы позволить свойствам работать правильно, и защитит Ваш код от возможной несовместимости с Python 3000. В нем так же определяются специальные методы, которые реализуют стандартную семантику объекта, например: __new__, __init__, __delattr__, __getattribute__, __setattr__, __hash__, __repr__, и __str__.

Строки

Используйте оператор % для форматирования строк, даже если все параметры являются строками. Тщательно взвесте использование оператора + взамен оператора %.

Избегайте использования операторов + и +=, чтобы сконкатенировать строку при помощи цикла, т.к. строки — это неизменяемый тип данных, такой подход создает ненужные объекты и увеличивает время работы по квадратичному, а не линейному закону. Вместо этого просто добавьте каждую подстроку в список и используйте метод join после того, как цикл завершится ( или записывайте каждую подстроку в буфер cStringIO.StringIO)

Используйте “”” для многострочных строк вместо “”. Заметьте, однако, что всегда лучше использовать явное объединение строк, т.к. многострочные строки не продолжаются до конца программы с таким же отступом.

Файлы и сокеты
  • Они могут потреблять ограниченные системные ресурсы, такие как файловые дескрипторы. Код, который связан со множеством объектов, может приводить к истощению тех ресурсов без пользы, если они не будут возвращены системе после использования.
  • Содержание файлов в открытом виде может препятствовать другим действиям быть произведенными над ними, таким как, например, перемещение или удаление.
  • Файлы и сокеты, которые общедоступны через код, могут быть ненароком прочитаны или записаны после того, как они были логически «закрыты».
  • Нет гарантий, что во время выполнения программы будет вызван декструкор объекта. Разные реализации Python используют разные подходы к управлению памятью, такие как отложенная сборка мусора, которая может существенно продлить жизнь «удаленного» объекта.
  • Неожиданные ссылки на файл могут заставить его «жить» дольше, чем мы этого ожидаем (например, стек исключений, глобальные объекты и т.д.)
  • Приоритетный способ управлять файлами — это использование конструкции with.

Подобные циклу for объекты, которые не поддерживают конструкцию with и используют contextlib.closing()

Старый код, написанный под Python 2.5, может подключить возможность использования конструкции with при помощи импорта «from __future__ import with_statement«.

Комментарий TODO

Комментарии-TODO должны включать в себя строку TODO в начале каждого комментария, следующую за имменем, электронным адресом или другим идентификатором того, что лучше сможет обеспечить решение проблемы, указанной в скобках. Точка необязательна. Комментарий, объясняющий что там должно происходить, не требуется. Главная цель — это общий формат для TODO, который позволит быстро найти определенного челвоека, который сможет обеспечить более детальное описание проблемы. TODO не является залогом того, что человек решит данную проблему. Таким образом, когда Вы создаете TODO, он почти всегда содержит только Ваше имя.

Оформление импортов
  • Импорты из стандартной библиотеки
  • Сторонние импорты
  • Импорты из библиотек Вашего приложения
Конструкции

Однако вы можете расположить результат текста на той же строке, на которой у Вас рапологается условие. Но это можно сделать только в том случае, когда все выражение помещается на одной строке. В частности, Вы никогда не сможете это сделать с конструкцией try/except, т.к. try и except не могут находиться в одной строке, и Вам доступно помещение в одну строку только с конструкцией if БЕЗ else.
Хорошо:

Контроль доступа
Именование

module_name, package_name, ClassName, method_name, ExceptionName, function_name, GLOBAL_CONSTANT_NAME, global_var_name, instance_var_name, function_parameter_name, local_var_name.

  • Односимвольные имена, исключая счетчики, либо итераторы
  • Минусы в именах модулей и пакетов.
  • Двойные подчеркивания (в начале и конце имен) — зарезервированы для языка.
  • «Внутренний» — означает внутренний для модуля, защищенный или приватный класс.
  • Подстановка ведущего подчеркивания (_) поддерживается для защищенных переменных модуля и функций (которые не импортируются при import * from)
  • Подстановка двойного ведущего подчеркивания (__) к имени переменной или метода эффективно делает их приватными для данного класса (использует добавление к имени). Помещение связанных классов и уровней верхнего уровня вместе в модуле. В отличие от Java, не нужно ограничивать себя в создании одного класса в одном модуле.
  • Используйте верблюжью нотацию для именования классов, а нотацию с прописными буквами и подчеркиваниями для имен модулей. Хотя существует много модулей использующих для именования верблюжью нотацию, но так не рекомендуется делать, ведь это может вводить в заблуждение, т.к. модуль называется в честь класса. (погодите, не писал ли я import StringIO или from StringIO import StringIO?)

Стили основаны на рекоммендациях Гвидо:

Тип Внешний Внутренний
Пакеты lower_with_under
Модули lower_with_under _lower_with_under
Классы CapWords _CapWords
Исключения CapWords
Функции lower_with_under() _lower_with_under()
Глобальные/Внутриклассовые константы CAPS_WITH_UNDER _CAPS_WITH_UNDER
Глобальные/Внутриклассовые переменные lower_with_under _lower_with_under
Переменные экземпляра класса lower_with_under _lower_with_under (protected) or __lower_with_under (private)
Имена методов lower_with_under() _lower_with_under() (protected) or __lower_with_under() (private)
Аргументы функций/методов lower_with_under
Локальные переменные lower_with_under

Даже когда файл создавался для того, чтобы быть импортированным, обычный импорт не должен иметь побочных эффектов в виде исполнения функциональной части скрипта. Основная функциональность должна быть заложена в функции main().
В Python, pychecker, pydoc и юнит тестах требуются импортируемые модули. Ваш код должен всегда проверять if __name__ == ‘__main__’ перед исполнением, что означает, что Ваш модуль не будет полностью исполнен при импортировании его в другую программу.

Весь код верхнего уровня будет исполнен, когда модуль будет импортирован. Будьте осторожны и не вызывайте функции, не создавайте объекта и не проводите другого вида операции, которые не должны будут выполняться, когда файл подвергнется проверке с помощью pychecker или будет собираться документация при помощи pydoc.

Заключительные слова
От переводчика
  • PDF-версия перевода в скором времени будет выложена ссылкой в обоих статьях, так что не промахнетесь:)
  • Нет, я не перевожу комментарии. Я считаю (лично мое мнение), что комментарии в коде должны быть на английском.
Благодарности

Огромное спасибо squaii за ревью и поиск ошибок.

Заключение

Пожалуйста, заклинаю я Вас — пишите порядочный код, господа! Заботьтесь о тех, кто будет поддерживать Ваши труды. Пожалейте их глаза, сэкономьте их силы, подарите им радость жизни, свободной от постоянно больной головы и кругов под глазами. Как известно Вы написавший только что код и Вы через месяц вернувшийся к его поддержке — уже составляете командную разработку, так что не ленитесь писать прозрачно даже тогда, когда Вы один предполагаете поддерживать написанный код. Искореняйте зло, насилие и содомию в среде IT-специалистов (и не только). Всем добра!

Как вы печатаете Надстрочный код в Python?

Я знаю о функции xb в python, но она, похоже, не работает для меня. Я знаю, что мне может потребоваться загрузить сторонний модуль для этого, если да, то какой из них будет лучше всего? Я noob с Python, и с StackOverflow отсюда мой основной вопрос. Теперь немного о контексте.

в настоящее время я пишу биномиальный расширитель, чтобы попытаться использовать навыки, которые я учу сам. Проблема возникает, когда я пытаюсь отобразить пользовательский ввод-ed расширение использования для подтверждения. В настоящее время мне приходится печатать выражение так:

это печатает (2×4)^5, тогда как я бы предпочел, чтобы индекс был напечатан как Надстрочный. Как это сделать? При необходимости я предоставлю любую (отсутствующую) информацию.

7 ответов

можно использовать sympy модуль, который делает необходимое форматирование для вас. Он поддерживает множество форматов, таких как ascii, unicode, latex, mathml и т. д.:

выход

вы используете input() , поэтому я предполагаю, что это консоль. С этой целью у вас есть два варианта, как уже обсуждалось ранее здесь. Один из них-использовать немного обмана форматирования для отображения показателей на строке выше фактического расширения. Другой-использовать эти изящные символы, предполагая, что ваша консоль поддерживает Юникод:

вам, вероятно, придется увеличить размер шрифта совсем немного, чтобы они были разборчивы, но это, безусловно, жизнеспособный вариант при условии надлежащей поддержки. Кроме того, вы упомянули, что это личный опыт обучения; почему бы не объединить его с другим и не изучить более простые аспекты Pygame? Это очень просто, текстовые манипуляции и события клавиатуры не могут быть проще, и это никогда не бывает неправильным шагом, чтобы разветвиться.

вам нужно использовать тип «формат». Использовать <>\u00b2″.format(area))» and the <> becomes a 2`. Вот пример:

конец кода будет печатать cm² . Вы можете изменить большие 2 в конце на другие числа для другого результата. Я не знаю, как сделать нижний индекс.

в Python 3.6+ (упоминается только потому, что в примере используются f-строки, которые недоступны в предыдущих версиях) именованные символы Unicode обеспечивают простой в записи, простой в чтении способ сделать это. вот список.

дает что-то вроде

ваша программа Python, вероятно, работает как консольное приложение, которое может выводить только символы без форматирования. Простой ответ на ваш вопрос: «вы не можете сделать это».

конечно, можно написать приложение GUI, наш выход в формат документа, который поддерживает форматирование (RTF, HTML, TeX и т. д.), Но это, скорее всего, выходит за рамки домашней задачи, над которой вы работаете.

Как уже сказал MK, вы не можете форматировать вывод в командной строке (кроме некоторых цветов и полужирного/мигания в зависимости от терминала). Тем не менее, вы можете написать его таким образом, который, вероятно, будет понят вашими пользователями. Если они из академического сектора, Вы можете использовать способ latex-style для выражения надписей, например x^2

Unicode символ является решением!

существует очень простой способ печати надписей и индексов с использованием символов Юникода. Сделайте следующее:

  • нажмите alt+f2
  • введите «charmap»

при этом вы получите тонны символов, включая индексы, суперскрипты и т. д. В левом нижнем углу окна вы увидите что-то вроде «U-xxxx», где x может быть любым буквенно-цифровым символом(e.g 1,2,А,Б..).

например:

Если вы хотите напечатать строку x^2, вы должны написать строку как:

‘x\u00b2’, где u00b2 — ‘U+00B2’, показанное на карте символов.

это, как я использовал карту в tkinter код и он работал без каких-либо ошибок.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *