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

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

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

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

Q&A

解決済

2回答

232閲覧

Pythonのlistの文章がエラーになって困ってます

hina---

総合スコア3

Python

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

1グッド

0クリップ

投稿2024/11/18 11:25

実現したいこと

sum()を使わずにdefとfor inで
数値のリストを与えると、リストに含まれる数の合計を返す関数 sigma(xs) を定義してください。
これを戻り値で作りたいです

発生している問題・分からないこと

エラーになって実行できません

エラーメッセージ

error

1Traceback (most recent call last): 2File "<exec>", line 4, in sigma 3TypeError: can only concatenate str (not "int") to str

該当のソースコード

Python

1def sigma(xs): 2 result='' 3 for w in xs: 4 result += w 5 return result

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

intとか付けてみたけどダメでした🥺

補足

初心者なので簡単な文にして欲しいですm(_ _)m

tatsu99👍を押しています

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

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

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

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

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

melian

2024/11/18 11:48

result='' を result=0 にしてみるとよいかもしれません。
meg_

2024/11/18 13:15

> sum()を使わずにdefとfor inで > 数値のリストを与えると、リストに含まれる数の合計を返す関数 sigma(xs) を定義してください。 > これを戻り値で作りたいです > 初心者なので簡単な文にして欲しいですm(_ _)m 学校の課題のように見えますがteratailで答えを得ても大丈夫なんでしょうか?
hina---

2024/11/19 06:45

入試の対策問題です 問題の形式少しを自分で変えているのですが著作権的にだめでしたか? すみません答えがないうえに周りにプログラミングを扱える方がおらず少し焦っていて、、、 result=0で解決しました!!
meg_

2024/11/19 09:29

学校の課題かと思ったのでカンニングにならないかを憂慮していました。そうでないなら問題ないかと思います。(参考書からの引用の範囲であれば問題ないかと思いますが引用元を明記されるとより良いかと思います。)
hina---

2024/11/22 12:45

なるほど!
guest

回答2

0

ベストアンサー

この関数を数値のリストを引数にして呼び出して、sigma([1,2,3])で呼び出して、
内部の処理のforを展開すると、result = '' + 1 + 2 + 3という処理になりますが、何かおかしいと思いませんか?
エラーメッセージの通り、文字列(空文字列)と数値を足しています。

電卓で足し算をする場合に、最初にクリアキーを押して0にしますよね?
それと同じです。数値のゼロを初期値にします。

おそらく、「数値の0」「0という文字列」「空文字列」の区別が付いていないのだと思いますが、それらは全然違います。型の弱いプログラミング言語だと同一視されるケースもありますが。

投稿2024/11/18 12:47

otn

総合スコア85778

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

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

hina---

2024/11/19 06:43

回答ありがとうございます。 試したところ問題が解決しました! result=0にすればいいんですね!
otn

2024/11/19 10:36

> result=0にすればいいんですね! というのは、回答を理解してもらえたのかどうか、不安になる文章です。 「文字列と数値では、算数的な足し算は出来ない(数値と文字列は全く違う)」が理解すべき事です。
hina---

2024/11/22 12:58

数値はint文字列はstrになるやつで、 intとstrは計算出来ないから0にするってことですか?
otn

2024/11/22 13:52

intとかstrに言い換える必要はなくて、 ・算術演算するなら、全部数値型である必要がある ・文字列は(数値型に型変換してからでない限り)算術演算できない という話と、 ・合計を求める際に、順番に足し算していく時に、最初の値はどうすれば良いだろうか? という話です。 「ゼロにする」と決まっているわけじゃなくて、「最初の値はどうする?」と考えた結果、「ゼロにするのが一番良さそう」ということですね。ゼロじゃない案もあり得るので。
guest

0

エラーメッセージでは

google翻訳
TypeError:str に連結できるのは str ("int" ではない) のみです

とおっしゃってますが、心当たりはあるでしょうか

投稿2024/11/18 11:30

y_waiwai

総合スコア88024

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

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

hina---

2024/11/19 06:42

回答ありがとうございます。 ベストアンサーは別の方を選ばせていただきましたが、こちらの回答も非常に参考になりました。 strは足し算できないのでしたね、、、
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問