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

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

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

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

Q&A

解決済

2回答

7460閲覧

'float' object is not iterable

yunasato

総合スコア12

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

0グッド

0クリップ

投稿2018/12/25 18:37

python

1def Hi(t):#投げ上げ後の軌道 2 Hi=(_hi[-1])+(_vi[-1])*t-(1/2)*g*t**2 3 return Hi

と関数Hi(t)を定義した後,

_water=[] _Hmax=[] while i<=0.8: t=0 v=0 h=0 vi=0 hi=0 x=xi water=S*rho*(1-xi)#水の量 _water.append(water) _t=[] _x=[] _hi=[] _vi=[] _himax=[] while x<=L: k1=dxdt(x)*dt; k2=dxdt(x+k1/2)*dt; k3=dxdt(x+k2/2)*dt; k4=dxdt(x+k3)*dt; k=(1/6)*(k1+2*k2+2*k3+k4); #水の量を変えた時の速度をルンゲクッタで求める j1=dvdti(x)*dt; j2=dvdti(x+j1/2)*dt; j3=dvdti(x+j2/2)*dt; j4=dvdti(x+j3)*dt; j=(1/6)*(j1+2*j2+2*j3+j4); hi=vi*t#水が入っている時の時間と高さ _t.append(t) _x.append(x) _vi.append(vi) _hi.append(hi) t+=dt; x+=k; vi+=j; himax=max(_hi)#水が入っている時の最高点 _himax.append(himax) Himax = max(Hi(t))#問題の箇所!!!!!!!!!! Hmaxi=max(himax,Himax) _Hmax.append(Hmaxi) i+=di;

と,ごちゃごちゃと先ほどの関数Hi(t)の最大値を途中で登場させようと試みたのですが,

TypeError Traceback (most recent call last) <ipython-input-15-4b6a232c5c76> in <module>() 44 himax=max(_hi)#水が入っている時の最高点 45 _himax.append(himax) ---> 46 Himax = max(Hi(t)) 47 Hmaxi=max(himax,Himax) 48 TypeError: 'float' object is not iterable

と,エラーが発生してしまいました。そもそもhiやviはiに依存する関数で,そのiをwhileで動かし,その中でwhileを用いたルンゲクッタを行なっている,という流れです。

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

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

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

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

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

guest

回答2

0

max関数の使い方に問題があります。
複数の値を渡すか、一つのリストを渡すように変更すればエラーは解消されると思います。

投稿2018/12/25 18:53

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

yunasato

2018/12/26 02:33

回答ありがとうございました!無事になんとかなりました!
guest

0

ベストアンサー

こんにちは。
max()はiterableなオブジェクトの中から最大の要素を返す関数です。
ここでiterableなオブジェクトとはfor文で順番に中身を取り出せるものです。

たとえばrange, リスト, タプル, 集合, 辞書, 文字列はiterableですが
floatの数字ひとつはiterableではありません。

Python

1val_max = max(1, 2, 3) 2print(val_max) 3 4val_list = [4, 5, 6] 5val_max = max(val_list) 6print(val_max) 7 8# 値をひとつだけ渡すと 'float' object is not iterable のようにエラー 9val_max = max(4.0)

投稿2018/12/26 00:54

firedfly

総合スコア1131

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

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

yunasato

2018/12/26 02:33

回答ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問