If Function vs Statement

Q4 If Function vs Statement

def if_function(condition, true_result, false_result):
    """Return true_result if condition is a true value, and
    false_result otherwise.

    >>> if_function(True, 2, 3)
    2
    >>> if_function(False, 2, 3)
    3
    >>> if_function(3==2, 3+2, 3-2)
    1
    >>> if_function(3>2, 3+2, 3-2)
    5
    """
    if condition:
        return true_result
    else:
        return false_result
def with_if_statement():
    """
    >>> result = with_if_statement()
    2
    >>> print(result)
    None
    """
    if c():
        return t()
    else:
        return f()

def with_if_function():
    """
    >>> result = with_if_function()
    1
    2
    >>> print(result)
    None
    """
    return if_function(c(), t(), f())

def c():
    "*** YOUR CODE HERE ***"

def t():
    "*** YOUR CODE HERE ***"

def f():
    "*** YOUR CODE HERE ***"

刚开始刷CS61A,看到这道题有一丝的绝望,这才是Homework01啊,01就不会,后面该怎么办…
后来查了一下,终于搞清楚了。

思路

从逻辑上讲,with_if_statement和with_if_function是相同的。但是,从解释器的角度来看这两个函数,它们是不同的。

with_if_function函数使用一个调用表达式,它保证它的所有操作数子表达式在if_function应用于结果参数之前都会被计算。因此,即使c返回False,该函数t也会被调用。相比之下,如果返回 False,with_if_statement则永远不会调用。

代码

def c():
    "*** YOUR CODE HERE ***"
    return False

def t():
    "*** YOUR CODE HERE ***"
    print(1)

def f():
    "*** YOUR CODE HERE ***"
    print(2)

然后测试成功!

  • 6
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 这个错误提示是指在一个返回非 void 类型的函数中没有包含 return 语句。在函数执行完毕后,应该返回一个与函数声明中指定的类型相匹配的值,否则会出现编译错误。要解决这个问题,需要在函数中添加一个 return 语句,以返回正确的值。 ### 回答2: 这个错误通常出现在函数中没有包含return语句但返回值是非空的情况下。这个问题可能导致程序无法正常工作或者崩溃。 对于一个声明有返回类型而函数体中没有包含return语句的函数,编译器会认为函数执行完成后不会有返回值。但是,如果调用该函数时确实需要返回值,那么程序就会出现问题。 解决此问题的方法很简单,只需要在函数的所有可能的代码路径上都添加return语句即可。当然,在代码的逻辑上也需要确保函数的所有执行路径上都有返回值。 例如,以下代码段声明了一个返回整数的函数,但函数体中没有包含return语句: ``` int add(int a, int b) { int sum = a + b; printf("The sum is: %d\n", sum); } ``` 要解决这个问题,只需要在函数体的末尾添加一个return语句: ``` int add(int a, int b) { int sum = a + b; printf("The sum is: %d\n", sum); return sum; } ``` 如果函数中包含多个可能的返回值,那么就需要使用条件语句来确定哪个返回语句应该被执行。 总之,no return statement in function returning non-void这个错误的出现是因为函数的返回值类型已经指定,但在函数体中缺少必要的返回语句。确保函数的所有执行路径上都有正确的返回值,就可以解决这个问题。 ### 回答3: 在编程语言中,当定义一个非空函数时,我们需要在函数的最后使用return语句来返回函数值,以让计算机知道该函数的返回值是什么。然而,如果在一个非空函数中缺失了return语句,就会引发“no return statement in function returning non-void”(非空函数缺失return语句)的错误。 这个错误一般出现于当我们定义函数时,我们会在函数头部指明该函数的返回类型(即在函数名之前的类型,例如int、float等等),但我们在函数中却没有给出return语句。这会使得编译器在编译过程中找不到该函数的返回值,从而导致编译错误。 解决该错误的方法是,在函数末尾给出return语句,并在其中返回该函数应该返回的值。如果我们在函数中定义了多个返回点(例如if...else语句块),那么我们需要保证每一个返回点都有一个对应的return语句。 此外,当我们在函数定义时使用了void关键字来表示该函数没有返回值,那么即使我们没有在函数中使用return语句,也不会出现该错误,因为编译器知道该函数没有返回值。 总之,我们需要在定义函数时清楚地指明函数的返回类型,并在函数中正确地使用return语句来避免出现“no return statement in function returning non-void”错误。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值