python - 将类实现为简单的脚本
问题描述
我目前正在进行一个简单的脚本练习,以根据用户输入计算汽车保险。我想通过在我的脚本中实现类来更进一步。我试过观看一些视频和指南,但我并不完全理解这个概念。
谁能在这里指出我正确的方向?
目的是将当前脚本转换为名为 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))
解决方案
在我看来,您所需要的只是一个接受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))
现在,如果您想要更多的函数使用关于同一辆车的相同数据(make
、model
、type
、engineSize
、yearsClaimFree
和startingRate
),那么一个类可能会很有用。
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()
这就是使用类派上用场的地方。
推荐阅读
- javascript - 一段时间后切换某些元素的显示
- google-chrome - 更新后新的 Chrome 扩展错误(现在无法查询选项卡(用户可能正在拖动选项卡))
- java - Hyperledger Fabric:[Java] ContractException- 交易提交被同行 peer0.org2.example.com 拒绝
- c# - 为什么 C# 数组在 Android 上运行时通过 ref 从 C# 传递到 C++ 库后变为长度 1,但在 Windows 上正常工作?
- database - Sqflite 数据库异常在颤振中没有这样的表
- flutter - 如何在不颤动的情况下调用bottomNaviagtionbar的特定索引?
- javascript - 找到邮政编码时验证邮政编码和打印状态
- mesibo - 无法在 Mesibo 聊天中打开视频通话 UI
- subprocess - (Odoo) 为什么我在使用 pganonymizer 时无法连接到服务器?
- javascript - 如何在 JavaScript 中计算自上午 9:30 以来的时间?