python:下面这个语句返回值为啥是False:

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python:下面这个语句返回值为啥是False:相关的知识,希望对你有一定的参考价值。

sorted([1, 2, 3], reverse=True) == reversed([1, 2, 3])执行结果为Flase,前面打错了,不是返回值是执行结果

参考技术A '返回值:调用一个函数(包括自定义的),执行一系列语句,将一个结果返回给调用者
'比如
调用
自定义函数
myfun,可以得到两个数的和
private
sub
command1_click()
dim
s
as
single
s
=
myfun(2,
3)
'得到
2

3
的和
print
s
s
=
myfun(8,
3)
'得到
8

3
的和
print
s
end
sub
private
function
myfun(a
as
single,
b
as
single)
as
single
myfun
=
a
+
b
'返回

'
myfun
=
a
*
b'返回

end
function

为啥这个 if 语句不返回布尔值?

【中文标题】为啥这个 if 语句不返回布尔值?【英文标题】:Why isn't this if statement returning the boolean value?为什么这个 if 语句不返回布尔值? 【发布时间】:2019-10-04 08:24:51 【问题描述】:

我正在尝试制作一个程序,该程序将显示输入是否为完美数字,这意味着因素(不包括数字)加起来与该数字相同。 除了返回值之外,我还让它工作。 如果因素的总和等于输入的数字,我想返回 true,但它不会这样做。

我尝试在整个代码中移动 if 语句,但它在任何地方都不起作用。

public class Main 

public static void main(String[] args) 
    isPerfectNumber(28);


public static boolean isPerfectNumber(int number) 
    if (number < 1) 
        return false;
    
    int numberToTest = 1;
    int sumOfFactors = 0;

    while (numberToTest < number) 
        if (number % numberToTest == 0) 
            sumOfFactors += numberToTest;
        
        numberToTest++;
    

    if (sumOfFactors == number) 
        return true;
    else
        return false;
    

我希望当代码看到 sumOfFactors 将 sum= 与输入的数字相匹配时,我就会得到正确的语句,但是当这种情况发生时它不会返回 true。实际上,它没有返回任何内容,并声明没有使用返回的方法。

【问题讨论】:

能否将整个函数粘贴到问题中? 你怎么称呼它。 整个功能已经到位。 【参考方案1】:

它“不起作用”,因为您没有打印结果。

public static void main(String[] args) 
    isPerfectNumber(28);

应该是

public static void main(String[] args) 
    System.out.println(isPerfectNumber(28));

这是“真实的”。还有,

if (sumOfFactors == number) 
    return true;
 else 
    return false;

写的路很长

return sumOfFactors == number;

而且,如果您使用的是 Java 8+,您的 isPerfectNumber 方法可以编写为带有 IntStream 和类似 lambda 过滤器的单行器

public static boolean isPerfectNumber(int number) 
    return number >= 1 && IntStream //
            .range(1, number) //
            .filter(i -> number % i == 0) //
            .sum() == number;

【讨论】:

我不敢相信我错过了这个我很抱歉我还在第一周编码只是一个愚蠢的错误。非常感谢您的回复。 写成 one-liner 和 4 行代码? ;-) --- 另外,那些// 是有原因的吗? @Andreas 我认为他指的是它是 Java 中的一条语句,只需要一个分号。 @penguin359 我知道,但是单个 statement 和单个 line 不是一回事。 a = 1; b = 2; 可以是单行的,即使它是两个语句。一个巨大的 30 行流方法链是一条语句,但几乎不是一条线。 这是一个单行语句,为了便于阅读,我在这里拆分了它;我使用 cmets 打破界限的事实很大程度上是artifact of my IDE。

以上是关于python:下面这个语句返回值为啥是False:的主要内容,如果未能解决你的问题,请参考以下文章

为啥使用python查询数据库数据没有返回也没有报错

为啥这个 if 语句不返回布尔值?

为啥PHP传递参数值为0时,empty判断参数为真

if函数如何实现返回值的循环

为啥当 == 为空值返回 true 时 >= 返回 false?

为啥 R 的 ifelse 语句不能返回向量?