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

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

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

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

Q&A

解決済

2回答

257閲覧

Whileのループを抜ける条件の設定方法

KawamotoFumiya

総合スコア17

Python 3.x

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

0グッド

0クリップ

投稿2018/12/03 13:22

入力した実数の平均を表示
0またはEnterのみでデータ入力終了
データが全く入力されなかったら「データがありません」と表示する

list=[]
while True:
i=input("実数:")
if len(i)==0:
break
data.append(int(i))
n=len(list)
s=sum(list)
print(s/n)
if(len(list)==0):
print("データがありません")

0またはEnterのみでデータ入力終了の、0の表現の仕方と、
実数のリストを作る必要があるのか、疑問です。
他に良い方法がありましたら教えてください。
ちなみにこのコードではまともに作動しませんでした。

エラーメッセージ

AttributeError Traceback (most recent call last)
<ipython-input-12-e8b5c2d6c8c6> in <module>()
7 if len(i)==0:
8 break
----> 9 data.append(int(i))
10 n=len(list)
11 s=sum(list)

AttributeError: 'int' object has no attribute 'append'

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

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

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

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

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

can110

2018/12/03 13:42

インデントがなくなっているので、ソースコードはコードブロックで囲んでください。
guest

回答2

0

ベストアンサー

適当にインデントを付けて動かしてみましたが、質問文の通りのエラーは再現できません。dataは定義されていない、というエラーが出ると思います。

実行環境がJupyter Notebookっぽいので、過去に定義した変数が残っているのだと思います。デバッグが困難になるので、このようなプログラムであれば.pyファイルに書いてコンソールなどから実行することをおすすめします。

can110さんが回答されている通りlistに入れなくても書けますが、あえてlistに入れる方針で書くとしたら、こんな感じでしょう。

python

1lst = [] 2while True: 3 s = input() 4 if s == "" or s == "0": 5 break 6 else: 7 lst.append(int(s)) 8 9if len(lst) == 0: 10 print("データがありません") 11else: 12 print(sum(lst)/len(lst)) 13

なお、listなど組み込みの型・関数などにかぶる変数名を使うとトラブルのもとになりますので、避けることをおすすめします。

投稿2018/12/03 20:35

hayataka2049

総合スコア30933

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

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

guest

0

0またはEnterのみでデータ入力終了の、0の表現の仕方と、

入力値はすぐに必要になるので、まず実数値に変換して、その数値が0なら終了と判断すればよいです。

実数のリストを作る必要があるのか、疑問です。

必要ありません。平均合計/個数で求めますよね。
なので入力値の合計と、入力された数値の個数だけを変数として保持しておけばよいです。

投稿2018/12/03 13:47

can110

総合スコア38234

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問