Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Chương trình Python tạo lớp tính diện tích và chu vi hình tròn

Khi cần tính diện tích và chu vi hình tròn sử dụng lớp (class), phương pháp lập trình hướng đối tượng được áp dụng. Một lớp được định nghĩa với thuộc tính bán kính và các phương thức tính toán.

Ví dụ

import math

class Circle:
    """Lớp đại diện cho hình tròn với bán kính."""
    
    def __init__(self, radius):
        """
        Khởi tạo hình tròn.
        
        Args:
            radius (float): Bán kính hình tròn (phải >= 0)
        """
        if radius < 0:
            raise ValueError("Bán kính không thể âm")
        self.radius = radius
    
    def area(self):
        """Tính diện tích: π * r²"""
        return math.pi * self.radius ** 2
    
    def perimeter(self):
        """Tính chu vi: 2 * π * r"""
        return 2 * math.pi * self.radius
    
    def diameter(self):
        """Tính đường kính: 2 * r"""
        return 2 * self.radius
    
    def __repr__(self):
        return f"Circle(radius={self.radius})"
    
    def __str__(self):
        return f"Hình tròn bán kính {self.radius}"

# Chương trình chính
def main():
    try:
        radius_input = input("Nhập bán kính hình tròn: ")
        radius = float(radius_input)
        
        circle = Circle(radius)
        
        print(f"\n{circle}")
        print(f"Bán kính: {circle.radius}")
        print(f"Đường kính: {circle.diameter():.2f}")
        print(f"Diện tích: {circle.area():.2f}")
        print(f"Chu vi: {circle.perimeter():.2f}")
        
    except ValueError as e:
        print(f"Lỗi: {e}")
    except KeyboardInterrupt:
        print("\nĐã hủy.")

if __name__ == "__main__":
    main()

Kết quả mẫu

Nhập bán kính hình tròn: 7

Hình tròn bán kính 7.0
Bán kính: 7.0
Đường kính: 14.00
Diện tích: 153.94
Chu vi: 43.98

Giải thích

  • Lớp Circle đóng gói dữ liệu (bán kính) và hành vi (tính diện tích, chu vi).
  • __init__ khởi tạo và validate bán kính (không âm).
  • math.pi cung cấp hằng số π chính xác.
  • Phương thức area() trả về πr², perimeter() trả về 2πr.
  • __repr__ và __str__ cho biểu diễn đẹp khi in.
  • Xử lý ngoại lệ ValueError cho input không hợp lệ.

Mở rộng: Tính toán với nhiều hình tròn

circles = [Circle(r) for r in [1, 2, 3, 5, 10]]

print(f"{'Bán kính':>8} {'Diện tích':>10} {'Chu vi':>10}")
print("-" * 30)
for c in circles:
    print(f"{c.radius:>8.1f} {c.area():>10.2f} {c.perimeter():>10.2f}")

# Tìm hình tròn diện tích lớn nhất
largest = max(circles, key=lambda c: c.area())
print(f"\nHình tròn lớn nhất: {largest} (diện tích: {largest.area():.2f})")

Kế thừa: Hình tròn màu

class ColoredCircle(Circle):
    def __init__(self, radius, color):
        super().__init__(radius)
        self.color = color
    
    def __str__(self):
        return f"Hình tròn {self.color} bán kính {self.radius}"

c = ColoredCircle(5, "đỏ")
print(c)  # Hình tròn đỏ bán kính 5