🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python 3.x

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

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

2回答

1673閲覧

ループを使って合計値を代入したいです.

yutaroooooo

総合スコア32

Python 3.x

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

ループ

ループとは、プログラミングにおいて、条件に合致している間、複数回繰り返し実行される箇所や、その制御構造を指します

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2019/10/17 20:29

ループを使ってdata1data8までの辞書型の配列に入っている値のデータの合計をsum1sum8に入れたいです.

一応このようなコードを書いたのですが,うまくいきません..

for i in range(8):
sum=sum("data"+str(i))

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


TypeError Traceback (most recent call last)
<ipython-input-63-e005b4d56c98> in <module>
1 for i in range(8):
----> 2 sum=sum("data"+str(i))

TypeError: unsupported operand type(s) for +: 'int' and 'str'

補足情報
data1={6: [69, 6, 14, 15, 79, 16, 53, 22, 25, 63]}
このように値の方にリストとして8つの数字が入っており,この合計値をsum1~sum8に代入したいです.

申し訳ないですが,どなたか解決方法を教えていただきたいです.

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

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

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

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

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

dodox86

2019/10/17 21:35

> data1={6: [69, 6, 14, 15, 79, 16, 53, 22, 25, 63]} > このように値の方にリストとして8つの数字 値のリストとしては10個の数字(整数)になっていますが。。。 辞書型のdataの要素数が8個(data1からdata8)で、それぞれに10個の値リストがある、と言うことでしょうか?
magichan

2019/10/17 23:15

> data1={6: [69, 6, 14, 15, 79, 16, 53, 22, 25, 63]} 各辞書に要素は1つずつしか入っていないのでしょうか? またその要素(合計したいリスト)のキー値は全て 6 なのでしょうか?
meg_

2019/10/19 03:40

"data"+str(i)の結果は文字列ですね。だからsum()は出来ません。 配列の合計値が欲しいのなら、辞書から配列を抜き出してください。
guest

回答2

0

ベストアンサー

python

1data1={6: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]} 2data2={6: [11, 12, 13, 14, 15, 16, 17, 18, 19, 110]} 3data3={6: [21, 22, 23, 24, 25, 26, 27, 28, 29, 210]} 4data4={6: [31, 32, 33, 34, 35, 36, 37, 38, 39, 310]} 5data5={6: [41, 42, 43, 44, 45, 46, 47, 48, 49, 410]} 6data6={6: [51, 52, 53, 54, 55, 56, 57, 58, 59, 510]} 7data7={6: [61, 62, 63, 64, 65, 66, 67, 68, 69, 610]} 8data8={6: [71, 72, 73, 74, 75, 76, 77, 78, 79, 710]} 9 10for i in range(1,9): 11 tmp_data = eval("data"+str(i)) 12 tmp_sum = sum(tmp_data[list(tmp_data)[0]]) 13 exec("sum"+ str(i) + "=" + str(tmp_sum)) 14 15print(sum1) 16print(sum2) 17print(sum3) 18print(sum4) 19print(sum5) 20print(sum6)

投稿2019/10/18 01:16

qax

総合スコア622

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

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

0

何がやりたいのかよく分かっていませんが、以下のエラーはメッセージを読めば解消可能です。

TypeError: unsupported operand type(s) for +: 'int' and 'str'

まずは、エラーを無くすところから始めてみては?

プログラムは、フローを理解していないと記述できません。やりたいことをフローチャートでも書いて理解してみてください。
多分、変数の使用方法とか関数の使用方法が理解できていないのではないかと思います。

投稿2019/10/17 23:16

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問