首页 > 解决方案 > 如何使用 IF 语句编写两个变量函数

问题描述

我正在尝试编写一个两个变量方程来评估假设的速度和布尔运算符,如果为真,则将速度降低 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 那么它不会返回任何东西。:/

标签: pythonfunctionif-statement

解决方案


  1. 您不需要第一个 else 语句。这:
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。这将永远是真的。替换orand,这个 if 语句将有意义。

  1. return语句返回你在这个词之后写的值。但是print(...)返回None所以该行return print(...)是无用的,因为它总是会返回Nones。Python函数不需要returns,你可以只使用prints。或者你可以只使用returns 然后打印函数的结果。这取决于您的需求。

这是结果代码:

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


推荐阅读