Python 我的功能菜单。displayHomeMenu(m)卡在无限循环中。为什么?

Python 我的功能菜单。displayHomeMenu(m)卡在无限循环中。为什么?,python,loops,methods,Python,Loops,Methods,在下面的代码中,我希望菜单显示并提示用户进行选择。根据所选内容,我想转到以下if语句,这些语句允许用户定义其车辆的属性。在我将菜单放入函数之前,代码工作正常,但我的作业需要这种格式。没有错误。它只是一次又一次地提示选择。有什么建议吗 class Menu: """ Create a Menu """ def __init__(self): self.selection = selection

在下面的代码中,我希望菜单显示并提示用户进行选择。根据所选内容,我想转到以下if语句,这些语句允许用户定义其车辆的属性。在我将菜单放入函数之前,代码工作正常,但我的作业需要这种格式。没有错误。它只是一次又一次地提示选择。有什么建议吗

class Menu: 
    """ Create a Menu """
    def __init__(self):
        self.selection = selection

    def displayHomeMenu(self):

        if 2 == vehicleCount:
            print("----Press 1 for car ")
            print("----Press 2 for pickup ")
            selection = input("----Press 3 to quit ")
            return selection

        else: 
            print("----Press 1 for car ")
            selection = input("----Press 2 for pickup ")
            return selection

class Vehicle:
    """ Model a vehicle"""

    def __init__(self, make = " ", model = "n/a", color = "n/a ", fuelType = "n/a ", *options):
        """ Initialize vehicle attributes """
        self.make = make
        self.model = model
        self.color = color
        self.fuelType = fuelType
        self.options = {"power windows", "powerlocks", "remote start", "backup camera", "bluetooth", "cruise control", "heated seats", "heated steering wheel"}
    
    def getMake(self):
        self.make = input("Please enter your make ")
        return self.make
    def getModel(self):
        self.model = input("Please enter your model ")
        return self.model
    def getColor(self):
        self.color = input("Please enter the color ")
        return self.color
    def getFuelType(self):
        self.fuelType = input("Please enter your fuel type ")
        return self.fuelType
    def getOptions(self):
        print("Please select from the following options: ")
        input(self.options)
        return self.options
   
class Car(Vehicle):
        """Represents a car"""

        def __init__(self, make = "n/a ", model = "n/a", color = "n/a ", fuelType = "n/a "):
            super().__init__(make, model, color, fuelType)

            """ Initialize car attributes"""
            self.engineSize = " "
            self.numDoors = " "

        def getEngineSize(self):
            self.engineSize = input("Please enter your engine size ")
            return self.engineSize
        def getNumDoors(self):
            self.numDoors = input("How many doors do you have ")
            return self.numDoors

class pickup(Vehicle):
        """Represents a pickup"""
        def __init__(self, make = " ", model = " ", color = " ", fuelType = " "):
            super().__init__(make, model, color, fuelType)

            """ Initialize pickup attributes """
            self.cabStyle = " "
            self.bedLength = " "

        def getCabStyle(self):
            self.cabStyle = input("Please enter your cab style ")
        def getBedLength(self):
            self.bedLength = input("Please enter the length of your bed ")

i = 0
list = []
vehicleCount = 0
carCount = 0
pickupCount = 0
selection = 0

while True:
    vehicleCount = pickupCount + carCount      
                
    m = Menu()

    Menu.displayHomeMenu(m)

    if selection == "1":
            # Processing for item found
        c = Car(Vehicle)

        Vehicle.getMake(c)
        Vehicle.getModel(c)
        Vehicle.getColor(c)
        Vehicle.getFuelType(c)
        Car.getEngineSize(c)
        Car.getNumDoors(c)
        newcar = vars(c)
        list.append(newcar)

        if carCount < 1:

            carCount = carCount + 1
        else:
            pass

    elif selection == "2":
    # Processing for item not found
        p = pickup(Vehicle)

        Vehicle.getMake(p)
        Vehicle.getModel(p)
        Vehicle.getColor(p)
        Vehicle.getFuelType(p)
        pickup.getCabStyle(p)
        pickup.getBedLength(p)
        newpickup = vars(p)
        list.append(newpickup)

        if pickupCount < 1:
            pickupCount = pickupCount + 1
        else:
            for i in list:
                print(i)
