Xác định loại tam giác từ 3 cạnh nhập vào
Bài tập Python tự luyện
Danh sách bài học
Xác định loại tam giác từ 3 cạnh nhập vào
Nội dung bài viết Học nhanh
Bài toán cần xử lý
Viết chương trình nhập vào ba số a, b, c. Nếu a, b, c là ba cạnh của một tam giác thì kiểm tra và hiển thị ra màn hình loại của tam giác.
Kiến thức cần có
- Hàm input() và hàm print()
- Cấu trúc rẽ nhánh trong Python
- Biến và kiểu dữ liệu
Định dạng đầu vào
Gồm một dòng duy nhất chưa ba số a, b, c cách nhau bởi khoảng trắng.
Định dạng đầu ra
Gồm một dòng duy nhất hiển thị như sau:
Nếu a, b, c là ba cạnh của một tam giác: {a}, {b}, {c} la ba canh cua mot tam giac {loai}
Nếu a, b, c không là ba cạnh của một tam giác: {a}, {b}, {c} khong phai la ba canh cua mot tam giac
Với:
- {a}, {b}, {c} là ba số nhập vào từ bàn phím
- {loai} thuộc một trong các loại ['vuong', 'can', 'deu', 'tu', 'nhon']
Ví dụ
- Input 1:
- Output 1:
- Input 2:
- Output 2:
- Input 3:
- Output 3:
- Input 4:
- Output 4:
- Input 5:
- Output 5:
- Input 6:
- Output 6:
Gợi ý
- Dùng hàm input() và hàm split() để nhận số đo ba cạnh a, b, c từ bàn phím.
- Ép kiểu dữ liệu của a, b, c sang số thực để xử lý cho chính xác vì các giá trị nhận được từ hàm input() mặc định sẽ ở kiểu chuỗi.
- Dùng cấu trúc rẽ nhánh if … else với điều kiện phù hợp để giải quyết yêu cầu của bải toán.
- Thuật toán:
- Ba cạnh a, b, c của một tam giác phải thỏa mãn điều kiện là tổng hai cạnh bất kỳ luôn lớn hơn cạnh còn lại. Tức là a+b>c và a+c>b và b+c>a.
- Tam giác vuông là tam giác có bình phương một cạnh bằng tổng bình phương hai cạnh còn lại. Ta kiểm tra điều kiện: a*a==b*b+c*c hoặc b*b==a*a+c*c hoặc c*c== a*a+b*b
- Tam giác đều là tam giác có ba cạnh bằng nhau. Ta kiểm tra điều kiện a==b và b==c
- Tam giác cân là tam giác có hai cạnh bằng nhau. Ta kiểm tra điều kiện: a==b hoặc a==c hoặc b==c
- Tam giác tù là tam giác có một góc lớn hơn 90 độ. Từ điều kiện kiểm tra tam giác vuông, ta suy ra điều kiện để là tam giác tù là: a*a>b*b+c*c hoặc b*b>a*a+c*c hoặc c*c >a*a+b*b
- Trường hợp còn lại sẽ là tam giác nhọn.
- Dùng hàm print() để xuất thông báo theo yêu cầu.
Code mẫu
Kết luận
Trong bài này, Kteam đã hướng dẫn bạn cách viết chương trình nhập vào ba số a, b, c. Nếu a, b, c là ba cạnh của một tam giác thì kiểm tra và hiển thị ra màn hình loại của tam giác.
Ở bài tiếp theo, chúng ta sẽ cũng nhau học cách NHẬP VÀ KIỂM TRA BA SỐ A, B, C LÀ BA CẠNH CỦA MỘT TAM GIÁC GÌ? (CÓ XỬ LÝ NGOẠI LỆ ĐẦU VÀO).
Cảm ơn các bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của bạn để phát triển bài viết tốt hơn. Đừng quên " Luyện tập - Thử Thách - Không ngại khó!"
Tải xuống
Tài liệu
Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học Xác định loại tam giác từ 3 cạnh nhập vào dưới dạng file PDF trong link bên dưới.
Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com
Đừng quên like và share để ủng hộ Kteam và tác giả nhé!

