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

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

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

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

Q&A

1回答

1397閲覧

半角スペース区切りの足し算

mekw_23

総合スコア1

Python

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

0グッド

0クリップ

投稿2021/07/22 00:00

編集2021/07/22 01:07

raw_data=input("Please input data:")
print(raw_data)
data=raw_data.split(" "or"/"or",")
print(data)
N=len(data)
for i in range(N):
data[i]=float(data[i])
print(data)
S=sum(data[i])
print(S)
A=sum(data[i])/len(data)
print(A)

半角スペース区切りで一括入力したいです。
標準入力した数値データの合計と平均を表示したいのですが、3つ以上入力すると、長いエラーが出て、2つ以下だと
TypeError: float() argument must be a string or a number, not 'list'というエラーが出てしまいます。
先月からプログラミングを始めました。至らない点も多いと思いますが、ご回答
お願いいたします。

jupyterhubで行っています。python3です。

raw_data=input("Please

1print(raw_data) 2data=raw_data.split(" ") 3print(data) 4N=len(data) 5for i in range(N): 6 data=float(data) 7print(data) 8S=sum(data) 9print(S) 10A=sum(data)/len(data) 11print(A)``

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

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

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

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

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

y_waiwai

2021/07/22 00:07

このままではコードが読めないので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
meg_

2021/07/22 00:25

インデントの付いたコードを掲載してください。
udon-ken

2021/07/22 00:34 編集

パッと見た感じだけでいうと、 S=sum(data[i]) sumはリスト等の要素の値を合計する関数ですが、data[i]はリストなのでしょうか? リストでないなら当然合計できません(というかfloatであるからダメとエラーメッセージに明確に書かれています)。
meg_

2021/07/22 00:38 編集

エラー発生時の入力データは何でしょうか?また、想定されるprint(A)の値は何でしょうか?
mekw_23

2021/07/22 00:38

1 2 3です。
mekw_23

2021/07/22 01:35

import re raw_data=input("Please input data:") print(raw_data) data=re.split("[/, ]",raw_data) print(data) 前半部分はこんな感じでしょうか??
jbpb0

2021/07/22 01:41

実際に実行して確認してみてください 数値の区切りに、その3種類の組み合わせをいろいろ使っても、 print(data) の結果が、意図通りに数値が分離されてれば、合ってます
jbpb0

2021/07/22 01:48 編集

ちなみに、区切り文字を二個以上連続して入力するのなら、やり方変わります たとえば、下記のような入力をするかどうか 1//2 下記も、カンマとスペースを連続入力という扱いになる 1, 2 とりあえずは、区切り文字は1個だけという前提で、後半含めてちゃんと動くものを作ってから、その先さらに改良するかどうかを考えたらいいと思いますけど
mekw_23

2021/07/22 01:50

そうなんですね、確認やってみましたが、できませんでした。 こんどは空白でも、/ ,でもできなくなりました。
jbpb0

2021/07/22 02:01 編集

当方で、下記だけ実行しましたけど、ちゃんと数値は分離されますよ (区切り文字を2個以上連続入力しない場合) import re raw_data=input("Please input data:") print(raw_data) data=re.split("[/, ]",raw_data) print(data) 以下、実行例 Please input data:1,2 3/4 1,2 3/4 ['1', '2', '3', '4']
mekw_23

2021/07/22 02:02

1,4,2 と打ち込んだところ下記のようなものが出てきてしまいました。--------------------------------------------------------------------------- KeyboardInterrupt Traceback (most recent call last) <ipython-input-56-8ab013473c21> in <module> 1 import re ----> 2 raw_data=input("Please input data:") 3 print(raw_data) 4 data=re.split("[/, ]",raw_data) 5 print(data) /usr/local/anaconda3/lib/python3.8/site-packages/ipykernel/kernelbase.py in raw_input(self, prompt) 858 "raw_input was called, but this frontend does not support input requests." 859 ) --> 860 return self._input_request(str(prompt), 861 self._parent_ident, 862 self._parent_header, /usr/local/anaconda3/lib/python3.8/site-packages/ipykernel/kernelbase.py in _input_request(self, prompt, ident, parent, password) 902 except KeyboardInterrupt: 903 # re-raise KeyboardInterrupt, to truncate traceback --> 904 raise KeyboardInterrupt("Interrupted by user") from None 905 except Exception as e: 906 self.log.warning("Invalid Message:", exc_info=True) KeyboardInterrupt: Interrupted by user
jbpb0

2021/07/22 02:13 編集

raw_data=input("Please input data:") だけにして実行しても、そのエラー出ます? もし出るなら、Jupyterで実行してるようなので、一度Jupyterを落として、再度起動し直してみてください
mekw_23

2021/07/22 02:24

in[*]となって動かない状況です。 ご迷惑をおかけしてすみません。
jbpb0

2021/07/22 02:32 編集

Jupyterをブラウザ側を完全に落として、ブラウザを終了させて、 jupyter notebook みたいにして起動したターミナル側でも「Control-C」でjupyterカーネルを完全に落として、それから改めてターミナルでJupyterを起動して、新しいノートブックを作って、 print("test") だけ入力して実行しても、ダメですか? もしそれでもダメなら、パソコンを再起動させてみてください
mekw_23

2021/07/22 03:08

入力できました。ありがとうございます。
jbpb0

2021/07/26 02:57

> 入力できました。 print(data) の結果が、意図通りに数値が分離されてれば、後半のコードをドッキングさせたら、質問は解決すると思いますが、いかがでしょうか? もちろん後半のコードには、meg_さんの回答の内容(それのコメントに私が書いた内容も)を反映させる必要があります
guest

回答1

0

現状、エラーが出ている箇所のdata[i]dataに変更すれば良いです。
しかし、下記を満たすには他にも修正が必要です。

半角スペース、、半角スラッシュ、半角カンマ区切りで一括入力したいです。

標準入力した数値データの合計と計算を表示したい

それについては質問者さんにてもう一度考えてみてください。

投稿2021/07/22 00:46

meg_

総合スコア10718

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

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

jbpb0

2021/07/22 01:29 編集

質問者さん forループの中は、 > data[i]をdataに変更 をやったらダメです data[i] じゃなければ、わざわざ「i」を変えながらループを回す意味がない
mekw_23

2021/07/22 01:28

そうなんですね!ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.37%

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

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

質問する

関連した質問