def finalvalue(a,b,c,d):
o=round(450-a-(b*2+c+d)*.75+.3)
return ("Impossible, you " if(o)>100 else "You ")+"would need a "+str(o)+"%"
因此,这里有一个函数可以计算每个输入的加权分数,以及某人为了获得至少90%的总分数而必须获得的最终分数。如果该值不是整数,在这种情况下为“ o”,则四舍五入到最接近的高整数。如果分数大于100,则返回另一条带有“不可能”的消息。
我已经在return语句中加入了if子句。
所以我的问题是,我将如何优化此代码并以更少的代码行来完成?
这里是144个字符的解决方案:
import math
def finalvalue(a,b,c,d):
o=math.ceil(450-a-(b*2+c+d)*.75)
return("Impossible, y"if o>100 else"Y")+"ou would need a "+str(o)+"%"
如果a
,b
,c
和d
是整数,则可以进一步简化,注意o
的最小分数为1/4,即0.25,因此我们可以将0.3和回合:
def finalvalue(a,b,c,d):
o=round(450-a-(b*2+c+d)*.75+.3)
return("Impossible, y"if o>100else"Y")+"ou would need a "+str(o)+"%"
这是127个字符。
您还可以使用old-style string formatting进一步简化并摆脱下一轮:
def finalvalue(a,b,c,d):
o=450-a-(b*2+c+d)*.75+.3
return("Impossible, y"if o>100else"Y")+"ou would need a %.0f%%"%o
我认为这是117?