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

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

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

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

Python

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

Q&A

解決済

3回答

936閲覧

python while文のprint表示について

Ackngawe.-

総合スコア27

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

Python

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

0グッド

0クリップ

投稿2021/12/13 08:28

編集2021/12/13 08:43

python

1import numpy as np 2import matplotlib.pyplot as plt 3 4def f(x,t): 5 return x*(5-x) 6 7a = 0.0 8b = 2.0 9N = 200 10h = (b-a)/N 11i = 0 12 13t = np.arange(a,b,h) 14x_0 = 1 15 16x = np.empty(N) 17x[0] = x_0 18 19while i < N-1: 20 print('i{},x{},t{}'.format(i.x.t)) 21 k_1 = h * f(x[i],t[i]) 22 k_2 = h * f(x[i] + k_1 /2 , t[i] + h/2 ) 23 k_3 = h * f(x[i] + k_2 /2 , t[i] + h/2 ) 24 k_4 = h * f(x[i] + k_3 , t[i] + h ) 25 x[i+1] = x[i] + 1/6 * (k_1 + 2*k_2 + 2*k_3 + k_4 ) 26 27 28 if i == N-1: 29 break 30 31 i += 1 32 33plt.plot (t, x) 34plt.xlabel("t") 35plt.ylabel("x(t)") 36plt.show() 37 38```というルンゲクッタ法を用いたコードなのですが、実行すると、 39- 'int' object has no attribute 'x' 40 File "C:\Users\hot40\OneDrive\Desktop\runngekyttapra3.py", line 20, in <module> 41 print('i{},x{},t{}'.format(i.x.t)) 42 43とエラーが出てきます。何がいけないのかと、対応策を教えていただきたいです。

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

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

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

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

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

guest

回答3

0

ベストアンサー

Python 3.8 から f-strings= が使える様になりました。
Add = to f-strings for easier debugging

なので、以下の様にも書くことができます。

python

1 print(f'{i=}, {x=}, {t=}')

ただ、xt の要素数が多いので、例えば最初の10個の要素だけを表示したい場合は以下になります。

python

1 print(f'{i=}\n{x[:10]=}\n{t[:10]=}\n')

投稿2021/12/13 08:45

melian

総合スコア19803

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

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

Ackngawe.-

2021/12/13 09:02

解説ありがとうございます。 できました!非常にわかりやすかったです!
Ackngawe.-

2021/12/13 09:43

追加で質問なのですが、iに対応したx、tを表示するにはどう書き直せばよろしいでしょうか。
melian

2021/12/13 09:54

例えば print(f'{i=}, {x[i]=:.3f}, {t[i]=:.2f}') とします。":.3f" とか ":.2f" などは小数点以下を何桁表示するのかを指定するものです。
guest

0

format(i.x.t)

関数やメソッドの引数の区切りは、ピリオドじゃなくてカンマです。

投稿2021/12/13 08:38

otn

総合スコア84557

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

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

Ackngawe.-

2021/12/13 08:44

すみません。直すのを忘れていました。ちなみに、カンマに直しても同様のエラーが出てきました。
otn

2021/12/13 08:48

同じエラーのはずはないので、見間違いでしょう。
guest

0

そこ、コンマじゃなくてピリオドになってますね

投稿2021/12/13 08:36

y_waiwai

総合スコア87774

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

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

Ackngawe.-

2021/12/13 08:45

すみません。直すのを忘れていました。ちなみに、カンマに直しても同様のエラーが出てきました。
y_waiwai

2021/12/13 08:47

そのエラーメッセージを提示しよう
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問