Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมออกแบบระบบที่จอดรถใน Python


สมมติว่าคุณต้องการออกแบบระบบที่จอดรถ ที่จอดรถมีที่จอดรถสามแบบ ได้แก่ ใหญ่ กลาง และเล็ก และมีจำนวนช่องที่แน่นอนสำหรับแต่ละขนาด สร้างคลาสชื่อ OurParkingSystem ด้วยสองวิธี -

  • คอนสตรัคเตอร์ (ใหญ่ กลาง เล็ก) − คอนสตรัคเตอร์นี้ใช้จำนวนช่องที่มีอยู่สำหรับพื้นที่ต่างๆ และเริ่มต้นวัตถุของคลาส OurParkingSystem

  • addCar(carType) − วิธีนี้จะตรวจสอบว่ามีพื้นที่จอดรถของ carType ที่ระบุสำหรับรถที่ต้องการใส่ในที่จอดรถหรือไม่

สามช่องใหญ่ กลาง หรือเล็ก แทนด้วย 1, 2 และ 3 ตามลำดับ ข้อจำกัดคือรถสามารถจอดได้เฉพาะในที่จอดรถหาก carType ตรงกันเท่านั้น หากไม่มีที่ว่าง ให้คืนค่าเท็จ มิฉะนั้น ให้จอดรถในพื้นที่ขนาดนั้นแล้วคืนค่าเป็น True

หากมีที่ว่างสำหรับรถใหญ่ 2 ที่ ไม่มีที่สำหรับรถขนาดกลาง และ 1 ที่สำหรับรถเล็ก การเรียกคอนสตรัคเตอร์จะเป็นเหมือน OurParkingSystem(2, 0, 1) และถ้าเราเรียก addCar เช่น −

addCar(3) − เพิ่มรถเล็ก 1 คันคืนจริง

addCar(2) − ไม่มีที่ว่างสำหรับเพิ่มรถขนาดกลาง ให้คืนค่าเท็จ

addCar(3) − ไม่มีที่ว่างสำหรับเพิ่มรถขนาดเล็กคันใหม่ ดังนั้นคืนค่าเท็จ

addCar(1) − เพิ่มรถใหญ่ 1 คัน คืนทุนจริง

addCar(1) − เพิ่มรถใหญ่อีกคันคืนจริง

addCar(1) − ไม่มีที่ว่างสำหรับรถใหญ่คันอื่น ดังนั้นส่งคืนเท็จ

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • กำหนดฟังก์ชัน constructor() จะใหญ่ กลาง เล็ก

  • sp :=รายการเช่น [0,big,medium,small]

  • กำหนดฟังก์ชัน addCar() นี่จะเป็น carType

  • ถ้า sp[carType]> 0 แล้ว

    • sp[carType] :=sp[carType] - 1

    • คืนค่า True

  • คืนค่าเท็จ

ตัวอย่าง (Python)

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

class OurParkingSystem:
   def __init__(self, big, medium, small):
      self.sp = [0,big,medium,small]

   def addCar(self, carType):
      if(self.sp[carType] >0 ):
         self.sp[carType] -= 1
         return True
      return False

ps = OurParkingSystem(2, 0, 1)
print(ps.addCar(3))
print(ps.addCar(2))
print(ps.addCar(3))
print(ps.addCar(1))
print(ps.addCar(1))
print(ps.addCar(1))

อินพุต

ps.addCar(3)
ps.addCar(2)
ps.addCar(3)
ps.addCar(1)
ps.addCar(1)
ps.addCar(1)

ผลลัพธ์

True
False
False
True
True
False