需要清洁我的代码以使其干燥的建议

问题描述 投票:1回答:1

我正在做一个练习,在那里我需要创建一个代码,我将速度限制设置为70m / h。对于每5英里的增量,代码将增加1分,在5分之后,许可证将被吊销。

我制作代码的方式有效,但是过于重复,我想不出一种方法,可以使循环变得更简单,而不必重复很多次。

有什么建议吗?

def speed_check(speed):
    speed_limit = 70
    points = 0

    if speed <= speed_limit:
        return "Speed is OK"
    elif (speed < speed_limit + 5) and (speed > speed_limit):
        points += 1
        return "Points taken {}!".format(points)
    elif (speed < speed_limit + 10) and (speed > speed_limit):
        points += 2
        return "Points taken {}!".format(points)
    elif (speed < speed_limit + 15) and (speed > speed_limit):
        points += 3
        return "Points taken {}!".format(points)
    elif (speed < speed_limit + 20) and (speed > speed_limit):
        points += 4
        return "Points taken {}!".format(points)
    else:
        points += 5
        return "Points taken {}!\nYour license has been revoked".format(points)


your_speed = int(input("Enter speed: "))
print(speed_check(your_speed))

python-3.x loops dry
1个回答
0
投票
import math

def speed_check(speed):
    speed_limit = 70
    points = 0

    if speed > speed_limit:
      amountOverSpeedLimit = (speed - speed_limit)
      points = math.floor(amountOverSpeedLimit/5)

    return "Points taken {}!".format(points)

your_speed = int(input("Enter speed: "))
print(speed_check(your_speed))

您可以使用math.floor和一些除法来获得相同的结果。当您超过4点或速度未超出限制时,这并不能解决该消息,但您应该可以将其添加。

© www.soinside.com 2019 - 2024. All rights reserved.