0

我不知道怎么了。当我在左侧输入 x*x 并在右侧输入 25 时,它不起作用。python shell没有显示错误,但是在我输入解决方案的数量后,什么也没有发生。我认为它可能处于无限循环中,或者每次运行后都没有应用 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循环?while (count!=amountSolutions):这将导致它一旦count不等于 0就会陷入无限循环(在循环中)(因为它永远不会进入那个内部 while 循环)。

  2. x=x+xfinder解决此问题后,请注意,如果值彼此相等,则不会执行。这意味着您将保持相同的值(在这种情况下-5),直到您满足解决方案的数量。xfinder因此,您必须通过值是否相等来增加值。

  3. 你永远不会打印解决方案或用它做任何事情。你可能想a=xprint "One solution is", x

最后,当你发布一个问题时,你应该争取一个最小的例子。您的所有输入代码都可以通过硬编码 5 个变量来替换,例如:

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

这 a) 需要减少 23 行代码,使您的问题更易于阅读和理解;b) 使测试更容易,因此人们无需回答六个问题即可看到问题;c) 避免回答者猜测您输入的内容startingLimitamountSolutions

于 2012-10-17T01:24:09.030 回答
0

1 如果给出除 for以外的任何值,amountSolutions则此代码似乎将进入无限循环。

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

在上面一旦找到一个解决方案,count = 1内部的 while 循环就会被跳过。

于 2012-10-17T01:24:21.907 回答