You are on page 1of 45

TRƯỜNG ĐẠI HỌC THỦY LỢI

Khoa Công nghệ thông tin


Bộ môn Tin học và KTTT

LẬP TRÌNH PYTHON

Giảng viên: TS.GVC Bùi Thị Thanh Xuân


Email: xuanbtt@tlu.edu.vn
Điện thoại: 0902001581

1
Cấu trúc rẽ nhánh
Câu lệnh if
❖Cú pháp:
if <Điều kiện>:
<Khối lệnh>
▪ Thực hiện: Nếu <Điều kiện> đúng thì sẽ thực hiện
<Khối lệnh>
▪ Sơ đồ khối

Điều Sai

kiện?
Đúng

Khối lệnh
3
Câu lệnh if
❖Ví dụ 1:
a = 10
b = 25
if a<b:
print("a nho hon b!")
→Kết quả: a nho hon b!

4
Câu lệnh if
❖Ví dụ 2:
a = int(input("Nhập số nguyên a: "))
b = int(input("Nhập số nguyên b: "))
if a<b:
print("a nhỏ hơn b!")
print("Tổng a và b:", a+b)

5
Câu lệnh if
❖Ví dụ 3:
a = int(input("Nhap so nguyen a: "))
b = int(input("Nhap so nguyen b: "))
if a<b:
print("a nho hon b!")
print("Tong a va b: ", a+b)
print("Vi tri ngoai khoi lenh!")

6
Câu lệnh if …else

❖Cú pháp:
if <Điều kiện>:
<Khối lệnh 1>
else:
❖ Sơ đồ khối <Khối lệnh 2>

Đúng Sai
Điều
kiện?

Khối lệnh 1 Khối lệnh 2

7
Câu lệnh if else
❖Ví dụ:
a = int(input("Nhap so nguyen a: "))
b = int(input("Nhap so nguyen b: "))
if a == b:
print("a bang b.")
else:
print("a khac b.")
print("Tong a + b = ", a+b)
print("Ket thuc!")

Chú ý: if và else phải được viết


thẳng cột (cùng 1 mức)

8
Câu lệnh if…elif
▪ Sơ đồ khối
if <Điều kiện 1>:
<Khối lệnh 1>
Đúng Điều kiện elif <Điều kiện 2>:
1? <Khối lệnh 2>
Sai
Sai
Điều kiện
2?

Đúng

Khối lệnh 1 Khối lệnh 2

9
Câu lệnh if … elif
❖Ví dụ:
a = int(input("Nhap so nguyen a: "))
b = int(input("Nhap so nguyen b: "))
if a == b:
print("a bang b.")
elif a<b:
print("a nho b.")
print("Ket thuc!")

Chú ý: if, elif phải được viết thẳng cột (cùng 1 mức)

10
Câu lệnh if …elif …else

Cho ví dụ minh họa:

11
Câu lệnh if …elif …else

Chú ý: if, elif, else phải được viết


thẳng cột (cùng 1 mức)

12
Các phép toán so sánh và logic

❖Các phép toán so sánh:


==, ! =, < , >, <=, >=
→Kết quả của phép so sánh: True hoặc False
❖Phép toán logic: not, and, or
❖Chú ý: Các phép toán logic có thứ tự ưu
tiên thực hiện thấp hơn các phép toán số
học và phép so sánh.

13
Ví dụ

Nhập 3 số dương a, b, c. Kiểm tra xem 3


số đó có phải là 3 cạnh của 1 tam giác?

14
Ví dụ
Nhập 3 số a, b, c. Kiểm tra xem 3 số đó có phải là 3 cạnh của 1
tam giác?

15
Chú ý
❖if(a + b>c) and (a+c>b) and (b+c>a):
có thể viết:
if a + b>c and a+c>b and b+c>a:
❖Cách viết gọn một số biểu thức:

Cách viết đầy đủ Cách viết rút gọn


if <điều kiện> == True: if <điều kiện>:

if a ==0 and b ==0 and c ==0: if a ==b ==c ==0:

if 1<a and a<b and b<5: if 1<a<b<5:

16
Câu lệnh if
# In thông báo nếu được điểm số loại giỏi
if diem >= 8:
print("Chúc mừng bạn đã được điểm giỏi")
# In thông báo xem n chẵn hay lẻ
if (N % 2) == 0:
print("N là số chẵn")
else:
print("N là số lẻ")
# Biện luận nghiệm của phương trình bậc 2
if delta == 0:
print("Phương trình có nghiệm kép")
elif delta < 0:
print("Phương trình vô nghiệm")
else:
print("Phương trình có hai nghiệm phân biệt") 17
Tổng kết về câu lệnh if
Ví dụ

