Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python条件语句_Python_Conditional_Conditional Statements - Fatal编程技术网

Python条件语句

Python条件语句,python,conditional,conditional-statements,Python,Conditional,Conditional Statements,现在的问题是,当Fitness2,2,5给定时,控件跳转到默认值,即“Fail”。 其中,实际输出为“通过” 使用and而不是&binary and。不要写07-根据您的Python版本,以0开头的数字可能会被解释为八进制 结合霍华德的灵感,我建议: def Fitness(a, b, c): if ((a&b&c) >= 4) & ((a+b+c) >= 13): return('Gold') if ((a&

现在的问题是,当Fitness2,2,5给定时,控件跳转到默认值,即“Fail”。 其中,实际输出为“通过”

使用and而不是&binary and。不要写07-根据您的Python版本,以0开头的数字可能会被解释为八进制

结合霍华德的灵感,我建议:

def Fitness(a, b, c):  
    if ((a&b&c) >= 4) & ((a+b+c) >= 13):  
        return('Gold')  
    if ((a&b&c) >= 3) & ((a+b+c) >= 10):  
        return('Silver')   
    if ((a&b&c) >= 2) & ((a+b+c) >= 07):  
        return('Pass')  
    else:  
        return('Fail')
另外,很遗憾你没有颁发铜牌…

使用and而不是&binary and。不要写07-根据您的Python版本,以0开头的数字可能会被解释为八进制

结合霍华德的灵感,我建议:

def Fitness(a, b, c):  
    if ((a&b&c) >= 4) & ((a+b+c) >= 13):  
        return('Gold')  
    if ((a&b&c) >= 3) & ((a+b+c) >= 10):  
        return('Silver')   
    if ((a&b&c) >= 2) & ((a+b+c) >= 07):  
        return('Pass')  
    else:  
        return('Fail')
还有,很遗憾你没有获得铜牌……

请注意

def Fitness(a, b, c):
    if all(x>=4 for x in (a,b,c)) and (a+b+c) >= 13:
        return('Gold')
    if all(x>=3 for x in (a,b,c)) and (a+b+c) >= 10:
        return('Silver') 
    if all(x>=2 for x in (a,b,c)) and (a+b+c) >= 7:
        return('Pass')
    return('Fail')
不同于

a&b&c >= 2
我想你指的是第二个,即所有值都大于2。第一个对您的所有值进行了一次比较,并将其与值2进行比较。

注意

def Fitness(a, b, c):
    if all(x>=4 for x in (a,b,c)) and (a+b+c) >= 13:
        return('Gold')
    if all(x>=3 for x in (a,b,c)) and (a+b+c) >= 10:
        return('Silver') 
    if all(x>=2 for x in (a,b,c)) and (a+b+c) >= 7:
        return('Pass')
    return('Fail')
不同于

a&b&c >= 2
我想你指的是第二个,即所有值都大于2。第一个对您的所有值进行分析,并将其与值2进行比较

其中,实际输出为“通过”

不,不是。2 0b010&2&5 0b101为0,因此即使将两个术语之间的分隔符&更改为and,表达式也将全部失败。也许你想用一个完全不同的表达方式

其中,实际输出为“通过”


不,不是。2 0b010&2&5 0b101为0,因此即使将两个术语之间的分隔符&更改为and,表达式也将全部失败。也许你想使用一个完全不同的表达方式?

我会将此作为对Tim Pietzcker答案的评论,因为这只是一个改进,但评论字段会弄乱格式,所以我将其作为一个单独的答案

a>=2 and b>=2 and c>=2.
首先,重要的是:

将返回值括在括号中,如返回'Gold'本身并没有错,但会使读者感到困惑;return是一个语句,而不是一个函数。它在没有括号的情况下工作,因为括号有效。如果您希望返回一个包含单个字符串元素的元组,请返回'Gold',。 :计算一次参数的总和和最小元素,并使用if块中的计算值,如上所示。 由于所有参数都被同等对待并放在一起,所以将它们聚集在一个*args元组中。这也将使函数泛化为可以处理任意数量的参数。如果不允许这样做,请将其添加到函数的开头:

def fitness(*args):
    arg_sum = sum(args)
    smallest_arg = min(args)

    if smallest_arg >= 4 and arg_sum >= 13:
        return 'Gold'
    if smallest_arg >= 3 and arg_sum >= 10:
        return 'Silver'
    if smallest_arg >= 2 and arg_sum >= 7:
        return 'Pass'
    return 'Fail'

最后,我要提到的是,根据上下文,函数应该有小写的名称。当然,遵循样式指南不是强制性的,只是推荐:

我会将此作为对Tim Pietzcker答案的评论发布,因为这只是对它的改进,但评论字段会弄乱格式,所以我将其作为单独的答案

a>=2 and b>=2 and c>=2.
if len(args) != 3:
    raise TypeError("Need exactly 3 arguments, got {0}".format(len(args)))
首先,重要的是:

将返回值括在括号中,如返回'Gold'本身并没有错,但会使读者感到困惑;return是一个语句,而不是一个函数。它在没有括号的情况下工作,因为括号有效。如果您希望返回一个包含单个字符串元素的元组,请返回'Gold',。 :计算一次参数的总和和最小元素,并使用if块中的计算值,如上所示。 由于所有参数都被同等对待并放在一起,所以将它们聚集在一个*args元组中。这也将使函数泛化为可以处理任意数量的参数。如果不允许这样做,请将其添加到函数的开头:

def fitness(*args):
    arg_sum = sum(args)
    smallest_arg = min(args)

    if smallest_arg >= 4 and arg_sum >= 13:
        return 'Gold'
    if smallest_arg >= 3 and arg_sum >= 10:
        return 'Silver'
    if smallest_arg >= 2 and arg_sum >= 7:
        return 'Pass'
    return 'Fail'

最后,我要提到的是,根据上下文,函数应该有小写的名称。当然,遵循样式指南不是强制性的,只是推荐:

我不确定这是否是造成问题的原因。True是1,False是0,所以True和True仍然应该给出True,True和False仍然应该给出False,等等@Chris:对。在对他的代码进行了许多细微的修改之后,我刚刚检查了一下,以使其能够运行。OP需要澄清。嗯……a&b&c>=否,会导致问题,如果a=b,则会进入默认状态。我不确定!!使用a>=否和b>=否和。。。。相反,我想知道为什么后者不将类型2&2&5工作到Python shell中,自己看看。0b010二进制文件,0b101为0。不要将逻辑and与二进制&!混淆!我不确定这是否是造成问题的原因。True是1,False是0,所以True和True仍然应该给出True,True和False仍然应该给出False,等等@Chris:对。在对他的代码进行了许多细微的修改之后,我刚刚检查了一下,以使其能够运行。OP需要澄清。嗯……a&b&c>=否,会导致问题,如果a=b,则会进入默认状态。我不确定!!使用a>=否和b>=否和。。。。相反,我想知道为什么后者不将类型2&2&5工作到Python shell中,自己看看。0b010二进制文件,0b101为0。不要将逻辑and与二进制&!混淆!你能解释一下你想要实现的逻辑吗?你能解释一下你想要实现的逻辑吗
if len(args) != 3:
    raise TypeError("Need exactly 3 arguments, got {0}".format(len(args)))

工具?啊+1为今天水晶球的最佳使用!啊!+1为今天水晶球的最佳使用!实际产出在哪里,他似乎是指实际产出应该在哪里。实际产出在哪里,他似乎是指实际产出应该在哪里。