Pythonで分数を入力として受け取り、その分数の値を算術演算に使用するにはどうすればよいですか?
Aug 24 2020
これが私の問題を説明するために作ったサンプルコードです。入力が整数または小数の場合、意図したとおりに機能します。ただし、入力が4/5などの小数部の場合、4/5はfloatに変換できない文字列であるため、ValueErrorがスローされます。
myinput=input("Enter number. ")
doubleofmyinput=float(myinput)*2
print(doubleofmyinput)
input()
float( "4.5")とfloat(4.5)の両方が有効であるのに対し、float( "4/5")は機能しないのに対し、float(4/5)は機能するため、使用しない場合は問題になりません。ありがとう。
回答
1 wp-overwatch.com Aug 24 2020 at 12:09
分数ライブラリを使用すると、次のことができます。
import fractions
myinput = input("Enter number. ")
try:
if not myinput.isnumeric():
myinput = fractions.Fraction(myinput)
except ValueError:
throw ValueError(myinput + " is not a number")
doubleofmyinput=float(myinput)*2
print(doubleofmyinput)
1 sabik Aug 24 2020 at 11:58
入力を受け入れるのにどれだけ寛大になりたいですか?
それだけで下品な画分(または混合画分)だ場合は、そのための特別なケースを持つことができ、いずれかを使用して.split('/')
そのコンポーネント部分に入力された文字列を分割するか、正規表現、個別に変換し、その後にそれらを一緒に入れてfloat
、DecimalまたはA Fraction(必要な、または許容できる丸め動作の種類によって異なります)。
より一般的に任意の式を受け入れたい場合は、それを行うためのライブラリを探すのがおそらく最善です。簡単なグーグルはsimpleevalを提案します、しかしおそらく他のものがあります。
1 hypnos Aug 24 2020 at 14:16
値を分数として入力するだけで、分数として表示したくない場合は、evalを使用することをお勧めします。
myinput=float(eval(input("Enter number. ")))
doubleofmyinput= myinput *2
print(doubleofmyinput)