Вот 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 символов.
Вы также можете упростить дальнейшее использование форматирование строки старого стиля и избавление от раунда:
def finalvalue(a,b,c,d):
o=450.9-a-(b*2+c+d)*.75
return("Impossible, y"if o>100else"Y")+"ou would need a %d%%"%o
Я думаю, что это 114.
Если у вас есть доступ к Python 3.8, вы можете использовать лямбда-выражение и оператор моржа для сокращения до 104 символов:
finalvalue=lambda a,b,c,d:("Y","Impossible, y")[(o:=450.9-a-(b*2+c+d)*.75)>100]+"ou would need a %d%%"%o