如何使用IF语句编写两个变量的函数

时间:2019-06-03 14:12:23

标签: python function if-statement

我正在尝试编写一个两个变量的方程式来评估一个假设的速度,如果布尔运算符是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,则不返回任何值。 :/

3 个答案:

答案 0 :(得分:2)

  1. 您不需要第一个其他陈述。这:
if y == 1:
    x = x - 5
else:
    x = x

等于:

if y == 1:
    x = x - 5

  1. 好像缩进不正确。 Python非常依赖它,因此您应该始终检查代码缩进。代替这个:
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')

  1. 逻辑错误。在这里:elif x > 60 or x <=80:检查x> 60或x <= 80。这将永远是真的。将or替换为and,此if语句将很有意义。

  1. 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))