1
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 \

该程序工作得很好。我是在引起某种矛盾的陈述还是什么?我看不到。

4

2 回答 2

1

您在该行中缺少右括号:

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

它应该是

(red_percentage > ((blue_percentage / 4.35)-1)) and \
#                                             ^
于 2012-06-17T21:34:56.583 回答
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 语句中使用你的大表达式,而无需更改代码中的任何内容并轻松摆脱\字符 - 它们有时可能是另一个问题来源。

于 2012-06-17T21:35:01.920 回答