首页 > 解决方案 > 将类实现为简单的脚本

问题描述

我目前正在进行一个简单的脚本练习,以根据用户输入计算汽车保险。我想通过在我的脚本中实现类来更进一步。我试过观看一些视频和指南,但我并不完全理解这个概念。

谁能在这里指出我正确的方向?

目的是将当前脚本转换为名为 Quote 的类,该类反过来计算汽车保险。

print("Hello")
print("Please enter your car insurance details:")
carMake = str(input("Enter your car make: "))
carModel = str(input("Enter your car model: "))
carType = str(input("Is your car type \"Sport\" or \"Family: \""))
engineSize = float(input("Enter your engine size in litres: "))
yearsClaimFree = int(input("Enter Years you have been claim free: "))
startingRate = 300

if engineSize >= 2.0:
    startingRate = startingRate * 2.5
elif engineSize >= 1.4:
    startingRate = startingRate * 1.5
else:
    print("Engine size is not effecting car insurance quote.")

if carType == "sport":
    startingRate = startingRate + 400
else:
    print("Car type is not effecting the car insurance quote.")

if yearsClaimFree >= 10:
    startingRate = startingRate - startingRate / 5
else:
    print("No discount gained from years claimed free.")

print("Your car insurance is €" + str(startingRate))

标签: python

解决方案


在我看来,您所需要的只是一个接受carMake, carModel,carType等然后包含所有这些if语句的函数。如果您想输入有关汽车的所有数据,然后使用相同的数据调用多个不同的函数,则一个类会派上用场。

以下是使用函数的方法:

def calcInsurance (make, model, type, engineSize, yearsClaimFree, startingRate):
    if engineSize >= 2.0:
        startingRate = startingRate * 2.5
    elif engineSize >= 1.4:
        startingRate = startingRate * 1.5
    else:
        print("Engine size is not effecting car insurance quote.")

    if carType == "sport":
        startingRate = startingRate + 400
    else:
        print("Car type is not effecting the car insurance quote.")

    if yearsClaimFree >= 10:
        startingRate = startingRate - startingRate / 5
    else:
        print("No discount gained from years claimed free.")
    print("Your car insurance is €" + str(startingRate))

现在,如果您想要更多的函数使用关于同一辆车的相同数据(makemodeltypeengineSizeyearsClaimFreestartingRate),那么一个类可能会很有用。

class Car:
    def __init__ (self, make, model, type, engineSize, yearsClaimFree, startingRate):
        self.make = make
        self.model = model
        # etc.
    def calcInsurance (self):
        # this function is exactly the same as I showed you before, except each of the car variables need to be preceded with self.

car = Car(...car_data...)
car.calcInsurance()

如果您想对汽车执行更多功能,则可以使用有关此汽车的相同数据调用它们

car.calcInsurance()
car.doSomethingElse()

这就是使用类派上用场的地方。


推荐阅读