Professional Documents
Culture Documents
I. CƠ BẢN:
Bài 1: Biết lãi suất tiết kiệm là t%/tháng (nhập t từ bàn phím). Nhập số vốn ban đầu n và
số tháng gửi k. Tính số tiền nhận được sau k tháng.
Bài 2: Tiền điện hàng tháng được tính như sau:
- 100 số đầu tính m1 đồng/số
- từ số 101 trở lên tính m2 đồng/số
Nhập m1,m2, số điện năng tiêu thụ s. Hãy tính tiền điện phải trả.
Code Python
def bai2(m1, m2, s):
if (s < 100):
t = 100 * m1
print("so tien phai tra la:", t)
else:
t = 100 * m1 + (s - 100) * m2
print("so tien phai tra la:", t)
m = int(input("Nhap m: "))
print("#", m, "so nguyen to dau tien la: ")
dem = k = 0
while (dem < m):
if (check_prime(k) == 1):
print(k)
dem = dem + 1
k = k + 1
Bài 4: Tìm phân số tối giản của một phân số. Ý tưởng: Ta tìm UCLN của tử số và mẫu số
bằng giải thuật Euclid, sau đó chia cả tử và mẫu cho UCLN.
Code Python
def ucln(a, b):
if a == 0 | b == 0:
return a + b
while (a != b):
if (a > b):
a = a - b
else:
b = b - a
return a
Bài 5: Nhập một số nguyên, đếm xem số đó có bao nhiêu chữ số và tính tổng các chữ số.
Bài 6: Tìm các số có 3 chữ số sao cho tổng lập phương của các chữ số bằng chính số đó
(gọi là các số Amstrong)
Code Python
t = range(10)
print('Danh sach so Amstrong co 3 chu so:')
for a in t[1:]:
for b in t:
for c in t:
if (a ** 3 + b ** 3 + c ** 3 == 100 * a + 10 * b + c):
print(100 * a + 10 * b + c)
Câu 7: Tìm và in ra màn hình tất cả các số hoàn hảo không vượt quá số n cho trước nhập
từ bàn phím. Số hoàn hảo là số bằng tổng các ước số của nó không kể ước số là chính số
đó. Ví dụ số 6 là số hoàn hảo vì 6 = 1 + 2 + 3, hay 28 vì 28 = 14 + 7 + 4 + 2 + 1.
Ý tưởng:
- Viế t mô ̣t hàm check mô ̣t số đầ u vào có phải là số hoàn hảo hay không? Nô ̣i dung
hàm như sau:
+) input: 1 số tự nhiên n đầ u vào
+) process: tìm ra tấ t cả ước số của số n, sau đó kiể m tra xem số n có bằ ng tổ ng
các ước số đó không. Nế u bằ ng thì trả về true, không thì trả về false
+) output: true (nế u n là số hoàn hảo)/ false (nế u n không là số hoàn hảo)
- Lă ̣p từ 2 đế n số n, và in ra những số thỏa mañ hàm check số hoàn hảo ở trên
def sohoanhao(_number):
sum = 0
a = _number // 2 + 1
for i in range(1, a):
if _number % i == 0:
sum += i
if _number == sum:
return True
else:
return False
# So to tien 100:
_t100 = money // 100
# So to tien 20:
money = money - (100 * _t100)
_t20 = money // 20
# So to tien 5:
money = money - 20 * _t20
_t5 = money // 5
# So to tien 1:
_t1 = money - 5 * _t5
print('So to 100: ', _t100, '; So to 20: ', _t20, '; So to 5: ', _t5, ';
So to 1: ', _t1)
Câu 10: Viết hàm tìm ước số chung lớn nhất của 2 số tự nhiên; một hàm tìm bội số chung
nhỏ nhất của 2 số tự nhiên.
def ucln(a, b):
if a == 0 | b == 0:
return a + b
while (a != b):
if (a > b):
a = a - b
else:
b = b - a
return a
Câu 11: Viế t hàm số tìm và in ra phần tử nhỏ nhất, lớn nhất, tính và in ra trung bình cộng
của các phần tử trong danh sách hoă ̣c tuple cho trước. In ra các phần tử nhỏ hơn, lớn hơn
trung bình cộng.
Gơ ̣i ý: Sử du ̣ng hàm min, max. Trung bình cô ̣ng thì bằ ng tổ ng chia cho số phầ n tử hay
đô ̣ lài (len).
Câu 12: Viết hàm đếm số các đoạn tăng và tìm đoạn tăng dài nhất của mô ̣t danh sách cho
trước. Sau đó in ra kế t quả số đoạn tăng và đoạn tăng dài nhất trong danh sách.
Gơ ̣i ý:
- Dùng 1 biế n _count để đế m số đoa ̣n tăng.
- Lă ̣p qua từng phầ n tử của danh sách, so sánh nó với phầ n tử trước nó, nế u lớn
hơn thì là thuô ̣c đoa ̣n tăng. Đưa các đoa ̣n tăng này vào 1 danh sách mới.
- Sau khi kế t thúc 1 đoa ̣n tăng thì tăng _count lên 1.
Câu 13: Viết hàm kiểm tra tính đối xứng của 1 xâu ký tự. Sau đó go ̣i hàm và nhập xâu ký
tự từ bàn phím và cho biết xâu đó có đối xứng không.
_str = input('Nhap vao chuoi: ')
if _str == _reversed:
print('Chuoi Doi xung.')
else:
print('Day khong phai la chuoi Doi xung.')
Câu 14: Viết một hàm chuẩn hóa xâu ký tự: biến đổi xâu ký tự nhâ ̣p vào từ bàn phím thành
xâu chuẩ n sao cho trong xâu không có 2 dấu cách liền nhau, chữ cái đầ u tiên và sau dấ u
cách của chuỗi phải đươ ̣c viế t hoa, các chữ cái khác phải viế t thường. Ví du ̣: Nhâ ̣p vào
chuỗi: nGuyen VaN A chuẩ n hóa: Nguyen Van A.
_str = input('Nhap vao chuoi: ')
_file.close()
# Mo file cau2.txt
_file = open('cau2.txt', 'r+')
# Ghi danh sach cac so vua nhap vao tep
_list = _file.readlines()
# Sap xep danh sach theo ABC
_new = sorted(_list)
# Xoa toan bo noi dung file da cho:
# Dua con tro ve dau file
_file.seek(0)
# Xoa toan bo file tu vi tri con tro
_file.truncate()
# Ghi lai danh sach vao file da co
for i in range(len(_new)):
_file.writelines(str(i + 1) + ". " + _new[i])
_file.close()
Câu 3: Tạo tệp danh sách hồ sơ sinh viên theo yêu cầu
Tạo tệp chứa danh sách hồ sơ sinh viên gồm mã số, họ tên, điểm trung bình. Sau đó đọc từ
tệp đã tạo vào 1 danh sách; sắp xếp giảm dần theo điểm trung bình và in ra danh sách sinh
viên theo các cột, có kèm theo cột chỉ số thứ tự.
Ví du ̣: File đầ u cau3.txt vào là Kế t quả in ra sau khi sắ p xế p là:
Masv01 – An – 8.1 1. Masv03 – Minh – 9. 6
Masv02 – Bình – 7.3 2. Masv01 – An – 8.1
Masv03 – Minh – 9.6 3. Masv02 – Bình – 7.3
Ý tưởng: Ta ̣o ra 1 dach sách các phầ n tử là các dictionary gồ m các key: ‘masv’, ‘ten’,
‘diem’.
Từ file đầ u vào ta có danh sách như sau:
[{‘masv’: ‘Masv01’,‘ten’: ‘An’ ,‘diem’: 8.1}, {‘masv’: ‘Masv02’ ,‘ten’: ‘Bình’ ,‘diem’:
7.3}, {‘masv’: ‘Masv03’ ,‘ten’: ‘Minh’ ,‘diem’: 9.6}] . Danh sách này gồ m 3 phầ n tử,
mỗi phầ n tử là 1 dictionary, mỗi dictionary sẽ có 3 că ̣p key:value.
Dùng hàm sorted và truyề n vào tham số để thực hiê ̣n sắ p xế p:
_list = [{'masv': 'Masv01', 'ten': 'An', 'diem': 8.1}, {'masv': 'Masv02', 'ten':
'Binh', 'diem': 7.3},
{'masv': 'Masv03', 'ten': 'Minh', 'diem': 9.6}]
print('Danh sach sau khi sap xep theo diem: ', _new)
Câu 4: Sử dụng danh sách các dictionary lưu họ tên thí sinh, số báo danh, điểm thi các
môn toán, lý, hóa và tổng điểm. Ghi danh sách thí sinh trúng tuyển (tổng điểm>=điểm
chuẩn) vào mô ̣t file, với điể m chuẩ n đươ ̣c nhâ ̣p từ bàn phím.
Ý tưởng: Ta ̣o ra 1 dach sách các phầ n tử là các dictionary gồ m các key: ‘sobaodanh’,
‘ten’, ‘toan’, ‘ly’, ‘hoa’, ‘tongdiem’.
Nhâ ̣p vào điể m chuẩ n n từ bàn phím
Duyê ̣t từng phầ n tử của danh sách đó, mỗi mô ̣t phầ n tử là 1 dict, nế u
dict[‘tongdiem’] > n thì cho vào danh sách mới lưu những ho ̣c sinh đủ điể m
chuẩ n.
Ta ̣o file và ghi danh sách mới ở trên vào file đó.