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

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

詳細はこちら
標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

Python

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

Q&A

解決済

2回答

1901閲覧

[Python]整数を逆数にできない

Yoshikita5412

総合スコア20

標準入力

標準入力(stdin)は、プログラムが標準的に用いるデータ入力元。リダイレクトしない限り、プログラムを起動した端末のキーボードが標準入力になります。UNIX系OSやC言語に実装されて普及した概念ですが、他のOSや言語も含めた総称としても使われます。

Python

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

0グッド

0クリップ

投稿2021/02/03 12:20

下記のfswを整数で入力したあと、Tsw=1/fswで逆数にしたいのですが、Resultに示した通りサポートされた演算子ではありませんというメッセージが出てしまいます。どうすればいいでしょう?

またついでにお聞きします。
今はコメントアウトで保留にしていますが、Vout>Vinのとき入力されたとき入力しなおしてもらうにはどうすればいいでしょうか?

Python

1 2import numpy as np 3import re 4import math 5 6#入力情報 7print('降圧コンバータの設計を行います') 8Vin=input('入力電圧は何V?---->') 9Vout=input('出力電圧は何V?---->') 10""" 11if Vin < Vout: 12 print('出力電圧は入力電圧よりも小さい値を指定してください') 13""" 14ε_=input('出力電圧変動率は何%?---->') 15""" 16if ε_ > 100 or ε_ < 0: 17 print('100未満の正の値を入力してください') 18""" 19fsw=input('スイッチング周波数は何Hz?---->') 20Rout=input('負荷は何Ω?---->') 21 22#各パラメータ計算 23Tsw=1/fsw 24ε=ε_/100 25Vout_max=Vout*(1+ε) 26Vout_min=Vout*(1-ε) 27delta_Vout=Vout_max-Vout_min 28Iout=Vout/Rout 29delta_Iout=Iout*(1+ε)-Iout*(1-ε) 30 31duty=Vout/Vin 32duty_min=Vout_min/Vin 33duty_max=Vout_max/Vin 34#里先生表2-3,2-4より。時定数は暫定的にTswの10倍 35τ=10*Tsw 36τ2=Tsw*duty*delta_Vout 37if τ2 > τ: 38 τ=τ2 39 40#トランスの巻数比を決める 41Ld=(Vin-Vout)*Tsw*duty/delta_Iout 42Cout=(1/8)*delta_Iout*Tsw/delta_Vout 43Cout2=(Ld*Iout*Iout)/(Vout*Vout) 44if Cout2>Cout: 45 Cout=Cout2 46Icout_rms=delta_Iout/sqrt(12) 47 48print("インダクタLd=",Ld) 49print("出力コンデンサCout=",Cout) 50

Result

1runfile('C:/Users/motch/Desktop/Python実習/20210130_必要に応じたPython/20210202_降圧コンバータ自動設計テスト1.py', wdir='C:/Users/motch/Desktop/Python実習/20210130_必要に応じたPython') 2降圧コンバータの設計を行います 3 4入力電圧は何V?---->100 5 6出力電圧は何V?---->5 7 8出力電圧変動率は何%?---->5 9 10スイッチング周波数は何Hz?---->100000 11 12負荷は何Ω?---->100 13Traceback (most recent call last): 14 15 File "<ipython-input-7-4dec5ab0b5c1>", line 1, in <module> 16 runfile('C:/Users/motch/Desktop/Python実習/20210130_必要に応じたPython/20210202_降圧コンバータ自動設計テスト1.py', wdir='C:/Users/motch/Desktop/Python実習/20210130_必要に応じたPython') 17 18 File "C:\Users\motch\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 827, in runfile 19 execfile(filename, namespace) 20 21 File "C:\Users\motch\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile 22 exec(compile(f.read(), filename, 'exec'), namespace) 23 24 File "C:/Users/motch/Desktop/Python実習/20210130_必要に応じたPython/20210202_降圧コンバータ自動設計テスト1.py", line 29, in <module> 25 Tsw=1/fsw 26 27TypeError: unsupported operand type(s) for /: 'int' and 'str'

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

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

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

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

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

guest

回答2

0

ベストアンサー

pythonの組み込み関数inputは、文字列を返します。詳細は(適当な解説ページではなく)公式のドキュメントを読みましょう。

組み込み関数 — Python 3.9.1 ドキュメント

こいつを数値(整数とか実数とか)にするのにも、組み込み関数intfloatを使います。上記のリンク先のページにどちらも解説があります。

というわけで、inputを使っていて、結果には数値を設定したい箇所のすべてを、int(input(...))なりfloat(input(...))なりに書き換えてください。

またついでにお聞きします。

今はコメントアウトで保留にしていますが、Vout>Vinのとき入力されたとき入力しなおしてもらうにはどうすればいいでしょうか?

入力処理をループさせて、望みの条件を満たしたときだけbreakで脱出するようにします。

Python

1print('降圧コンバータの設計を行います') 2while True: 3 Vin = int(input('入力電圧は何V?---->')) 4 Vout = int(input('出力電圧は何V?---->')) 5 if Vin >= Vout: 6 break 7 print('出力電圧は入力電圧よりも小さい値を指定してください')

ところで、ε_は0~100の値を入力させたあと、計算する前に100で割らなくていいんですかね。

投稿2021/02/03 13:18

Daregada

総合スコア11990

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

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

Yoshikita5412

2021/02/03 13:57

解決しました!!ありがとうございました!
guest

0

TypeError: unsupported operand type(s) for /: 'int' and 'str'

int と str のあいだでは / の演算子はサポートされてません、といってますね
文字列になってませんか。

投稿2021/02/03 12:24

y_waiwai

総合スコア88038

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

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

Yoshikita5412

2021/02/03 12:25

ご回答ありがとうございます。fswを入力したとき100000と入力していますが、これがもしかして文字列と認識されているのでしょうか??困るなあ
y_waiwai

2021/02/03 12:26

困るなら整数に変換しましょう
Yoshikita5412

2021/02/03 12:54

int(fsw)にしてみましたが、まだ同じメッセージが出ますね…
y_waiwai

2021/02/03 13:17

同じメッセージが出るなら間違ってます どこでどうしたんでしょうか
Yoshikita5412

2021/02/03 13:56

解決しました!ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問