我有这个python循环,我一直得到错误的值。我想在这个循环中实现的是,当代码运行时,要求用户使用这些变量输入两个变量(variable1,变量2),一个从变量2开始的循环
代码可以自由地建议我做什么或怎么做
from math import pi, sqrt
def equation(variable1,variable2):
calculation = ((sqrt(2)*variable1**(2*variable2+1))/(3*pi))*q(k=variable2)
for i in range (variable2,0,-1):
calculation = calculation + calculation
print calculation
def main():
variable2 = (input("Enter a Number for variable2: "))
variable1 = (input("Enter a Number for variable1: "))
return equation(variable1,variable2)
main()
更新:q(k)用于此代码块中不需要的另一个计算
答案 0 :(得分:1)
我强烈建议你更清楚自己想要什么,不幸的是你的描述并不清楚。
这就是我想要的你想要的东西:
from math import pi, sqrt
def equation(variable1, variable2):
return ((sqrt(2) * variable1 ** (2 * variable2 + 1)) / (3 * pi)) * q(k=variable2)
def calc_final_result(variable1, variable2):
final_result = 0
while(variable2 > -1):
final_result += equation(variable1, variable2)
variable2 -= 1
return final_result
def main():
variable2 = (input("Enter a Number for variable2: "))
variable1 = (input("Enter a Number for variable1: "))
return calc_final_result(variable1, variable2)
if __name__ == '__main__':
main()
答案 1 :(得分:0)
如果我理解正确的话:
from math import pi, sqrt
def equation(variable1,variable2):
calculation = ((sqrt(2)*variable1**(2*variable2+1))/(3*pi))*q(k=variable2)
while variable2 >0:
variable2 -= 1
calculation += ((sqrt(2)*variable1**(2*variable2+1))/(3*pi))*q(k=variable2)
return calculation
def main():
variable2 = (input("Enter a Number for variable2: "))
variable1 = (input("Enter a Number for variable1: "))
return equation(variable1,variable2)
print main()
虽然这当然只有在代码中的其他地方定义q()
时才会起作用,如我的评论中所述。您也可以使用for-loop / range版本(尽管使用xrange,因为您使用的是Python 2),然后您必须使用variable2
替换第二个计算行中的i
。您的主要问题似乎是您通过迭代基于variable2
的范围来思考,其值发生了变化(它没有)。