Thảo luận
Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng.
Khóa học
Serial dành cho những bạn cần luyện tập phương pháp, tu duy lập trình. Làm quen với các bài toán trong lập trình, ngẫu nhiên từ cơ bản đến nâng cao. Nội dung Serial này được phân tách chi tiết nhất có thể, nhằm giúp các bạn dễ hiểu và thực hành được ngay.
Bạn nên tự làm lại từng bài tập trên video để có kết quả tốt nhất. Cùng Kteam "Luyện tập - Thử thách - không ngại khó"
import math
while True:
try:
a,b,c = map(float, input("Nhap vao 3 canh: ").split())
if a+b>c and a+c>b and b+c>a:
if math.pow(a,2)==(math.pow(b, 2)+math.pow(c, 2)) or math.pow(b, 2)==(math.pow(a, 2)+math.pow(c, 2)) or math.pow(c, 2)==(math.pow(a, 2)+math.pow(b, 2)):
print(f"Ba số {a} {b} {c} tạo thành tam giác vuông")
elif a == b == c:
print(f"Ba số {a} {b} {c} tạo thành tam giác đều")
elif a == b or a ==c or b == c:
print(f"Ba số {a} {b} {c} tạo thành tam giác cân")
elif math.pow(a, 2)>math.pow(b, 2)+math.pow(c, 2) or math.pow(b, 2)>math.pow(a, 2)+math.pow(c, 2) or math.pow(c, 2)>math.pow(a, 2)+math.pow(b, 2):
print(f"Ba số {a} {b} {c} tạo thành tam giác tù")
else:
print(f"Ba số {a} {b} {c} tạo thành tam giác nhọn")
else:
print(f"Ba số {a} {b} {c} không tạo thành tam giác")
except:
print("Yêu cầu nhập đúng số liệu")
break
a,b,c = map(float,input("Nhập a,b,c: ").split())
con1 = a*a == b*b + c*c or b*b == a*a + c*c or c*c == a*a + b*b
con2 = a == b == c
con3 = a == b or a == c or b == c
con4 = a*a > b*b + c*c or b*b > a*a + c*c or c*c > a*a + b*b
if a + b > c and a + c > b and b + c > a:
if con1:
triangle = 'vuông'
elif con2:
triangle = 'đều'
elif con3:
triangle = "cân"
elif con4:
triangle = 'tù'
else:
triangle = "nhọn"
print("{}, {}, {} là ba cạnh của 1 tam giác {}".format(a,b,c,triangle))
else:
print("{}, {}, {} không phải là ba cạnh của 1 tam giác".format(a,b,c))
def istriangle(_a, _b, _c) -> bool:
maxx = max(_a, _b, _c)
tong = _a + _b + _c
if tong - maxx > maxx:
return True
return False
def issquaretriangle(_a, _b, _c) -> int:
maxx = max(_a, _b, _c)
maxx2 = maxx * maxx
tong = _a*_a + _b*_b + _c*_c
if tong == 2 * maxx2:
return 0
elif tong < 2 * maxx2:
return 1
else:
return -1
while True:
try:
a, b, c = map(float, input().strip().split(' '))
if not istriangle(a, b, c):
print(f'{a}, {b}, {c} khong phai la mot tam giac')
else:
if a == b == c:
print(f'{a}, {b}, {c} la mot tam giac deu')
elif a == b or a == c or b == c:
if issquaretriangle(a, b, c) == 0:
print(f'{a}, {b}, {c} la mot tam giac vuong can')
else:
print(f'{a}, {b}, {c} la mot tam giac can')
else:
result = issquaretriangle(a, b, c)
if result == 0:
print(f'{a}, {b}, {c} la mot tam giac vuong')
elif result < 0:
print(f'{a}, {b}, {c} la mot tam giac nhon')
else:
print(f'{a}, {b}, {c} la mot tam giac tu')
except Exception:
print('Loi nhap du lieu.')
a,b,c=map(float,input('Nhập ba cạnh của tam giác: ').split())
if a+b>c and a+c>b and b+c>a:
if a==b or a==c or b==c:
ketqua='tam giác cân'
elif a==b==c:
ketqua='tam giác đều'
elif a*a==b*b+c*c or a*a+b*b==c*c or b*b==a*a+c*c:
ketqua='tam giác vuông'
elif a*a>b*b+c*c or c*c>a*a+b*b or b*b>a*a+c*c:
ketqua='tam giác tù'
elif a*a<b*b+c*c or c*c<a*a+b*b or b*b<a*a+c*c:
ketqua='tam giác nhọn'
print(f'{a} {b} {c} là 3 cạnh của 1 '+ ketqua)
else:
print('Đây không phải là cạnh của tam giác')