Python条件语句
现在的问题是,当Fitness2,2,5给定时,控件跳转到默认值,即“Fail”。 其中,实际输出为“通过” 使用and而不是&binary and。不要写07-根据您的Python版本,以0开头的数字可能会被解释为八进制 结合霍华德的灵感,我建议: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&
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为今天水晶球的最佳使用!实际产出在哪里,他似乎是指实际产出应该在哪里。实际产出在哪里,他似乎是指实际产出应该在哪里。