Đáp án tuyển tập các bài tập lập trình Python đơn giản hay nhất theo các chủ đề

Trong quá trình học mới một ngôn ngữ lập trình thì việc làm các bài tập lập trình đơn giản là rất cần thiết để rèn luyện kỹ năng lập trình, thành thạo ngôn ngữ lập trình. Sau đây VniTeach sẽ giới thiệu các bài tập lập trình đơn giản tuyển chọn hay nhất theo các chủ đề.

Tuyển tập các bài tập lập trình cơ bản hay nhất

1. Nhập xuất cơ bản

Câu 1: Viết chương trình xuất ra màn hình nhiệt độ (oK) tương ứng khi nhập vào nhiệt độ (oC)?

c = float(input('Mời nhập nhiệt độ C: '))
k = c + 273.15
print(c,'độ C tương ứng với',k,'nhiệt độ K')

Câu 2: Viết chương nhập vào 2 số nguyên dương m và n (m>n), hãy in ra màn hình phần nguyên và phần dư của m chia cho n?

m = int(input('Mời nhập số nguyên dương m: '))
n = int(input('Mời nhập số nguyên dương n: '))
print(m,'chia cho',n,'có phần nguyên là',m//n)
print(m,'chia cho',n,'có phần nguyên là',m%n)

Câu 3: Viết chương trình tính diện tích hình tròn, với bán kính nhập vào từ bàn phím?

r = float(input('Mời nhập bán kính R: '))
s = 3.14*r*r
print('Diện tích của hình tròn là',s)

Câu 4: Viết chương trình tính vận tốc của vật khi rơi tự do từ độ cao h (m)? Biết vận tốc v được tính theo công thức $v = \sqrt {2gh} $ và g = 9.8 m/s2 , với độ chính xác 2 chữ số thập phân.

h = float(input('Mời nhập độ cao của vật: '))
g = 9.8; import math
v = math.sqrt(2*g*h)
print(f'Vận tốc của vật rơi là {v:.2f}')

Câu 5: Viết chương trình nhập ba số thực dương a, b, h từ bàn phím lần lượt là độ dài đáy lớn, đáy bé và chiều cao của một hình thang. Tính diện tích hình thang và in kết quả ra màn hình.

a = float(input('Mời nhập đáy lớn: '))
b = float(input('Mời nhập đáy bé: '))
h = float(input('Mời nhập chiều cao: '))
s = (a + b)*h/2
print('Diện tích của hình thang là',s)

Câu 6: Viết chương trình nhập vào độ dài 3 cạnh của một tam giác, tính và xuất ra màn hình chu vi và diện tích của tam giác đó (lấy độ chính xác 02 số thập phân).

a, b, c = map(float,input('Mời nhập độ dài 3 cạnh: ').split())
chuvi = a + b + c
p = chuvi/2; import math
dientich = math.sqrt(p*(p-a)*(p-b)*(p-c))
print(f'Chu vi tam giác là {chuvi:.2f}')
print(f'Diện tích tam giác là {dientich:.2f}')

2. Cấu trúc rẽ nhánh

Câu 1: Viết chương trình nhập vào số nguyên dương n, kiểm tra và xuất ra màn hình n là số chẵn hay số lẻ?

n = int(input('Mời nhập số nguyên dương n: '))
if n%2!=0: print(n,'là số lẻ')
else: print(n,'là số chẵn')

Câu 2: Cho biểu thức $f(x,y) = \frac{{\sin x}}{{\frac{{2x + y}}{{\cos x}} – \frac{{{x^y}}}{{x – y}}}}$
Viết chương trình tính giá trị của biểu thức f(x,y) tại x, y nhập vào từ bàn phím.

x, y = map(float,input('Mời nhập x, y: ').split())
import math
f = math.sin(x)/((2*x+y)/math.cos(x)-x**y/(x-y))
print('Giá trị của biểu thức là',f)

Câu 3: Viết chương trình nhập vào năm bất kỳ (ví dụ 2021), hãy cho biết năm đó có phải năm nhuận hay không?

nam = int(input('Mời nhập năm: '))
#Năm nhuận là năm chia hết cho 400 hoặc chia hết cho 4 nhưng không chia hết cho 100
if nam%400==0 or (nam%4==0 and nam%100!=0):
    print('Năm',nam,'là năm nhuận')
else: print('Năm',nam,'không phải là năm nhuận')

Câu 4: Em hãy viết đoạn chương trình để xuất ra màn hình xếp loại học lực của học sinh theo giá trị điểm của học sinh?

diem = float(input('Mời nhập điểm học tập: '))
if diem<0 or diem>10:
    print('Điểm bạn nhập không hợp lệ')
elif diem>=8: print('Xếp loại Giỏi')
elif diem>=6.5: print('Xếp loại Khá')
elif diem>=5: print('Xếp loại Trung bình')
elif diem>=3.5: print('Xếp loại Yếu')
else: print('Xếp loại Kém')

Câu 5: Viết chương trình giải phương trình bậc nhất một ẩn ax + b = 0, với hệ số a, b nhập vào từ bàn phím.

a = float(input('Mời nhập hệ số a: '))
b = float(input('Mời nhập hệ số b: '))
if a!=0: print('Phương trình có nghiệm x =',-b/a)
elif b==0: print('Phương trình có vô số nghiệm')
else: print('Phương trình vô nghiệm')

Câu 6: Viết chương trình giải phương trình bậc hai ax2 + bx + c = 0 ($a \ne 0$), với hệ số a, b, c nhập vào từ bàn phím.

a, b, c = map(float,input('Mời nhập hệ số a, b, c: ').split())
delta = b*b - 4*a*c
if delta<0: print('Phương trình vô nghiệm')
elif delta==0:
    print('Phương trình có nghiệm kép x1 = x2 =',-b/(2*a))
else:
    print('Phương trình có 2 nghiệm phân biệt')
    import math
    x1 = (-b - math.sqrt(delta))/(2*a)
    x2 = -b/a - x1
    print('x1 =',x1,'x2 =',x2)

Câu 7: Viết chương trình kiểm tra xem điểm M(x,y) có nằm trong hình tròn tâm I(a,b) và bán kính R bằng cách xuất ra giá trị True nếu điểm M nằm trong hoặc trên hình tròn và False nếu nằm ngoài hình tròn, với x, y, a, b, R nhập vào từ bàn phím?

a, b = map(float,input('Mời nhập tọa độ tâm I: ').split())
r = float(input('Mời nhập bán kính R: '))
x, y = map(float,input('Mời nhập tọa độ điểm M: ').split())

#Khoảng cách từ điểm I đến điểm M
import math
d = math.sqrt((x-a)**2 + (y-b)**2)
if d<r: print('Điểm M nằm trong đường tròn')
elif d==r: print('Điểm M nằm trên đường tròn')
else: print('Điểm M nằm ngoài đường tròn')

Câu 8: Viết chương trình giải phương trình bậc hai ax2 + bx + c = 0, với hệ số a, b, c nhập vào từ bàn phím.

a, b, c = map(float,input('Nhập hệ số a, b, c: ').split())
if a==0:
    if b==0:
        if c==0: print('Phương trình có vô số nghiệm')
        else: print('Phương trình vô nghiệm')
    else: print('Phương trình có nghiệm x =',-c/b)
else:
    import math
    delta = b*b - 4*a*c
    if delta<0: print('Phương trình vô nghiệm')
    elif delta==0:
        print('Phương trình có nghiệm kép x1 = x2 =',-b/(2*a))
    else:
        print('Phương trình có 2 nghiệm phân biệt')
        x1 = (-b - math.sqrt(delta))/(2*a); x2 = -b/a - x1
        print('x1 =',x1,'x2 =',x2)

Câu 9: Viết chương trình nhập vào các số a, b, c, sau đó kiểm tra bộ ba số a, b, c vừa nhập vào là bộ ba cạnh của tam giác thường, tam giác vuông, tam giác cân, tam giác vuông cân, tam giác đều hay không phải là bộ ba cạnh của tam giác.

a, b, c = map(float,input('Mời nhập độ dài các cạnh: ').split())
if a + b < c or a + c < b or b + c < a:
	print('Đây không phải là độ dài 3 cạnh của tam giác')
elif a==b or a==c or b==c:
	if a==b==c: print('Đây là tam giác đều')
	elif a*a == b*b + c*c or b*b == a*a + c*c or c*c == a*a + b*b:
		print('Đây là tam giác vuông cân')
	else: print('Đây là tam giác cân')
elif a*a == b*b + c*c or b*b == a*a + c*c or c*c == a*a + b*b:
	print('Đây là tam giác vuông')
else: print('Đây là tam giác thường')

3. Cấu trúc lặp

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?

n = int(input('Mời nhập số nguyên dương n: '))
s = 0
for i in range(1,n+1):
	s = s + i
print('Tổng các số từ 1 đến',n,'là',s)

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ách 1: Sử dụng bước nhảy trong câu lệnh for

n = int(input('Mời nhập số nguyên dương n: '))
s = 0
for i in range(1,n+1,2):
	s = s + i*i
print('Tổng bình phương các số lẻ từ 1 đến',n,'là',s)

Cách 2: Sử dụng câu lệnh if để kiểm tra số lẻ

n = int(input('Mời nhập số nguyên dương n: '))
s = 0
for i in range(1,n+1):
	if i%2!=0: s = s + i*i
print('Tổng bình phương các số lẻ từ 1 đến',n,'là',s)

Câu 3. Viết chương trình in bảng cửu chương ra màn hình như sau:
– Hàng thứ nhất in ra bảng nhân 1, 2, 3, 4, 5
– Hàng thứ hai in ra bảng nhân 6, 7, 8, 9, 10

#In bảng cửu chương từ 1 đến 5
for i in range(1,11):
    for j in range(1,6):
        print(i,"x",j,"=",i*j,end="\t")
    print()
print()
#In bảng cửu chương từ 6 đến 10
for i in range(1,11):
    for j in range(6,11):
        print(i, "x", j, "=", i * j, end="\t")
    print()

Câu 4: 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ố đó?

m, n = map(int,input('Mời nhập 2 số nguyên dương m, n: ').split())
a, b = m, n
while a!=b:
	if a>b: a = a - b
	else: b = b - a
print('Ước chung lớn nhất của',m,'và',n,'là',a)
print('Bội chung nhỏ nhất của',m,'và',n,'là',int(m*n/a))

Câu 5: 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?

n = int(input('Mời nhập số nguyên dương n: '))
s = 0
for i in range(1,n):
	if n%i==0: s = s + i
if s==n: print(n,'là số hoàn hảo')
else: print(n,'không phải là số hoàn hảo')

Câu 6: 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?

n = int(input('Mời nhập số nguyên dương n: '))
dem = 0
#Cho i chạy từ 2 tới n-1 để kiểm tra i
for i in range(2,n):
	#Kiểm tra i có phải là số nguyên tố không
	kt = True; j = 2; import math
	while j<=math.ceil(math.sqrt(i)) and kt:
		if i%j==0 and i!=2: kt = False
		j = j + 1
	#kt bằng True nghĩa là i là số nguyên tố
	if kt: dem = dem + 1
print('Có',dem,'số nguyên tố nhỏ hơn',n)

Câu 7: Viết chương trình tí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 là số thực bất kỳ nhập vào từ bàn phím

a = int(input('Mời nhập số thực 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)

Câu 8: 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à?

print('Số lượng trâu đứng, trâu nằm và trâu già:')
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}')

Câu 9: Nhập vào một số nguyên dương, hãy phân tích số nguyên dương đó thành tích các thừa số nguyên tố.

Cách 1: Sử dụng chương trình con và chưa tối ưu

#Kiểm tra n có phải là số nguyên tố không
def isPrime(n):
    if n<2: return False
    kt = True; i = 2; import math
    while i<=math.ceil(math.sqrt(n)) and kt:
        if n%i==0 and n!=2: kt = False
        i = i + 1
    return kt

n = int(input('Mời nhập số nguyên dương n: '))
for i in range(2,n):
	while (n%i==0 and isPrime(i)):
		print(i,end=' ')
		n = n / i

Cách 2: Không sử dụng chương trình còn và tối ưu hơn

n = int(input('Mời nhập số nguyên dương n: '))
print(n,'được phân tích ra thừa số nguyên tố là:')
for i in range(2,n):
	while n%i==0:
		print(i,end=' ')
		n = n / i

4. Chương trình con

Câu 1: Viết chương trình có sử dụng hàm lambda để trả về số giây tương ứng với các tham số giờ, phút, giây tương ứng nhập vào từ bàn phím.

h, m, s = map(int,input('Mời nhập giờ, phút, giây: ').split())
toSecond = lambda h, m, s: h*60*60 + m*60 + s
print('Số giây tương ứng là',toSecond(h,m,s))

Câu 2: Viết chương trình tính tổng sau: S = 1! + 2! + … + n!, với n là số nguyên dương nhập vào từ bàn phím.

#Hàm giai thừa của số nguyên dương n
def factorial(n):
    gt = 1; i = 1
    for i in range(2,n+1):
        gt = gt *i
    return gt
#Chương trình chính
n = int(input('Mời nhập số nguyên dương n: '))
s = 0
for i in range(1,n+1):
    s = s + factorial(i)
print('Tổng cần tính là',s)

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

#Kiểm tra n có phải là số nguyên tố không
def isPrime(n):
    if n<2: return False
    kt = True; i = 2; import math
    while i<=math.ceil(math.sqrt(n)) and kt:
        if n%i==0 and n!=2: kt = False
        i = i + 1
    return kt
#Chương trình chính
n = int(input('Mời nhập số nguyên dương n: '))
import math
print('Dãy các số nguyên tố từ 1 đến',n,'là:')
for i in range(2,n+1):
    if isPrime(i): print(i,end=' ')

Câu 4: Viết chương trình in ra số nguyên tố lớn nhất nhỏ hơn n bằng Python

def is_prime(num):
    if num < 2:
        return False
    for i in range(2, int(num**0.5) + 1):
        if num % i == 0:
            return False
    return True
n = int(input("Nhập n: "))
for i in range(n-1, 1, -1):
    if is_prime(i):
        print(i)
        break

Câu 5: Viết chương trình giải bài toán Tháp Hà Nội
Bài toán Tháp Hà Nội (Tower of Hanoi) là một trò chơi toán học bao gồm 3 cột và với số đĩa nhiều hơn 1. Các đĩa có kích cỡ khác nhau và xếp theo tự tự tăng dần về kích cỡ từ trên xuống: đĩa nhỏ hơn ở trên đĩa lớn hơn. Nhiệm vụ của trò chơi là di chuyển các đĩa có kích cỡ khác nhau sang cột khác sao cho vẫn đảm bảo thứ tự ban đầu của các đĩa: đĩa nhỏ nằm trên đĩa lớn.

Mô phỏng bài Tháp Hà Nội
#Hàm di chuyển các đĩa
def move(n,col1,col2,col3):
    if n==1: print('Di chuyển',col1,'qua',col3)
    else:
        move(n-1,col1,col3,col2)
        move(1,col1,col2,col3)
        move(n-1,col2,col1,col3)
#Chương trình chính
n = int(input('Mời nhập số đĩa: '))
col1, col2, col3 = 1, 2, 3
move(n,col1,col2,col3)

Lưu ý: Trong chương trình trên có sử dụng thuật toán Đệ quy quay lui

Câu 6: Viết chương trình nhập số n, sau đó nhập danh sách tên học sinh với họ, đệm, tên. Sắp xếp tên học sinh trong lớp theo bảng chữ cái. Đưa kết quả ra màn hình.

#Hàm nhập danh sách học sinh
def Nhap_HS():
    n = int(input("Mời nhập số học sinh: "))
    A = []
    for i in range(n):
        ht = input("Nhập họ tên học sinh thứ "+str(i+1)+": ")
        A.append(ht)
    return A
#Hàm sắp xếp theo tên
def SX_HS(A):
    B = A.copy(); n = len(A)
    #Tách tên của học sinh
    T = []
    for i in range(n):
        T.append(B[i].split().pop())
    #Sắp xếp A dựa vào tên
    for i in range(1,n):
        j = i
        while j>0 and T[j]<T[j-1]:
            A[j],A[j-1] = A[j-1],A[j]
            j = j - 1
    return A
#Hàm xuất danh sách
def Xuat_HS(A):
    for i in range(len(A)):
        print(i+1,"\t",A[i])
#Chương trình chính
A = Nhap_HS()
B = SX_HS(A)
Xuat_HS(B)

5. Kiểu dữ liệu xâu

Câu 1: Viết chương trình “chuẩn hóa” họ và tên khi người dùng nhập vào họ tên bất kỳ từ bàn phím?

hoten = input("Mời nhập họ và tên: ")
s = " ".join(hoten.split()).title()
print("Xâu chuẩn hóa là:",s)

Câu 2: Viết chương trình nhập vào một xâu bất kỳ, xuất ra màn hình xâu đó sau khi đã xóa đi các ký tự số?

s1 = input('Mời nhập xâu bất kỳ: ')
s2 = ''
for ch in s1:
    if ord(ch)<49 or ord(ch)>58:
        s2 = s2 + ch
print('Xâu sau khi xóa các số:',s2)

Câu 3: Viết chương trình nhập vào một xâu bất kỳ, xuất ra màn hình xâu sau khi đã xóa các ký tự giống nhau liền kề.

s1 = input('Mời nhập xâu: ')
k = ''; s2 = ''
for x in s1:
    if x!=k: s2 = s2 + x; k = x
print('Xâu kết quả là:',s2)

Câu 4. Cho hai xâu s1, s2. Viết đoạn chương trình chèn xâu s1 vào giữa s2, tại vị trí len(s2)//2. In kết quả ra màn hình.

Cách 1: Sử dụng dạng lặp

s1 = input("Mời nhập xâu thứ 1: ")
s2 = input("Mời nhập xâu thứ 2: ")
s = ""; n = len(s2)//2
#Ghép đoạn đầu của s2
for i in range(0,n):
    s = s + s2[i]
#Ghép s1 vào xâu s
s = s + s1
#Ghép đoạn sau của s2
for i in range(n,len(s2)):
    s = s + s2[i]
print(s)

Cách 2: Sử dụng chỉ số để cắt xâu

s1 = input("Mời nhập xâu thứ 1: ")
s2 = input("Mời nhập xâu thứ 2: ")
#Lấy đoạn đầu s2 nối thêm s1 và nối thêm đoạn cuối s2
s2 = s2[:len(s2)//2] + s1 + s2[len(s2)//2:]
print(s)

Câu 5. Viết chương trình nhập số học sinh và họ tên học sinh. Sau đó đếm xem trong danh sách có bao nhiêu bạn tên là “Hương”.

n = int(input("Mời nhập số học sinh: "))
A = []
#Nhập danh sách họ tên học sinh trong lớp
for i in range(n):
    hoten = input("Mời nhập tên học sinh thứ " + str(i+1) + ": ")
    A.append(hoten)
#Đếm xem có bao nhiêu học sinh tên "Hương"
dem = 0
for ht in A:
    if ht=="Hương": dem = dem + 1
print("Có",dem,"học sinh mang tên Hương trong lớp")

Câu 6. Viết chương trình nhập họ tên đầy đủ của người dùng, sau đó in thông báo tên và họ đệm của người đó.

s = input("Mời nhập họ và tên: ")
#Tách các chữ của họ và tên thành danh sách
sline = s.split()
m = len(sline) - 1
#Tên chính là phần tử cuối cùng
ten = sline[m]
#Phải xóa phần tử cuối cùng bằng pop để đúng vị trí m
sline.pop(m)
#Nối lại họ đệm
hodem = " ".join(sline)
print("Họ đệm:",hodem)
print("Tên:",ten)

Câu 7. Viết chương trình nhập số tự nhiên n rồi nhập n họ tên học sinh. Sau đó yêu cầu nhập một tên và thông báo số bạn có cùng tên trong lớp.

n = int(input("Mời nhập số học sinh: "))
A = []
#Nhập danh sách họ tên học sinh trong lớp
for i in range(n):
    hoten = input("Mời nhập họ tên học sinh thứ " + str(i+1) + ": ")
    A.append(hoten)
ten = input("Mời nhập tên tìm kiếm: ")
#Đếm xem có học sinh cùng tên vừa nhập tìm kiếm
dem = 0
for ht in A:
    htline = ht.split()
    if htline[len(htline)-1] == ten:
        dem = dem + 1
print("Có",dem,"học sinh cùng tên",ten,"trong lớp")

6. Kiểu dữ liệu tệp

Câu 1: Viết chương trình tính tổng các số lẻ trong tệp DATA.INP gồm 1 dòng duy nhất chứa dãy các số nguyên dương cách nhau bởi dấu cách. Xuất kết quả ra tệp DATA.OUT

fin = open('DATA.INP','r'); fout = open('DATA.OUT','w');

line = fin.readline(); arr = line.split();
a = [int(x) for x in arr]
s = 0
for x in a:
    if x%2 != 0: s = s + x
fout.write(str(s))

fin.close(); fout.close();

Câu 2: Viết chương trình lọc các số ở văn bản gồm có nhiều dòng trong tệp DATA.INP và xuất ra tệp DATA.OUT gồm dãy các số của từng dòng tương ứng ở trong tệp DATA.INP

#Mở tệp
fin = open('DATA.INP','r')
fout = open('DATA.OUT','w')
#Duyệt theo từng dòng cho đến cuối tệp
for line in fin:
    for ch in line:
        if ord(ch)>=48 and ord(ch)<=57:
            fout.write(ch)
    fout.write('\n')
#Đóng tệp
fin.close(); fout.close()

7. Kiểu dữ liệu mảng

Câu 1: Viết chương trình nhập vào mảng gồm n số nguyên dương, hãy xuất ra màn hình tổng của các số lẻ trong mảng đó, với n>2

Cách 1: Dạng biết trước số phần tử của mảng

n = int(input('Mời nhập số phần tử của mảng: '))
a = list(map(int,input('Mời nhập dãy số nguyên dương: ').split()))
s = 0
for i in range(0,n):
    if a[i]%2!=0: s = s + a[i]
print('Tổng của các số lẻ là',s)

Cách 2: Dạng không biết trước số phần tử của mảng

a = list(map(int,input('Mời nhập dãy số nguyên dương: ').split()))
s = 0
for x in a:
    if x%2!=0: s = s + x
print('Tổng của các số lẻ là',s)

Câu 2: Viết chương trình nhập vào dãy các số bất kỳ, tìm số lớn nhất trong dãy số đó và xuất ra màn hình?

a = list(map(float,input('Mời nhập dãy số: ').split()))
max = a[0]
for x in a:
    if max<x: max = x
print('Số lớn nhất là',max)

Câu 3: Viết chương trình dung phương pháp list comprehension để tạo các list sau:
a) Dãy các số là bội của 3 và nhỏ hơn 100

a = [x for x in range(0,100) if x%3==0]

b) Dãy 10 số chính phương đầu tiên

a = [x**2 for x in range(0,10)]

Câu 4: Viết chương trình nhập vào dãy các số nguyên bất kỳ, kiểm tra và xuất ra màn hình xem dãy số đó có tạo thành cấp số cộng hay không?

a = list(map(int,input('Mời nhập dãy số nguyên: ').split()))
d = a[1] - a[0]
i = 0; kt = True
while i<len(a)-1 and kt:
    if a[i + 1] - a[i] != d:
        kt = False
    i = i + 1
if kt: print('Đây là dãy cấp số cộng')
else: print('Đây không phải là cấp số cộng')

Câu 5: Viết chương trình nhập vào bàn phím số nguyên dương n, xuất ra màn hình dãy số Fibonaxi. Biết rằng dãy Fibonaxi có dạng như sau: F0 = 1, F1 = 1, Fn = Fn-1 + Fn-2 với n>1

n = int(input('Mời nhập số nguyên dương n: '))
f = [1, 1]; i = 1
while i<n-1:
    f.append(f[i]+f[i-1])
    i = i + 1
print('Dãy gồm',n,'số Fibonaxi đầu tiên là:')
for x in f:
    print(x,' ',end='')

Câu 6: Viết chương trình nhập vào dãy gồm n số nguyên cách nhau bởi dấu cách. Sau đó đếm và xuất ra màn hình xem trong dãy vừa nhập có bao nhiêu số nguyên tố.

n = int(input('Mời nhập số phần tử: '))
a = list(map(int,input('Mời nhập dãy gồm '+str(n)+' phần tử: ').split()))
import math; dem = 0;
for x in a:
  kt = True; i = 2;
  while i<=math.ceil(math.sqrt(x)) and kt:
    if x%i==0 and x!=2: kt = False
    i = i + 1
  if kt: dem = dem + 1
print('Có',dem,'số nguyên tố trong dãy số vừa nhập')

Câu 7: Viết chương trình nhập vào 2 ma trận số nguyên kích thước mxn, sau đó xuất ra màn hình tổng của 2 ma trận đó?

m, n = map(int,input('Mời nhập kích thước ma trận: ').split())
#Nhập ma trận thứ 1
print('Mời nhập ma trận thứ nhất:')
a = []
for i in range(0,m):
    print('Dòng thứ',i+1,': ',end='')
    line = list(map(float,input().split()))
    a.append(line)
#Nhập ma trận thứ 2
print('Mời nhập ma trận thứ hai:')
b = []
for i in range(0,m):
    print('Dòng thứ',i+1,': ',end='')
    line = list(map(float,input().split()))
    b.append(line)
#Tổng của 2 ma trận
c = []
for i in range(0,m):
    line = []
    for j in range(0,n):
        line.append(a[i][j] + b[i][j])
    c.append(line)
#In kết quả của ma trận tổng
print('Tổng của 2 ma trận là:')
for i in range(0,m):
    for j in range(0,n):
        print(c[i][j],end=' ')
    print()

Câu 8: Viết chương trình nhập vào danh sách gồm n người, mỗi người sẽ có các thông tin như: họ và tên, tuổi, giới tính và quê quán. Sau đó xuất ra màn hình thông tin của từng người đã nhập.

n = int(input('Mời nhập số người: '))
#Nhập thông tin từng người
a = []
for i in range(0,n):
    print('Nhập thông tin người thứ',i+1,':')
    line = []
    print('Họ và tên:',end=' '); line.append(input())
    print('Tuổi:',end=' '); line.append(int(input()))
    print('Giới tính:',end=' '); line.append(input())
    print('Quê quán:',end=' '); line.append(input())
    a.append(line)
#In ra danh sách vừa nhập
for x in a:
    for y in x: print(y,end='\t\t')
    print()

8. Kiểu dữ liệu từ điển

Câu 1: Viết chương trình nhập vào một xâu bất kỳ, xuất ra màn hình số lần lặp của các từ đơn trong xâu vừa nhập.

s = input('Mời nhập vào xâu bất kỳ: ')
#Tách thành các từ riêng lẻ thành mảng kiểu xâu
A = s.split()
dic = {} #Tạo biến kiểu từ điển rỗng
#Duyệt qua từng phần tử của mảng A
for w in A:
    # Nếu có khóa w thì tăng 1 đơn vị, không có thì thêm vào
    dic[w] = dic.get(w,0) + 1
#Xuất ra màn hình các từ với số lần lặp
for key in dic: print(key, dic[key])

9. Kiểu dữ liệu tập hợp

Câu 1: Viết chương trình nhập vào 2 xâu bất kỳ có ký tự số, xuất ra màn hình các số có đồng thời trong cả 2 xâu đó và có tổng cộng bao nhiêu số như vậy?

#Nhập 2 xâu chứa ký tự số
s1 = input('Mời nhập xâu thứ nhất: ')
s2 = input('Mời nhập xâu thứ hai: ')
#Tạo tập hợp chỉ gồm các ký tự số
st1 = {ch for ch in s1 if ord(ch)>=48 and ord(ch)<=57}
st2 = {ch for ch in s2 if ord(ch)>=48 and ord(ch)<=57}
#Giao của hai tập hợp
st = st1.intersection(st2)
#Các số có đồng thời ở cả 2 xâu
print('Có',len(st),'ký tự số có đồng thời ở 2 xâu')
for x in st:
    print(x,end=' ')

10. Hướng đối tượng

Câu 1: Xây dựng lớp tam giác kế thừa từ lớp đa giác

class DaGiac:
    def __init__(self, socanh):
        self.n = socanh
        self.canh = [0 for i in range(socanh)]

    def nhapcanh(self):
        self.canh = [float(input("Bạn hãy nhập giá trị cạnh " + str(i + 1) + ": ")) for i in range(self.n)]

    def hienthicanh(self):
        for i in range(self.n):
            print("Giá trị cạnh", i + 1, "là", self.canh[i])

class TamGiac(DaGiac):
    def __init__(self):
        DaGiac.__init__(self, 3)

    def dientich(self):
        a, b, c = self.canh
        # Tính nửa chu vi
        s = (a + b + c) / 2
        area = (s * (s - a) * (s - b) * (s - c)) ** 0.5
        print('Diện tích của hình tam giác là %0.2f' % area)

t = TamGiac()
t.nhapcanh()
t.hienthicanh()
t.dientich()

Để 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 *