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)