Nhập vào 3 số a, b, c (a ≠ 0). Giải phương


trình bậc 2: 𝑎𝑥 2 + 𝑏𝑥 + 𝑐 = 0

19
Ví dụ

20
Ví dụ

21
Ví dụ áp dụng

❖Nhập vào 3 số a, b, c dương. Kiểm tra xem


a, b, c có phải là 3 cạnh của tam giác hay
không? Nếu là 3 cạnh của tam giác thì xem
thuộc loại nào: Tam giác đều/ cân/ thường?

22
Câu lệnh: A if <điều-kiện> else B

❖Cú pháp: A if <điều-kiện> else B


❖Thực hiện:
➢Phép toán trả về A nếu <điều-kiện> là đúng,
ngược lại trả về B
➢A và B có thể là các giá trị, biểu thức tính toán, lời
gọi hàm,…
➢Các phép toán if cũng có thể lồng nhau
❖Cách sử dụng if này khá kì cục, nhưng hợp lý nếu
xét về mặt ngôn ngữ và cách đọc điều kiện logic
❖Bài tập: Biến X để lưu tình trạng gửi SMS, X=0 tức là
chưa gửi được, X=1 tức là đã gửi thành công, X=2
tức là đã gửi và người nhận đã đọc. Viết câu lệnh sử
dụng phép toán if để in ra màn hình thông báo tương
ứng với giá trị của X.
23
Câu lệnh: A if <điều-kiện> else B

❖ Ví dụ:
a = float(input("He so a = "))
b = float(input("He so b = "))
c = float(input("He so c = "))
A = "Là pt bậc 2" if a!=0 else "Không là pt bậc 2"
print(A)

24
Câu lệnh if (rẽ nhánh)
❖Python chỉ có một cấu trúc rẽ nhánh duy nhất, sử dụng để
lựa chọn làm một trong số nhiều công việc
➢Nhiều ngôn ngữ lập trình khác sử dụng if cho trường
hợp 2 lối rẽ nhánh và switch cho trường hợp nhiều lối rẽ
nhánh
❖Nguyên tắc với rẽ nhánh if-elif-else:
➢Biểu thức điều kiện của if và elif phải có kết quả logic
➢Hệ thống sẽ lần lượt tính giá trị từng biểu thức điều kiện
từ trên xuống dưới, bắt đầu từ phát biểu if
➢Nếu biểu thức điều kiện nào đúng thì khối lệnh tương
ứng được thực hiện và bỏ qua các khối lệnh khác
➢Trường hợp mọi biểu thức điều kiện đều sai, khối lệnh
ứng với else sẽ được thực hiện
➢Khối else là tùy chọn, không nhất thiết phải xuất hiện

25
Câu lệnh lặp
▪Vòng lặp xác định for
Giảng
viên:
▪Vòng lặp không xác định while
Email
:
Vòng lặp for
❖ Cú pháp for <Tên biến> in [Tập giá trị]:
<Khối lệnh for>
[else:
<Khối lệnh else>
]# Phần else có thể không có

❖ Vòng for cho phép sử dụng một <Tên biến>


lần lượt duyệt các giá trị trong <Tập giá trị>
❖ Có thể sử dụng break và continue
❖ Khối else thực hiện sau khi toàn bộ vòng lặp
đã chạy xong
➢Khối này sẽ không chạy nếu vòng lặp bị “break”
➢Không bắt buộc phải có khối này
Vòng lặp for

➢ Ví dụ:
Vòng lặp for duyệt một miền số nguyên

❖Cú pháp vòng for rất phù hợp với việc duyệt một tập
hợp ít phần tử
➢Vì ta phải liệt kê mọi phần tử trong tập
❖Nhưng nếu muốn duyệt tập rất nhiều phần tử thì sao?
➢Chẳng hạn muốn duyệt các số nguyên từ 1 đến
1.000.000?
❖Python cung cấp hàm range để tạo một dãy số:
➢Hàm range(n): tạo dãy số nguyên từ 0 đến n-1
➢Hàm range(n,m): tạo dãy số nguyên từ n đến m-1
➢Hàm range(n,m,k): tạo dãy số nguyên từ n đến
trước m với bước nhảy k (một lần giá trị tăng k đơn
TRƯƠNG XUÂN NAM 29

vị)
▪ Chú ý: giá trị k có thể âm, trong trường hợp này
dãy số sinh ra sẽ giảm dần
Vòng lặp for
Ví dụ: Tính n!

