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

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

新規登録して質問してみよう
ただいま回答率
85.41%
Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

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

Q&A

3回答

393閲覧

代入演算子を用いた計算ができない

east-site.3

総合スコア1

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

NumPy

NumPyはPythonのプログラミング言語の科学的と数学的なコンピューティングに関する拡張モジュールです。

Python

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

0グッド

0クリップ

投稿2023/11/10 04:33

実現したいこと

ここに実現したいことを箇条書きで書いてください。

  • 代入演算子を用いて10を足していきその結果を出力する

前提

プログラミングの練習

発生している問題・エラーメッセージ

unsupported operand type(s) for +=: 'builtin_function_or_method' and 'float'

該当のソースコード

python

1import numpy as np 2for s in np.linspace(0,90,10): 3 sum += s 4print(sum)

試したこと

型を変えて実行してみたもののそれも対応できないと表示された

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

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

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

can110

2023/11/10 04:42

sumは「builtin_function_or_method」だという意味のエラーですが、sumは何だと認識、想定していますか?
east-site.3

2023/11/10 05:34

sumは合計の変数名と考えておりました。
guest

回答3

0

「ある変数に、ループしながら順番に加算していきたい」というときに、その変数には何か足す前の値を代入しておかないといけません。

Python

1a = a+3

という1行だけのプログラムを実行しても、何と3を足せば良いのか不明ですね。
この場合、name 'a' is not definedという「aって何だか分からん」というエラーになります。
プログラミング言語によっては、「あらかじめ何も代入していない変数を参照すると0とか空文字列と見なしてくれる」という仕様の場合もあり、おそらくそういう言語だけでしかプログラミングしたことが無かったのでしょう。
Pythonその他多くの言語では、あらかじめ何も代入していない変数を参照するとエラーになります。

Python

1a = 0 2a = a + 3

と、初期値として0を代入しておくと、「0と3を足す」ということになるので大丈夫ですね。

ところが、

unsupported operand type(s) for +=: 'builtin_function_or_method' and 'float'

このエラーメッセージは、「"組み込み関数"と"float型の値"を加算しようとしたが、それは無理」という意味です。
何故かというと、sumという変数には、初期値として「引数の数値の合計を求める」という機能の組み込み関数が代入されているからです。

Python

1print( sum )

という1行だけのプログラムを実行してみると分かります。
そのため、「sumってなんだかわからん」というエラーにはなりませんでしたが、結局エラーです。
0で初期化しておけば良いので、

Python

1import numpy as np 2sum = 0 3for s in np.linspace(0,90,10): 4 sum += s 5print(sum)

で、一応、目的は果たせます。しかし元々sumに代入されていた「合計を求める」という機能の組み込み関数が上書きされて今後一切使えなくなります。
「自分は使わないから良いよ」かもしれませんが、numpyライブラリの中で使ってそうじゃありませんか?その場合は、そのnumpyの機能を使うと意味不明のエラーになったりしそうです。
ということで、他の方の回答のように、sumという名前の変数は自分で勝手に使わない方が良いです。

もちろん、使わない方が良いというか「使ってはいけない名前」はsumだけじゃなくて、組み込み関数名や組み込みクラスの名前全部です。間違えてfromとかの予約語を変数名に使おうとするとエラーになるのでわかりますが、sumなどは予約語じゃないのでエラーになりません。

つまりPythonでプログラムを書く時は、組み込み関数名や組み込みクラス名を全部記憶した上で、それらを自分の変数名や関数名として使ってはいけないという、ちょっとつらい仕様の言語です。
これを楽にするためには、そのあたりを指摘してくれるような開発ツールを使うのが良いでしょう。

投稿2023/11/10 11:17

otn

総合スコア85110

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

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

0

sum はビルトイン関数なので、別の名前を使います。

python

1import numpy as np 2 3sum_s = 0 4for s in np.linspace(0,90,10): 5 sum_s += s 6 7print(sum_s)

もしくは、numpy.ndarray.sum() メソッドを使います。

python

1sum_s = np.linspace(0,90,10).sum() 2print(sum_s)

投稿2023/11/10 04:42

melian

総合スコア20167

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

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

east-site.3

2023/11/10 05:33

解決しました。ありがとうございました。
guest

0

sumはPythonで既に用意されてる関数なので使わないでください.また+=演算をする際は初期化が必要です.

python

1import numpy as np 2_sum = 0 3for s in np.linspace(0,90,10): 4 _sum += s 5print(_sum)

投稿2023/11/10 04:43

編集2023/11/10 07:25
PondVillege

総合スコア1579

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

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

east-site.3

2023/11/10 05:33

解決しました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.41%

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

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

質問する

関連した質問