Bài 4 – Cấu trúc lặp trong ngôn ngữ lập trình Python

Lập trình Python

1. Lặp với số lần biết trước – Câu lệnh for

a. Hàm range

– Cú pháp: range([<start>],<end>,[<step>])

– Ý nghĩa: Hàm tạo ra dãy giá trị có thể đếm được

– Một số dạng của hàm range như sau:

Hàm rangeÝ nghĩa
range(0,n)Dãy các giá trị từ 0, 1, 2, … đến n-1
range(1,n,2)Dãy các giá trị từ 1, 3, 5, … đến bé hơn hoặc bằng n-1
range(n,0,-1)Dãy các giá trị từ n, n-1, …, đến 1 (giảm dần)
range(n)Dãy các giá trị từ 0, 1, 2, … đến n-1 giống range(0,n) hoặc range(0,n,1)
Một số ví dụ về hàm range

b. Câu lệnh for

– Cú pháp:

for <biến vòng lặp> in <dãy giá trị>:
    <Dãy các lệnh>

– Trong đó <dãy giá trị> có thể là hàm range, xâu hoặc mảng.

– Ý nghĩa: Biến vòng lặp có giá trị lần lượt từ giá trị đầu đến giá trị cuối của dãy giá trị, mỗi lần lặp thì thực hiện dãy các lệnh trong for.

– Ví dụ:

#1
for i in range(n): print(“Python”)
#Xuất ra màn hình n chữ Python, i có giá trị từ 0 đến n-1

#2
s = “VniTeach”
for ch in s: print(ch)
#Xuất ra màn hình trên mỗi dòng các chữ cái V, n, i, T, e, a, c, h

#3
s = 0;
for i in range(0,101,2): s += i
#Tính tổng các số chẵn từ 0 đến 100	 		 

#4
#Đếm các ước số thực sự của n
dem = 0
for i in range(1,n):
    if n%i == 0: dem += 1
print(f“Số các ước số thực sự của {n} là {dem}”)

#5
for x in range(1,100//5):
    for y in range(1,100//3):
	z = 100 – (x + y)
	if 15*x + 9*y + z == 300: print(f”{x} {y} {z}”) 

2. Lặp với số lần chưa biết trước – Câu lệnh while

– Cú pháp:

while <điều kiện>:
      <Dãy các lệnh>

– Ý nghĩa: Trong khi điều kiện còn đúng thì dãy các lệnh còn được thực hiện

– Ví dụ:

(1) Tính và đưa kết quả ra màn hình tổng: \[S=\frac{1}{a}+\frac{1}{a+1}+\frac{1}{a+2}+…+\frac{1}{a+n}+…\]

cho đến khi $\frac{1}{a+n}<0,0001$, với a nhập vào từ bàn phím.

Chương trình:

a = int(input(“Moi nhap a: “))
S = 0; n = 0;
while not (1/(a+n)<0.0001):
	S += 1/(a+n)
	n += 1
print(“Tổng cần tính là”,S)

(2) Viết chương trình nhập vào 2 số nguyên dương, tính và xuất ra màn hình ước chung lớn nhất và bội chung nhỏ nhất của 2 số đó.

– Chương trình:

m, n = map(int,input(“Mời nhập 2 số nguyên dương: “).split())
tich = m*n
while m != n:
	if m>n: m -= n
	else: n -= m
print(“Ước chung lớn nhất là:”,m)
print(f“Bội chung nhỏ nhất là: {tich/m: .0f}”)

3. Câu lệnh break, continue, pass và else trong cấu trúc lặp

a. Câu lệnh break, continue và pass

Câu lệnhÝ nghĩa
breakDùng để thoát ngay khỏi câu lệnh lặp kể từ vị trí của break
continueDùng để bỏ qua vòng lặp hiện tại kể từ vị trí của continue và chuyển ngay sang vòng lặp tiếp theo
passCâu lệnh hình thức để đủ cú pháp, không làm gì cả
Ý nghĩa các câu lệnh break, continue, pass

b. Câu lệnh else của câu lệnh for, câu lệnh while (Chỉ thực sự có ý nghĩa khi lệnh lặp sử dụng break)

– Câu lệnh for

for <biến vòng lặp> in <dãy giá trị>:
	<Dãy các lệnh 1>
[else:
	<Dãy câu lệnh 2>]

– Câu lệnh while

while <điều kiện>:
	 <Dãy các lệnh 1>
[else:
	 <Dãy câu lệnh 2>]

Trong đó: <Dãy câu lệnh 2> chỉ bị bỏ qua khi trong for while có sử dụng câu lệnh break

Phần bài tập về Cấu trúc lặp trong Python

Câu 1: Viết chương trình tính tổng các số từ 1 đến n, với n là số nguyên dương nhập vào từ bàn phím?

Câu 2: Viết chương trình tính tổng của bình phương các số lẻ từ 1 đến n, với n là số nguyên dương nhập vào từ bàn phím?

Câu 3: Viết chương trình nhập vào hai số nguyên dương m và n (m>n), xuất ra màn hình ước chung lớn nhất và bội chung nhỏ nhất của 2 số đó?

Câu 4: Viết chương trình kiểm tra số nguyên dương n nhập vào từ bàn phím có phải là số hoàn hảo hay không?

Câu 5: Viết chương trình đếm các số nguyên tố nhỏ hơn n, với n là số nguyên dương nhập vào từ bàn phím?

Câu 6: Viết chương trình giải bài toán cổ:

Trăm trâu trăm bó cỏ

Trâu đứng ăn năm

Trâu nằm ăn ba

Lụ khu trâu già

Ba con một bó

Hỏi có bao nhiêu trâu đứng, trâu nằm và trâu già?

Xem tiếp Bài 5 – Kiểu dữ liệu xâu trong ngôn ngữ lập trình Python

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *