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

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

詳細はこちら
Python 3.x

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

Python

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

Q&A

解決済

2回答

1057閲覧

pythonでリストの平均を求めようとしたところ、エラーが出る

noah._.

総合スコア23

Python 3.x

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

Python

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

0グッド

0クリップ

投稿2020/12/13 11:10

#やりてーこと!
このプログラムでlist[cP1]の
平均値を求めたい。

python

1def 平均(): 2 print("") 3 print("平均算出モード") 4 print("[開発状況:完成]") 5 print("") 6 cP1 = [] 7 ans = input("データを入力") 8 if ans.isnumeric(): 9 cP1.append(ans) 10 while ans.isnumeric(): 11 12 ans = input("データを入力") 13 14 if ans.isnumeric(): 15 16 cP1.append(ans) 17 18 ave = int(sum(cP1))/int(len(cP1)) #問題のとこはここ 19 20 print(ave) 21 22平均() 23

##課題
エラーが出る。
多分intとstrでけいさんしてるのでできませんよーてきななことかと。
###えらーめっせーじ!

Traceback (most recent call last): File "D:\ave.py", line 38, in <module> 平均() File "D:\ave.py", line 25, in 平均 ave = int(sum(cP1))/int(len(cP1)) TypeError: unsupported operand type(s) for +: 'int' and 'str'

####やったこと
ave = int(sum(cP1))/int(len(cP1))と、双方に[int()]を行った。

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

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

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

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

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

meg_

2020/12/13 11:23

int(sum(cP1))/int(len(cP1)) のどの部分でエラーが発生しているのかを確認しましょう。
guest

回答2

0

python

1def 平均(): 2 print("") 3 print("平均算出モード") 4 print("[開発状況:完成]") 5 print("") 6 7 cP1 = [] 8 while True: 9 try: 10 i = int(input("データを入力")) 11 cP1.append(i) 12 except ValueError: 13 break 14 15 ave = int(sum(cP1))/int(len(cP1)) 16 print(ave) 17 18平均()

正しくはこうです。エラーが発生していた原因は、cP1の要素が文字列型だったからです。

投稿2020/12/13 12:21

編集2020/12/13 12:24
rtgsdfsdg

総合スコア174

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

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

0

ベストアンサー

  • cP1appendする時点でint()を使えば、cP1に整数になって格納される。
  • isnumericでTrueになる文字の範囲には、int()で整数に変換できない文字が含まれる(など)。代わりにisdigitを使うべき。
  • cP1が空リストの場合に対応すべき。try~exceptでも、if文でもいいので。
  • inputとif文がwhile文の前と中にあるのは格好悪い。

Python

1def my_average(): 2 cP1 = [] 3 while True: 4 ans = input("データを入力: ") 5 if ans.isdigit(): 6 cP1.append(int(ans)) 7 else: 8 break 9 if cP1 != []: 10 ave = sum(cP1) / len(cP1) 11 print(ave) 12 else: 13 print("データが空です") 14 15 16my_average()

投稿2020/12/13 12:08

Daregada

総合スコア11990

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

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

noah._.

2020/12/26 06:15

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問