Как вы печатаете Надстрочный код в 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, в то время как я предпочел бы, чтобы индекс был напечатан как Надстрочный. Как это можно сделать? Я предоставлю любую (недостающую) информацию, если это необходимо.
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
Символ Юникода-это решение!
Существует очень простой способ печати надстрочных и подстрочных индексов с использованием символов Юникода. Сделайте следующее:При этом вы получите тонны символов, включая индексы, надстрочные индексы и т. д. В левом нижнем углу окна вы увидите что-то вроде "U-xxxx" , где x может быть любым буквенно-цифровым символом(например, 1,2, A, B..).
- Нажмите alt+f2
- тип "charmap"
Ибо пример:
Если вы хотите напечатать строку x^2, вы должны записать строку как:
'x\u00b2', где u00b2 - это 'U+00B2', показанное на карте символов.
Именно так я использовал символьную карту в своем фрагменте кода tkinter, и она работала без каких-либо ошибок.
Comments