31
Câu lệnh continue
❖Câu lệnh continue được viết trong khối lệnh
của các vòng lặp. Khi thực hiện câu lệnh
continue, các câu lệnh phía sau khối lệnh sẽ
không được thực hiện mà quay sang lần lặp
tiếp theo.
❖Ví dụ:

32
Câu lệnh break

❖Câu lệnh break được viết trong khối lệnh của


các vòng lặp. Khi thực hiện câu lệnh break,
chương trình sẽ thoát ra khỏi vòng lặp trong
cùng chứa lệnh break.
❖Ví dụ:

33
Câu lệnh break
❖Ví dụ:

34
Câu lệnh while

❖Cú pháp:
while <Điều kiện>: Điều Sai
<Khối lệnh while> kiện?
[else: Đúng
<Khối lệnh else>
] Khối lệnh
# Phần else có thể không có

▪Thực hiện: Nếu <Điều kiện> đúng thì sẽ thực hiện


<Khối lệnh>
▪ Sơ đồ khối

35
Câu lệnh while

36
Vòng lặp while kết hợp điều kiện if

37
Tính UCLN (thuật toán Euclid)

38
Vòng lặp while với break

39
Vòng lặp while với continue

40
Vòng lặp while sử dụng else

41
Tóm tắt nội dung
❖Python chỉ có 2 loại vòng lặp là while và for (thay vì 3
loại như C/C++)
❖Lặp while thực hiện lặp chừng nào điều kiện còn đúng
❖Lặp for cho phép duyệt từng phần tử của một danh
sách
❖Hàm range hỗ trợ tạo các miền số nguyên để phép
duyệt bằng for trở nên ngắn gọn hơn
❖Cả while và for đều hỗ trợ các cú pháp mở rộng:
➢Lệnh break để kết thúc vòng lặp hiện tại
➢Lệnh continue để bắt đầu một vòng lặp mới
➢Khối else được thực hiện nếu vòng lặp kết thúc không do
break

42
Bài tập

1) Cho số nguyên dương n (0 < 𝑛 ≤ 101000 ). Tính tổng các


chữ số của n.
2) Cho số nguyên dương n (0 < 𝑛 ≤ 101000 ). Tìm chữ số lớn
nhất và chữ số nhỏ nhất trong n.
3) Cho hai số nguyên dương a và b (0 < 𝑎, 𝑏 ≤ 109 ). Tìm
UCLN và BCNN của a và b.
4) Cho số nguyên dương n (0 < 𝑛 ≤ 1012 ). Kiểm tra xem n có
phải là số nguyên tố hay không?
5) Biết rằng: số tự nhiên n được gọi là số hoàn hảo nếu tổng
các ước số của n bằng đúng 2n. Ví dụ: n = 6 có các ước là
1, 2, 3, 6 và có 1 + 2 + 3 + 6 = 12. Cho hai số tự nhiên a
và b (1 ≤ 𝑎 < 𝑏 ≤ 10000). Tìm tất cả các số hoàn hảo
trong đoạn [a, b]

43
Bài tập

6. Viết chương trình cho phép người dùng nhập vào liên tiếp
một dãy số tự nhiên (không biết trước độ dài), việc nhập
dãy sẽ kết thúc khi người dùng nhập một số âm hoặc số
0. Sau khi kết thúc, in ra màn hình ước số chung lớn nhất
và bội số chung nhỏ nhất của tất cả các số vừa nhập vào.
7. Hàm fibo mở rộng được định nghĩa như sau
𝑓𝑖𝑏𝑜 0 ≤ 𝑛 < 𝑘, 𝑘 = 𝑘
1

𝑓𝑖𝑏𝑜 𝑛 ≥ 𝑘, 𝑘 = ෍ 𝑓𝑖𝑏𝑜(𝑛 − 𝑖, 𝑘)
𝑖=𝑘
Viết chương trình nhập n và k sau đó tính fibo(n, k)

44
Bài tập áp dụng

Số lũy thừa 2-3.


Một số tự nhiên n được gọi là số lũy thừa 2-3
nếu n có dạng n = 2x3y. Nhập số n. Kiểm tra
xem n có là số lũy thừa 2-3 không?

59

You might also like