我正在尝试解决this CodingBat问题:
喜欢派对的松鼠聚在一起抽烟雪茄。只有当工作日的雪茄数量在40到60之间时,这样的一方才被认为是成功的。然而,在周末,雪茄的数量没有上限。编写一个函数,如果具有给定值的一方成功,则返回True。
不幸的是,虽然我偶尔会使用Python,但我还不够理解我的代码在第5行出现语法错误的原因:
def cigar_party(cigars, is_weekend):
if is_weekend:
if cigars >= 40:
return True
else if:
cigars >= 40 and cigars =< 60:
return True
else:
return False
答案 0 :(得分:5)
在Python中,您需要使用elif
而不是else if
。
更多信息: http://docs.python.org/2/tutorial/controlflow.html
同时更改以下行:
else if:
cigars >= 40 and cigars =< 60:
对此:
elif cigars >= 40 and cigars <= 60:
return True
小于或等于符号必须为<=
且关键字elif与表达式的其余部分之间不应有冒号。
答案 1 :(得分:1)
首先,正如tcdowney指出的那样,语法是elif,否则,如果第二,你需要在elif语句中使用逻辑assessent,而不是某种操作。最后,在等号前面加上greaterthan / smallerthan符号。
elif cigars >= 40 and cigars <= 60:
return True
应该这样做;)
答案 2 :(得分:1)
def cigar_party(cigars, is_weekend):
a = range(61)
if is_weekend and cigars not in a:
return True
elif cigars in range(40,61):
return True
else:
return False
答案 3 :(得分:1)
def cigar_party(cigars, is_weekend):
if is_weekend and cigars>=40:
return True
elif not is_weekend and cigars in range(40,61):
return True
return False
答案 4 :(得分:0)
def cigar_party(cigars, is_weekend):
if is_weekend:
return cigars >= 40
return 40 <= cigars <= 60 // Python supports this type of Boolean evaluation
或使用三元形式:
def cigar_party(cigars, is_weekend):
return cigars >= 40 if is_weekend else 40 <= cigars <= 60
答案 5 :(得分:0)
def cigar_party(cigars, is_weekend):
if is_weekend:
if cigars>=40:
return is_weekend
else:
if cigars in range(40,61):
return True
return False
答案 6 :(得分:0)
def cigar_party(cigars, is_weekend):
if is_weekend == True:
if cigars >= 40:
return True
else:
return False
if is_weekend == False:
if cigars >= 40 and cigars <= 60:
return True
else:
return False
答案 7 :(得分:0)
#got 9/12 not bad!
is_weekday = True
is_weekend = True
def cigar_party(cigars, is_weekend):
if is_weekend and cigars >= 0:
return True
elif is_weekday and cigars >= 40:
return True
else:
return False
答案 8 :(得分:-1)
create or alter TRIGGER Sales.bonus_reminder
ON Sales.SalesPersonQuotaHistory
WITH ENCRYPTION
AFTER INSERT, UPDATE
AS RAISERROR ('Notify Compensation', 16, 10)