今日、私はPythonで簡単な方程式を解くことについての簡単なプロジェクトを作成しました。このような
linear="30=10x-20"
#c=bx+a or a+bx=c
a=0
c=0
b=0
split=linear.split("=")
if len(split[0])==1 or len(split[1])==1 :
c=int(split[0]) if len(split[0])==1 else int(split[1])
if len(split[0])>1 or len(split[1])>1 :
b=int(split[0][:linear.index("x")]) if len(split[0])>1 else int(split[1][:linear.index("x")])
a=int(split[0][linear.index("x")+1:] if len(split[0])>1 elseint(split[1[linear.index("x")+1:]))
total=(c-a)/b
print(total)
したがって、最初に「=」の間の文字列を区切ります。次に、分離の部分を分析して、a、b、cの値を取得します。その後、エラーが発生しました。これを修正するにはどうすればよいですか?ありがとうございました。
a = int(split [0] [linear.index( "x")+ 1:] if len(split [0])> 1 else int(split [1] [linear.index( "x")+ 1: ]))ValueError:基数10のint()のリテラルが無効です: ''
ifステートメントとelseステートメントが混乱しているのは、このエラーが発生している可能性があるためです。Pythonで正規表現を学ぶと、状況はもっと簡単になります。
私は与えられた線形方程式で試しました。参考にしてください。
import re
equation = '30=10x-20'
#Checking 'c = bx+a' or 'bx+a = c'
x = re.match('[0-9]+=[0-9]+x+?-?[0-9]+',equation)
if x:
#print('True')
output_1 = equation.split('=')
c = int(output_1[0])
print('c = ',c)
# checking the operator between bx and a
#rhs = '[0-9]+x+?[0-9]+'
y = re.match('[0-9]+x-?[0-9]+',output_1[1])
if y:
#filter_b = ['x']
output_2 = output_1[1].split('-')
a = int(output_2[1])
b = int(output_2[0].replace("x",""))
print('a = ',a)
print('b = ',b)
else:
print('False')
else:
print('False')
回答:
c = 30
a = 20
b = 10
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加