0

何が悪いのかわからない。左側に x*x 、右側に 25 を入力すると、機能しません。Python シェルにはエラーは表示されませんが、ソリューションの量を入力しても何も起こりません。無限ループになっているか、各実行後に x を適用していない可能性があると思います。助けてください!これが私のコードです:

#getting input information

print
print "This program cannot solve for irrational or repeating numbers. Please round for them in your equation."
print
print "Make the variable in your equation stand for x"
print
startingLimit=int(raw_input("What is the lowest estimate that your variable could possibly be?"))
print
wholeNumber=raw_input("Do you know if your variable will be a whole number or a fraction? Answer: yes/no")
if (wholeNumber== "yes"):
     print
     fraction= raw_input("Is it a decimal/fraction? Answer:yes/no")
     if (fraction=="yes"):
        print
        print "This program will only calculate up to the fourth place to the right of the decimal"
        xfinder=0.0001
    else:
        xfinder=1
else:
    xfinder=0.0001

x=0        
leftEquation=raw_input("Enter your left side of the equation:")
print
rightEquation=raw_input("Enter the right side of the equation:")
print
amountSolutions=raw_input("How many solutions are there to your equation? (up to 20)")



#solving

indivisualCount=0
count=0
x=startingLimit
while (count!=amountSolutions):


    while (count==0):
        ifstuffleft=eval(leftEquation)
        ifstuffright=eval (rightEquation)
        if (ifstuffleft!=ifstuffright):
            x=x+xfinder
        else:
            a=x
            count=count+1
4

2 に答える 2

2
  1. なぜ内側のwhile (count==0):whileループがあるのですか?これにより、0に等しくなくなるとwhile (count!=amountSolutions):すぐに(ループ内の)無限ループでスタックします(その内側のwhileループには決して入らないため)。count

  2. x=x+xfinderそれを修正したら、値が互いに等しい場合は実行しないことに注意してください。つまり-5、ソリューションの数を満足するまで、同じ値(この場合)を維持します。xfinderしたがって、値が等しいかどうかによって値を増やす必要があります。

  3. ソリューションを印刷したり、それを使って何かをしたりすることは決してありません。あなたはおそらくそのa=x行を次のように置き換えたいでしょうprint "One solution is", x

最後に、質問を投稿するときは、最小限の例を目指して努力する必要があります。すべての入力コードは、次のように5つの変数をハードコーディングすることで置き換えることができます。

startingLimit = -10
xfinder = 1
leftEquation = "x*x"
rightEquation = "25"
amountSolutions = 2

これにより、a)必要なコード行が23行少なくなり、質問が読みやすく理解しやすくなります。b)テストが簡単になり、6つの質問に答えなくても問題を確認できるようになります。また、c)回答者が何を入力したかを推測する必要がなくなります。startingLimitおよびamountSolutions

于 2012-10-17T01:24:09.030 に答える
0

に以外の値1 が指定されamountSolutionsている場合、このコードは無限ループに入ると思われます。

while (count!=amountSolutions):
    while (count==0):

上記では、1つの解決策が見つかるcount = 1と、内側のwhileループがスキップされます。

于 2012-10-17T01:24:21.907 に答える