質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

2回答

1645閲覧

Python の print の出力を「式: (計算結果)」となるようにしたい

Ryuking885

総合スコア3

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2022/01/17 08:22

デバッグのための自作 print 関数

デバッグのために print 関数を拡張したいです。
このモジュールを使うと良いよ、というようなヒントがいただければと思います。

入出力

入力:数式
出力:「数式:(数式の計算結果)」

例1

以下の print() と同じ出力を、例えば my_print(w*x) とするだけで実現したいです。

python

1import numpy as np 2 3x = np.array([0, 1]) 4w = np.array([0.5, 0.5]) 5 6print('w*x: ' + str(w*x)) # --> w*x: [0. 0.5]

例2

例1と同様に、my_print(np.sum(w*x)) という形式で以下のコードと同じ出力を得たいです。

python

1import numpy as np 2 3x = np.array([0, 1]) 4w = np.array([0.5, 0.5]) 5 6print('np.sum(w*x): ' + str(np.sum(w*x))) # --> np.sum(w*x): 0.5

よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

melian

2022/01/17 08:29

コロンではなくてイコール(=) でもよければ f-strings が使えます(Python 3.8以降)。 print(f'{w*x = }') print(f'{np.sum(w*x) = }')
Ryuking885

2022/01/17 08:36

ありがとうございます!非常に助かりました。
guest

回答2

0

お求めのものは、Pythonでは引数は関数に渡される前に評価されるので、そのままでは無理です。
少し危険ですがevalを使えば似たようなものは作れます。

python

1>>> def my_print(s): 2... print(s+':', eval(s)) 3... 4>>> import numpy as np 5>>> 6>>> x = np.array([0, 1]) 7>>> w = np.array([0.5, 0.5]) 8>>> 9>>> my_print('w*x') 10w*x: [0. 0.5] 11>>>

投稿2022/01/17 08:36

ppaul

総合スコア24666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

Python3.8から標準でその機能があります。

python3.8>=

1a = 1 2print(f'{a=}')

https://gammasoft.jp/blog/python-f-string/

python3.7以下なら

python3.7<=

1from inspect import currentframe 2 3def chkprint(*args): 4 names = {id(v):k for k,v in currentframe().f_back.f_locals.items()} 5 print(', '.join(names.get(id(arg),'???')+' = '+repr(arg) for arg in args)) 6 7a = 1 8chkprint(a) 9

ただし、int(-5~256)を引数に取ると正常に動作しません。

投稿2022/01/17 08:29

編集2022/01/17 09:55
horiegom

総合スコア152

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問