Как вы печатаете верхний индекс в Python? - PullRequest
6 голосов
/ 28 декабря 2011

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

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

var1 = input("Enter a: ")
var2 = input("Enter b: ")
exponent = input("Enter n: ")

a = int(var1)
b = int(var2)
n = int(exponent)

expression = ('(%(1)dx%(2)d)^%(3)d') %\
{'1' : a, '2' : b, '3' : n}

print(expression)

confirmation = input(str("Is this correctt? Y/N "))

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

Ответы [ 7 ]

9 голосов
/ 22 января 2016

Вам нужно использовать тип «вещь». Используйте {}\u00b2".format(area))" and the {} becomes a ²`. Вот пример:

print("The area of your rectangle is {}cm\u00b2".format(area))

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

8 голосов
/ 28 декабря 2011

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

from sympy import pretty_print as pp, latex
from sympy.abc import a, b, n

expr = (a*b)**n
pp(expr) # default
pp(expr, use_unicode=True)
print(latex(expr))
print(expr.evalf(subs=dict(a=2,b=4,n=5)))

Выход

     n
(a*b) 
     n
(a⋅b) 
$\left(a b\right)^{n}$
32768.0000000000
4 голосов
/ 23 марта 2018

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

Пример:

f'\N{GREEK SMALL LETTER GAMMA}={density:.2f} t/m\N{SUPERSCRIPT THREE}'

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

γ=1.20 t/m³
4 голосов
/ 28 декабря 2011

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

⁰¹²³⁴⁵⁶⁷⁸⁹

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

0 голосов
/ 08 июня 2018

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


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

  • Нажмите Alt + F2
  • Тип "charmap"

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

Например:

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

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

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

0 голосов
/ 28 декабря 2011

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

0 голосов
/ 28 декабря 2011

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

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

...