首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何用IF语句编写一个双变量函数

如何用IF语句编写一个双变量函数
EN

Stack Overflow用户
提问于 2019-06-03 14:12:23
回答 3查看 67关注 0票数 0

我试图写一个两个变量的方程来评估一个假设的速度和布尔运算符,如果是的话,它会将速度降低5。根据速度和布尔运算符的不同,该方程应打印“无票”、“小票”或“大票”。

我首先尝试将它写成lambda表达式,但发现lambda表达式必须是一行。然后,我把它写成一个普通表达式,用单个x变量,它工作得很好。在我添加Y变量后,函数停止工作。我不知道我是否定义错了x,是否不能像我正在尝试的那样执行嵌套IFs,或者这是否需要是两个函数。如能在这方面提供任何帮助,将不胜感激!)

代码语言:javascript
运行
复制
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,那么它不会返回任何东西。:/

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-06-03 14:21:54

  1. 你不需要第一个-陈述。这是:
代码语言:javascript
运行
复制
if y == 1:
    x = x - 5
else:
    x = x

等于:

代码语言:javascript
运行
复制
if y == 1:
    x = x - 5
  1. 看上去你的缩进不正确。Python在很大程度上依赖于它,因此您应该始终检查代码缩进。而不是这样:
代码语言:javascript
运行
复制
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')

你应该拥有这个:

代码语言:javascript
运行
复制
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-语句将有意义。
  2. return语句正在返回在这个单词之后写入的值。但是print(...)返回None,所以行return print(...)是无用的,因为它总是返回Nones。Python函数不需要returns,您可以只使用prints,也可以只使用return,然后打印函数的结果。这取决于你的需要。

以下是结果代码:

代码语言:javascript
运行
复制
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

票数 2
EN

Stack Overflow用户

发布于 2019-06-03 14:22:55

您的第二个if-语句只在else:子句上执行,因为您的缩进(它需要与函数中的第一个if-语句相同的缩进级别)。此外,您不应该返回和打印在同一行。因此,在本例中,我们返回一个字符串,然后在调用它的函数外部打印返回的字符串。

下面是您的代码的更正版本:

代码语言:javascript
运行
复制
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
EN

Stack Overflow用户

发布于 2019-06-03 14:38:40

卢,我建议你这样写你的函数:

代码语言:javascript
运行
复制
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'

就这样叫它:

代码语言:javascript
运行
复制
#Either by assignment:
result = caught_speeding(100,0)

#Or print the result:
print(caught_speeding(100,0))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56429121

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档