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

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

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

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

Q&A

解決済

3回答

384閲覧

Python3で算出プログラムを作りたい エラーの意味が分からないです…。

Jil

総合スコア5

Python

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

0グッド

0クリップ

投稿2020/02/13 14:33

編集2020/02/13 14:48

閲覧ありがとうございます。
Python3で算出プログラムを作成しているのですが、うまくいかなくて困っています。

【課題】
血漿成分(mL):0.5×体重(㎏)×熱傷面積(%)
電解質(mL):1.5×体重(㎏)×熱傷面積(%)
輸液量(mL):一律2000mL

患者A:体重77kg、熱傷面積20%
患者B:体重50kg、熱傷面積15%
患者C 体重65kg、熱傷面積13%
……

入力エリアに
A,77,20 
B,50,15
C,65,13 というように入力して、

出力エリアに、
患者〇、血漿成分(mL)、電解質(mL)、輸液量(mL)と出力されるようにしたいのですが、うまくいきません。

以下、私自身で作成してみたものです。

python3

1コード 2import sys 3for line in sys.stdin.readlines(): 4 data=line.rstrip().split(",") 5 kessyou=0.5*str(data[1])*str(data[2]) 6 denkaishitsu=1.5*str(data[1])*str(data[2]) 7 yueki=str(kessyou)+str(denkaishitsu)+2000 8 print("患者"+data[0]+","+"血漿成分"+str(kessyou)+"(mL),"+"電解質"+str(denkaishitsu)+"(mL),"+"輸液量"+str(yueki)+"(mL)") 9

error

1コード 2Traceback (most recent call last): 3 File "Main.py", line 7, in <module> 4 kessyou=0.5*str(data[1])*str(data[2]) 5TypeError: can't multiply sequence by non-int of type 'float' 6 7

リストや標準入力を使ったプログラムを作りたいのですが、アドバイスお願いいたします。

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

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

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

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

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

y_waiwai

2020/02/13 14:41

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

2020/02/13 14:42

改善できていません。デフォルトで「コード」と書かれている部分にコードを書かないといけません。編集画面でプレビューが見れるはずなので確認しながらご記入をお願いします。
Jil

2020/02/13 14:44

これであっているか分からないのですが、変更してみました。 不備があったら、教えてくださいm(__)m
Jil

2020/02/13 14:49

これで大丈夫でしょうか⁇ プログラミング、全くの初心者でこの課題がでて、苦戦しています… paizaの動画を見ても分からなくて…m(__)m
hayataka2049

2020/02/13 15:08

修正はそれでいいと思いますが、BAはotnさんかcan110さんが適当では?
guest

回答3

0

ベストアンサー

このエラーは,

python

1kessyou=0.5*str(data[1])*str(data[2])

の中の

str(data[1])

はdata[1]を文字列型(string型)に変換しており,「文字列×小数」の計算はできないというエラーですね.

python

1kessyou=0.5*float(data[1])*float(data[2])

で動くと思います.

投稿2020/02/13 14:50

編集2020/02/13 15:41
ike-0315

総合スコア30

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

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

can110

2020/02/13 15:00 編集

dataリストの要素の型は文字列なのでは? これ、エラー出ませんか?
hayataka2049

2020/02/13 15:12

> str()は整数型(int型)から文字列型(string型)に変換する関数だから 別にint型でなくてもstr型には変換できますし、というかPythonのオブジェクトでstrに変換できないものは作らない限りありません。ついでに言えばこれはそもそも関数ですらありません。 そして sys.stdin.readlines()で読んだ行を文字列メソッドで処理しているので、dataはきっとstrを要素に持つlistになっており(Python3前提とさせてください)、strを外しても状況は何も改善していません。
ike-0315

2020/02/13 15:32

本当ですね…大変失礼致しました。 Jilさん、BA変更していただけますか?
guest

0

  • 文字列を数値として演算したいのであればstr(~)ではなくint(~)float(~)なりで数値に変換する必要があります。
  • 数値を文字列として演算(足したい)のであればstr(~)なりで文字列に変換する必要があります。

結果としては以下が得られるかと思います。

患者A,血漿成分770.0(mL),電解質2310.0(mL),輸液量5080(mL) 患者B,血漿成分375.0(mL),電解質1125.0(mL),輸液量3500(mL) 患者C,血漿成分422.5(mL),電解質1267.5(mL),輸液量3689(mL)

投稿2020/02/13 14:43

can110

総合スコア38262

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

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

0

文字列に掛け算はできません。
float(~~)で数値化してください。

というか、str(~~)ってなんだと思っていますか?

投稿2020/02/13 14:40

otn

総合スコア84533

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問