我试图写一个两个变量的方程来评估一个假设的速度和布尔运算符,如果是的话,它会将速度降低5。根据速度和布尔运算符的不同,该方程应打印“无票”、“小票”或“大票”。
我首先尝试将它写成lambda表达式,但发现lambda表达式必须是一行。然后,我把它写成一个普通表达式,用单个x变量,它工作得很好。在我添加Y变量后,函数停止工作。我不知道我是否定义错了x,是否不能像我正在尝试的那样执行嵌套IFs,或者这是否需要是两个函数。如能在这方面提供任何帮助,将不胜感激!)
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,那么它不会返回任何东西。:/
发布于 2019-06-03 14:21:54
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
s。Python函数不需要return
s,您可以只使用print
s,也可以只使用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
发布于 2019-06-03 14:22:55
您的第二个if-语句只在else:子句上执行,因为您的缩进(它需要与函数中的第一个if-语句相同的缩进级别)。此外,您不应该返回和打印在同一行。因此,在本例中,我们返回一个字符串,然后在调用它的函数外部打印返回的字符串。
下面是您的代码的更正版本:
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))
发布于 2019-06-03 14:38:40
卢,我建议你这样写你的函数:
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))
https://stackoverflow.com/questions/56429121
复制相似问题