Как вы печатаете Надстрочный код в 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 a
2`. Вот пример:
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 код и он работал без каких-либо ошибок.