无效的语法?

时间:2013-11-21 04:29:24

标签: python syntax-error

我很遗憾基本语法错误,但我看不到它。思考?它标记为###< ---

通过辅助文件调用此函数,在主文件中循环为true。它会一直运行,直到下面发现错误。

def simulateTree():

建立var。

    age = 0
    avg_lifespan_tree = 3
    life_expectancy = random.normalvariate(avg_lifespan_tree, 1)

设置条件while循环

    while (age < life_expectancy):
            age = age + 0
            sigma = 1
            mu_d = .1
            d_growth = float (abs (random.normalvariate(mu_d, sigma)))
            d0 = 0
            return age

定义增长计算器

            def growth_calculate(sigma, d_growth, d0):

                    yearly_growth = age * (height_growth() + d_growth())
                    growth = 0 + yearly_growth

定义身高计算器

                    def height_growth(sigma, d_growth, d0):

                            diameter = d0 + d_growth
                            b1 = .35          
                            b2 = .25
                            b3 = .35
                            e_pow = - b2 * diameter
                            e  = math.pow(math.e, e_pow)
                            e_1 = 1 - e
                            e_2 = math.pow(e_1, b3)
                            return (e_2*b1), diameter

                    h = growth_calculate(sigma, mu_d, d0)

错误如下。我把整个事情都附在了上下文中。

                    def carbon_calc(h,diameter):
                            if (diameter<11):
                                    w = .25
                                    return w
                            else (diameter>=11):   ### <---invalid syntax error here
                                    w = .15
                                    return w

                            weight_above_ground = w * diameter * diameter  * h 

                            weight_total = 1.2 * weight_above_ground
                            weight_dry =weight_total * .725
                            weight_carbon = weight_dry * .5
                            C = weight_carbon * 3.6663

                            return C

我添加了一些多余的文本来达到堆栈溢出的目标,即使这个问题很简单直接。这是一个可变定向设计的问题。我添加了一些多余的文本来达到堆栈溢出的目标,即使问题很简单直接。这是一个可变导向设计的问题。我添加了一些多余的文本来达到堆栈溢出的目标,即使问题是简单和直接的。这是一个可变导向设计的问题。我添加了一些多余的文本来达到堆栈溢出的目标,即使问题是简单和直接的。这是一个可变导向设计的问题。我添加了一些多余的文本来达到堆栈溢出的目标,即使问题是简单和直接的。这是一个可变导向设计的问题。我添加了一些多余的文本来达到堆栈溢出的目标,即使问题是简单和直接的。这是一个可变导向设计的问题。我添加了一些多余的文本来达到堆栈溢出的目标,即使问题是简单和直接的。这是一个可变导向设计的问题。我添加了一些多余的文本来达到堆栈溢出的目标,即使问题是简单和直接的。这是一个可变导向设计的问题。我添加了一些多余的文本来达到堆栈溢出的目标,即使问题是简单和直接的。这是一个面向可变设计的问题。

1 个答案:

答案 0 :(得分:6)

你很接近,你需要的不是else,而是elif。改变它,你就完成了!

为什么?

因为else不接受条件参数。当其他条件都是False时,它的块中的代码将被运行。好吧,elif确实如此,这就是你想要的。

你可以这样做:

elif (diameter>=11):
     w = .15
     return w

或者:

else: #d is not < 11, so it must be >= 11
     w = .15
     return w

参考:http://docs.python.org/2/reference/compound_stmts.html#else

希望这有帮助!