python循环为每次迭代减少变量

时间:2015-03-01 17:57:04

标签: python loops for-loop

我有这个python循环,我一直得到错误的值。我想在这个循环中实现的是,当代码运行时,要求用户使用这些变量输入两个变量(variable1,变量2),一个从变量2开始的循环

  • 使用当前变量2进行计算
  • 将变量2的值减1并进行计算
  • 计算第一次+第二次
  • 的结果
  • 继续这样做,直到variable2为0,但也使用variable2 = 0
  • 添加计算总和

代码可以自由地建议我做什么或怎么做

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)用于此代码块中不需要的另一个计算

2 个答案:

答案 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的范围来思考,其值发生了变化(它没有)。