web-dev-qa-db-ja.com

Pythonで上付き文字をどのように印刷しますか?

Pythonの\ xb関数を知っていますが、うまくいかないようです。これを実現するためにサードパーティのモジュールをダウンロードする必要があるかもしれないことを知っています。もしそうなら、どれが最適でしょうか?私は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を出力しますが、インデックスは上付き文字として出力することをお勧めします。これはどのように行うことができますか?必要に応じて、(不足している)情報を提供します。

9
Kage93

必要なフォーマットを行う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
9
jfs

'format'タイプのものを使用する必要があります。 {}\u00b2".format(area))" and the {} becomes a²`を使用します。次に例を示します。

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

コードの終わりにはcm²が出力されます。末尾の大きい2を他の数値に変更して、別の結果を得ることができます。ただし、下付き文字を作成する方法はわかりません。

11
James

Python 3.6+(この例では、以前のバージョンでは使用できないf文字列を使用しているためにのみ言及されています)では、名前付きのUnicode文字を使用すると、これを行うための書きやすく、読みやすい方法が提供されます。 ここにリストがあります。

例:

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

次のようなものを生成します

γ=1.20 t/m³
7
jake77

input()を使用しているので、これはコンソールベースだと思います。そのためには、前に説明したように、2つのオプションがあります ここ 。 1つは、少しフォーマットのトリックを使用して、実際の展開の上の行に指数を表示することです。もう1つは、コンソールがUnicodeをサポートしていると仮定して、これらの気の利いた文字を使用することです。

⁰¹²³⁴⁵⁶⁷⁸⁹

読みやすくするためには、おそらくフォントサイズをかなり大きくする必要がありますが、適切なサポートがあれば、それは確かに実行可能なオプションです。それとは別に、これは個人的な学習体験だとおっしゃいました。それを別のものと組み合わせて、Pygameのより単純な側面を学んでみませんか?それは非常に簡単で、テキスト操作とキーボードイベントはこれ以上簡単ではありません。そして、分岐するのは決して間違ったステップではありません。

4
ranksrejoined

あなたのPythonプログラムは、おそらくフォーマットなしで文字を出力できるコンソールアプリケーションとして実行されています。あなたの質問に対する簡単な答えは「あなたはそれをすることができない」です。

もちろん、GUIアプリケーション、つまりフォーマットをサポートするドキュメント形式(RTF、HTML、TeXなど)への出力を作成することは可能ですが、これは、作業中の宿題の問題の範囲を超えている可能性があります。

0
MK.

MKがすでに述べたように、コマンドラインで出力をフォーマットすることはできません(一部の色と端末によっては太字/点滅を除く)。ただし、ユーザーが理解しやすい方法で記述することもできます。それらが学術部門からのものである場合は、ラテックススタイルの方法を使用して上付き文字を表現できます。 x^2

0
ThiefMaster

Unicode文字が解決策です!


Unicode文字を使用して上付き文字と下付き文字を印刷する非常に簡単な方法があります。以下をせよ:

  • Alt + F2を押します
  • 「charmap」と入力します

そうすると、下付き文字、上付き文字などを含む大量の文字が表示されます。ウィンドウの左下に、「U-xxxx」のような文字が表示されます。ここで、xは任意の英数字(例:1)です。 、2、A、B ..)。

例:

  • 文字列x ^ 2を出力する場合は、文字列を次のように記述する必要があります。

    'x\u00b2'、ここでu00b2は文字コード表に示されている 'U + 00B2'です。

これは、tkinterコードスニペットで文字コード表を使用した方法であり、エラーなしで機能しました。

0