此代码中导致脚本错误的是什么?

时间:2012-06-17 21:32:40

标签: python

if (blue_percentage > (red_percentage * 0.49)) and \
   (red_percentage < ((blue_percentage / 1.44) + 1)) and \
   (red_percentage > ((blue_percentage / 4.35)-1) and \
   (blue_decimal > green_decimal) and \
   (red_decimal > green_decimal):
    print "<div>The hue is: <b>Purple</b>.</div>"

它说

:

语法无效。

如果我拿出这条线

       (red_percentage > ((blue_percentage / 4.35)-1) and \

该程序运行正常。我是否会引起某种矛盾的陈述?我看不到它。

2 个答案:

答案 0 :(得分:1)

您在该行中错过了右括号:

(red_percentage > ((blue_percentage / 4.35)-1) and \

应该是

(red_percentage > ((blue_percentage / 4.35)-1)) and \
#                                             ^

答案 1 :(得分:1)

  (red_percentage > ((blue_percentage / 4.35)-1) and 

缺少结束)

如果一个人更熟悉代码/应用程序,可以更多地简化这个大表达式,但是现在,只是作为一种简单的方法来打破这个并使其更易于管理,你可以尝试下面显示的内容

请注意,我将整个表达式放在括号中消除需要PEP-8建议的那些令人讨厌的\行继续标记。

注意:我不是说这是一个理想的解决方案,只是一种管理复杂性的方法,直到你能找到一种更好的方法来分解相关的表达方式。

cond1 = blue_percentage > (red_percentage * 0.49)
cond2 = red_percentage < ((blue_percentage / 1.44) + 1)
cond3 = red_percentage > ((blue_percentage / 4.35) - 1)

if (cond1 and cond2 and cond3 and 
    (blue_decimal > green_decimal) and  
    (red_decimal > green_decimal)):
    # do stuff ...

你可以在if语句中使用你的大表达式周围的( ),即使现在没有更改代码中的任何内容,也很容易摆脱\字符 - 它们可能是另一个来源有时会出现问题。