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

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

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

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 ответов


можно использовать 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

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

⁰¹²³⁴⁵⁶⁷⁸⁹

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


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

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

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


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

пример:

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

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

γ=1.20 t/m³

ваша программа 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 код и он работал без каких-либо ошибок.