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



Я знаю о функции 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, в то время как я предпочел бы, чтобы индекс был напечатан как Надстрочный. Как это можно сделать? Я предоставлю любую (недостающую) информацию, если это необходимо.

1206   7  

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

⁰¹²³⁴⁵⁶⁷⁸⁹

Вам, вероятно, придется немного увеличить размер шрифта, чтобы они были разборчивыми, но это, безусловно, жизнеспособный вариант, предполагающий правильное поддержка. Кроме того, вы упомянули, что это личный опыт обучения; почему бы не объединить его с другим и не изучить более простые аспекты 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, вероятно, работает как консольное приложение,которое может выводить только символы без форматирования. Простой ответ на ваш вопрос: "вы не можете этого сделать".

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

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

Символ Юникода-это решение!


Существует очень простой способ печати надстрочных и подстрочных индексов с использованием символов Юникода. Сделайте следующее:
  • Нажмите alt+f2
  • тип "charmap"
При этом вы получите тонны символов, включая индексы, надстрочные индексы и т. д. В левом нижнем углу окна вы увидите что-то вроде "U-xxxx" , где x может быть любым буквенно-цифровым символом(например, 1,2, A, B..).

Ибо пример:

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

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

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

Comments

    Ничего не найдено.