类菜单:
“”“创建菜单”“”
定义初始化(自):
自我选择=选择
def显示主页菜单(自我):
如果2==车辆计数:
打印(“按1表示汽车”)
打印(----按2键进行拾取)
选择=输入(----按3退出)
返回选择
其他:
打印(“按1表示汽车”)
选择=输入(“按2键拾取”)
返回选择
车辆类别:
“a型车辆”
def(self,make=“”,model=“n/a”,color=“n/a”,fuelType=“n/a”,*选项):
“”“初始化车辆属性”“”
自制
self.model=model
self.color=颜色
self.fuelType=fuelType
self.options={“电动车窗”、“电动锁”、“远程启动”、“倒车摄像头”、“蓝牙”、“巡航控制”、“加热型座椅”、“加热型方向盘”}
def getMake(自我):
self.make=输入(“请输入您的品牌”)
自制
def getModel(自):
self.model=输入(“请输入您的模型”)
回归自回归模型
def getColor(自身):
self.color=输入(“请输入颜色”)
返回自我颜色
def getFuelType(自身):
self.fuelType=输入(“请输入您的燃油类型”)
返回自选类型
def getOptions(自):
打印(“请从以下选项中选择:”)
输入(self.options)
返回self.options
车辆类别:
“”“代表一辆汽车”“”
定义初始化(self,make=“n/a”,model=“n/a”,color=“n/a”,fuelType=“n/a”):
超级()
“”“初始化汽车属性”“”
self.engineSize=“”
self.numDoors=“”
def getEngineSize(自):
self.engineSize=输入(“请输入您的引擎大小”)
返回自引擎化
def getNumDoors(自):
self.numDoors=输入(“您有多少门”)
返回self.numDoors
等级皮卡(车辆):
“”“代表皮卡”“”
def uuu init uuuuu(self,make=“”,model=“”,color=“”,fuelType=“”):
超级()
“”“初始化拾取属性”“”
self.cabStyle=“”
self.beddlength=“”
def getCabStyle(自):
self.cabStyle=输入(“请输入您的cab样式”)
def getBedLength(自身):
self.bedLength=输入(“请输入您的床长”)
i=0
列表=[]
车辆计数=0
carCount=0
拾取计数=0
选择=0
尽管如此:
车辆计数=皮卡计数+车辆计数
m=菜单()
菜单。显示主页菜单(m)
如果选择==“1”:
#正在处理找到的项目
c=汽车(车辆)
车辆制造(c)
车辆模型(c)
车辆颜色(c)
车辆类型(c)
汽车发动机尺寸(c)
汽车。getNumDoors(c)
新车=vars(c)
列表。追加(新车)
如果车辆计数小于1:
carCount=carCount+1
其他:
通过
elif选择==“2”:
#找不到正在处理的项目
p=皮卡(车辆)
车辆制造(p)
车辆模型(p)
车辆颜色(p)
车辆。getFuelType(p)
皮卡车风格(p)
皮卡。getBedLength(p)
新拾取=可变电阻(p)
列表。追加(新拾取)
如果拾取计数小于1:
拾取计数=拾取计数+1
其他:
对于列表中的i:
印刷品(一)

您没有使用
displayHomeMenu()
中的返回值:

为True时:
车辆计数=皮卡计数+车辆计数
m=菜单()
selection=m.displayHomeMenu()#将返回值指定给selection
如果选择==“1”:
#正在处理找到的项目
c=汽车(车辆)
车辆制造(c)
车辆模型(c)
车辆颜色(c)
车辆类型(c)
汽车发动机尺寸(c)
汽车。getNumDoors(c)
新车=vars(c)
列表。追加(新车)
如果车辆计数小于1:
carCount=carCount+1
其他:
通过
elif选择==“2”:
#找不到正在处理的项目
p=皮卡(车辆)
车辆制造(p)
车辆模型(p)
车辆颜色(p)
车辆。getFuelType(p)
皮卡车风格(p)
皮卡。getBedLength(p)
新拾取=可变电阻(p)
列表。追加(新拾取)
如果拾取计数小于1:
拾取计数=拾取计数+1
其他:
对于列表中的i:
印刷品(一)