优化逻辑计算器python

2024-10-04 03:29:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我刚开始学习python,我有一个为逻辑目的构建距离计算器的项目。 所以主代码要求输入一些调色板和以公里为单位的距离。 然后前150公里乘以2作为价格。 接下来的150公里(直到300公里)乘以1.8。(前150公里加300美元) 最后,在300公里以上,乘以1.6。你知道吗

但我们还有另一个微妙之处,我们有一个帕莱系数,它是乘的,它随着公里数的变化而变化,就像价格系数一样。你知道吗

所以我让你看看我目前的代码,这是一个有点大,但我找不到一个方法来优化它。 我把代码分为两个文件,“Function”和“main”。你知道吗

给你:

功能:

`
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

`

主要是:

from function import *
pal = int(input("How many palets ? "))
distance = float(input("Distance ? "))
prix = float(0.0)
i = int(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("")

Tags: 代码距离inputreturnifdeffloatelse
1条回答
网友
1楼 · 发布于 2024-10-04 03:29:13

您可以根据palets在dict中的prix相乘值来存储palets阈值,然后查找该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

对于主要部分,您不需要将0转换为int0.0转换为float,您只需初始化这些值

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

相关问题 更多 >