我正在尝试编写一个两个变量的方程式来评估一个假设的速度,如果布尔运算符是true,则布尔运算符会将速度降低5。根据速度和布尔运算符,方程式应显示“无票”,“小票”或“大票”。
我首先尝试将其编写为lambda表达式,但发现lambda表达式必须为一行。然后,我用一个x变量将其写为一个正则表达式,并且效果很好。添加Y变量后,该函数停止工作。我不知道我是否将x定义错误,是否无法像我尝试的那样做嵌套IF,或者这是否需要两个函数。任何帮助,将不胜感激! :)
def caught_speeding(x,y):
if y == 1:
x = x - 5
else:
x = x
if x <= 60:
return print('No Ticket')
elif x > 60 or x <=80:
return print('Small Ticket')
elif x >= 81:
return print('Big Ticket')
caught_speeding(100,0)
我没有收到任何错误消息。如果我设置y = 1,则始终返回“小票”;如果我设置y = 0,则不返回任何值。 :/
答案 0 :(得分:2)
if y == 1:
x = x - 5
else:
x = x
等于:
if y == 1:
x = x - 5
def caught_speeding(x,y):
if y == 1:
x = x - 5
if x <= 60:
return print('No Ticket')
elif x > 60 or x <=80:
return print('Small Ticket')
elif x >= 81:
return print('Big Ticket')
您应该有这个:
def caught_speeding(x,y):
if y == 1:
x = x - 5
if x <= 60:
return print('No Ticket')
elif x > 60 or x <=80:
return print('Small Ticket')
elif x >= 81:
return print('Big Ticket')
elif x > 60 or x <=80:
检查x> 60或x <= 80。这将永远是真的。将or
替换为and
,此if语句将很有意义。return
语句返回您在该词之后编写的值。但是print(...)
返回None
,所以行return print(...)
是无用的,因为它总是返回None
。 Python函数不需要return
,而只能使用print
。或者,您只能使用return
,然后打印函数的结果。这取决于您的需求。这是结果代码:
def caught_speeding(x,y):
if y == 1:
x = x - 5
if x <= 60:
print('No Ticket')
elif x > 60 and x <=80:
print('Small Ticket')
elif x >= 81:
print('Big Ticket')
caught_speeding(100,0)
Big Ticket
答案 1 :(得分:2)
由于缩进,第二个if语句仅在else:子句上执行(缩进级别必须与函数中的第一个if语句相同。另外,您不应该返回并在同一行上打印。因此,在这种情况下,我们将返回一个String,然后在调用它的函数之外,最后打印返回的String。
这是您的代码的更正版本:
def caught_speeding(x,y):
if y == 1:
x = x - 5
else:
x = x
if x <= 60:
return 'No Ticket'
elif x > 60 or x <=80:
return 'Small Ticket'
elif x >= 81:
return 'Big Ticket'
print (caught_speeding(100,0))
print (caught_speeding(100,1))
答案 2 :(得分:2)
L,我建议您这样编写函数:
def caught_speeding(x,y):
if y == 1:
x = x - 5
if x <= 60:
return 'No Ticket'
elif x > 60 and x <= 80:
return 'Small Ticket'
return 'Big Ticket'
并这样称呼它:
#Either by assignment:
result = caught_speeding(100,0)
#Or print the result:
print(caught_speeding(100,0))