---
# System prepended metadata

title: 'Kiến thức Python '

---

# Những kiến thức đã học...

## 1. Tính chất của tam giác
i) Tổng của 2 cạnh luôn lớn hơn 1 cạnh bất kì
ii) Hiệu của 2 cạnh luôn nhỏ hơn 1 cạnh bất kì.

## 2. Công thức Heron

```markdown
Khi biết tam giác có ba cạnh a, b, c, chúng ta có thể tính diện tích của nó bằng cách áp dụng công thức Heron như sau:

### Áp dụng công thức Heron:

Chúng ta bắt đầu bằng việc tính nửa chu vi của tam giác, thường được ký hiệu là 'p'. Nửa chu vi được tính bằng công thức sau:

```
p = (a + b + c) / 2
```

Sau đó, chúng ta sử dụng công thức Heron để tính diện tích 'S' của tam giác:

```
S = √(p * (p - a) * (p - b) * (p - c))
```

Trong đó:
- 'S' là diện tích của tam giác.
- 'p' là nửa chu vi của tam giác.
- 'a', 'b', và 'c' là độ dài của ba cạnh của tam giác.

Công thức Heron là một công cụ quan trọng để tính diện tích của tam giác khi chúng ta biết độ dài của các cạnh.
```

- Code trong Python:

```python
from math import sqrt

def dien_tich(a, b, c):
    p = (a + b + c) / 2  # Nửa chu vi
    s = sqrt(p * (p - a) * (p - b) * (p - c))  # Diện tích
    return s  

a, b, c = map(int, input().split())
print("Diện tích tam giác:", format(dien_tich(a, b, c), "0.2f"))
```

### Nhập file trong python
Ví dụ tên file là "tongchuso":
```python=
import sys
sys.stdin = open("tongchuso.inp","r")
sys.stdout = open ("tongchuso.out","w")
```

### Chuyển xâu thành số, số thành xâu.
- Chuyển biến xâu 's' sang biến số nguyên 'n': `n = int(s)`
- Chuyển biến số nguyên 'n' sang biến xâu 's':  `s = str(n)`

### Lấy mã Ascii
* Câu lệnh lấy mã ascii của c: ord(c)

### Lệnh continue
* Bỏ qua tất cả câu lệnh còn lại trong khối lệnh đang được thực thi.

### Cách lấy vị trí của một chữ cái in hoa trong bảng alphabet:
* Ví dụ tìm vị trị của chữ cái 'ch' nào đó trong bảng alphabet:
    `
    ord(ch) - ord('A')
    
### alphabet
* alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

### Khi muốn dịch một số qua phải k vị trị:
* Giả sử vị trí hiện tại là idx, ta dịch bằng cách cộng idx lên k:
    `
    idx = (idx+k)%26
    `
* Phải chia lấy dư lại cho 26 bởi vì chỉ có 26 chữ cái (0..25) nên ta làm vậy để kí tự quay về vị trí 0, 1, 2, ...

### Đọc xuất file
- Giả sử Input là file: CAU1.inp
- Giả sử Output là file: CAU1.out
```
import sys
sys.stdin = open("CAU1.inp", "r")
sys.stdout = open("CAU1.out", "w")
```

## Ngôn ngữ Python xử lí được TỐI ĐA 10 mủ 7 phép tính.

## Cách tìm UCLN của một dãy số

```
from math import *

# Cách tìm UCLN của dãy arr

g = 0 # gcd của dãy arr
for v in arr:
    g = gcd(g, v)

# sau khi chạy vòng for
# g chính là UCLN của dãy arr
```

## Chuyển chữ hoa sang chữ thường:
```
s = input()
s = s.lower()
```

## Chuyển chữ thường sang chữ hoa:
```
s = input()
s = s.upper()
```

## Chuyển đổi chữ hoa sang thường và ngược lại:
```
s = input()
s = s.swap()
```

## Cách duyệt xâu
```
# In xâu S xuôi:
for i in range(len(s)):
 print(s[i], end = "")

# Ví dụ: s = "abc" -> In ra: abc

# In xâu S ngược:
for i in range(len(s)-1, -1, -1):
    print(s[i], end = "")

# Ví dụ: s = "abc" -> In ra: cba
```

## Từ kí tự sang ASCII:
```
ch = 'a'
print(ord(ch))
# In ra: 97
```

## Từ ASCII sang kí tự:
```
asscii = 97
print(chr(asscii)) 
# In ra: a
```