优化逻辑计算器python
我刚开始学习python,我有一个项目,为逻辑目的构建一个距离计算器。 因此,主代码要求输入一些调色板和以公里为单位的距离。 然后前150公里乘以2作为价格。 接下来的150公里(直到300公里)乘以1.8。(前150公里加起来是300美元) 最后,在300公里以上,我们乘以1.6 但我们还有另一个微妙之处,我们有一个帕莱系数,它是乘的,它随着公里数的变化而变化,就像价格系数一样 所以我让你看看我目前的代码,它有点大,但我找不到优化它的方法。 我将代码分为两个文件,“Function”和“main” 这是: 功能:优化逻辑计算器python,python,Python,我刚开始学习python,我有一个项目,为逻辑目的构建一个距离计算器。 因此,主代码要求输入一些调色板和以公里为单位的距离。 然后前150公里乘以2作为价格。 接下来的150公里(直到300公里)乘以1.8。(前150公里加起来是300美元) 最后,在300公里以上,我们乘以1.6 但我们还有另一个微妙之处,我们有一个帕莱系数,它是乘的,它随着公里数的变化而变化,就像价格系数一样 所以我让你看看我目前的代码,它有点大,但我找不到优化它的方法。 我将代码分为两个文件,“Function”和“mai
`
def calcul150(pal, distance):
if distance > 150:
prix = 300
else:
prix = float(distance * 2)
if pal <= 4:
prix = prix * 0.4
elif pal <= 8:
prix = prix * 0.5
elif pal <= 12:
prix = prix * 0.6
elif pal <= 16:
prix = prix * 0.7
elif pal <= 20:
prix = prix * 0.8
elif pal <= 24:
prix = prix * 0.85
elif pal <= 28:
prix = prix * 0.9
print(prix)
return prix
def calcul300(pal, distance):
prix = calcul150(pal, distance)
if distance > 300:
distance = 300
if pal <= 4:
prix = prix + (distance-150) * 1.8 * 0.3
elif pal <= 8:
prix = prix + (distance-150) * 1.8 * 0.4
elif pal <= 12:
prix = prix + (distance-150) * 1.8 * 0.5
elif pal <= 16:
prix = prix + (distance-150) * 1.8 * 0.6
elif pal <= 20:
prix = prix + (distance-150) * 1.8 * 0.7
elif pal <= 24:
prix = prix + (distance-150) * 1.8 * 0.75
elif pal <= 28:
prix = prix + (distance-150) * 1.8 * 0.8
else:
prix = prix + (distance-150) * 1.8
print(prix)
return prix
def calculLD(pal, distance):
prix = calcul300(pal, distance)
if pal <= 4:
prix = prix + (distance-300) * 1.6 * 0.2
elif pal <= 8:
prix = prix + (distance-300) * 1.6 * 0.3
elif pal <= 12:
prix = prix + (distance-300) * 1.6 * 0.4
elif pal <= 16:
prix = prix + (distance-300) * 1.6 * 0.5
elif pal <= 20:
prix = prix + (distance-300) * 1.6 * 0.6
elif pal <= 24:
prix = prix + (distance-300) * 1.6 * 0.65
elif pal <= 28:
prix = prix + (distance-300) * 1.6 * 0.7
else:
prix = prix + (distance-300) * 1.6
print(prix)
return prix
`
`
def计算器150(pal,距离):
如果距离>150:
prix=300
其他:
prix=浮动(距离*2)
如果pal您可以根据palets阈值的prix相乘值存储在dict
中,然后查找该dict中高于pal
的最小键,然后使用其值相乘prix
def calcul150(pal, distance):
if distance > 150:
prix = 300
else:
prix = float(distance * 2)
multipliers = {4: 0.4, 8: 0.5, 12: 0.6, 16: 0.7, 20: 0.85, 24: 0.85, 28: 0.9}
multiplier = [multipliers[i] for i in sorted(multipliers) if pal <= i]
if not multiplier:
multiplier = [1]
prix *= multiplier[0]
print(prix)
return prix
def calcul300(pal, distance):
prix = calcul150(pal, distance)
if distance > 300:
distance = 300
multipliers = {4: 0.3, 8: 0.4, 12: 0.5, 16: 0.6, 20: 0.7, 24: 0.75, 28: 0.8}
multiplier = [multipliers[i] for i in sorted(multipliers) if pal <= i]
if not multiplier:
multiplier = [1]
prix = prix + (distance-150) * 1.8 * multiplier[0]
print(prix)
return prix
def calculLD(pal, distance):
prix = calcul300(pal, distance)
multipliers = {4: 0.2, 8: 0.3, 12: 0.4, 16: 0.5, 20: 0.6, 24: 0.65, 28: 0.7}
multiplier = [multipliers[i] for i in sorted(multipliers) if pal <= i]
if not multiplier:
multiplier = [1]
prix = prix + (distance-300) * 1.6 * multiplier[0]
print(prix)
return prix
输出:
How many palets ? 28
Distance ? 300
270.0
486.0
price is 486.0 dollars
伙计,太棒了!我试图理解你用dict做了什么我不明白,这是一个很好的方法,因为你用了很多我还没有掌握的东西。我会学习你的方法,试着去理解,非常感谢!为了帮助您理解,这里有一个简单的解释<代码>乘法器
是一个dict,其中键(调色板)对应于乘法器。首先,我们找到所有调色板数量高于用户提供的调色板数量的乘数,然后选择最小的一个(multiplier[0]
)。如果调色板的数量高于我们的任何键(multiplier
为空列表),我们会手动选择multiplier为1(multiplier=[1]
)。
pal = int(input("How many palets ? "))
distance = float(input("Distance ? "))
prix = 0.0
i = 0
if distance <= 150:
prix = calcul150(pal, distance)
elif distance <= 300:
prix = calcul300(pal, distance)
else:
prix = calculLD(pal, distance)
print("price is {} dollars" .format(prix))
input("")
How many palets ? 28
Distance ? 300
270.0
486.0
price is 486.0 dollars