Download 100 Bài Tập Lập Trình Python (Tiếng Việt) Có lời giải Code mẫu – Tài liệu text

Download 100 Bài Tập Lập Trình Python (Tiếng Việt) Có lời giải Code mẫu

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (772.04 KB, 36 trang )

Bài 01:
Câu hỏi:
Viết chương trình tìm tất cả các số chia hết cho 7 nhưng không phải bội số của 5,
nằm trong đoạn 2000 và 3200 (tính cả 2000 và 3200). Các số thu được sẽ được in
thành chuỗi trên một dòng, cách nhau bằng dấu phẩy.
Gợi ý:
 Sử dụng range(#begin, #end)
Code mẫu:
j=[]
for i in range(2000, 3201):
if (i%7==0) and (i%5!=0):
j.append(str(i))
print (‘,’.join(j))

Bài 02:
Câu hỏi:
Viết một chương trình có thể tính giai thừa của một số cho trước. Kết quả được in
thành chuỗi trên một dòng, phân tách bởi dấu phẩy. Ví dụ, số cho trước là 8 thì kết
quả đầu ra phải là 40320.
Gợi ý:
 Trong trường hợp dữ liệu đầu vào được cung cấp, bạn hãy chọn cách để người
dùng nhập số vào.
Code mẫu:
x=int(input(“Nhập số cần tính giai thừa:”))
def fact(x):
if x == 0:
return 1
return x * fact(x – 1)
print (fact(x))

Bài 03:

Câu hỏi:
Với số nguyên n nhất định, hãy viết chương trình để tạo ra một dictionary chứa (i, i*i)
như là số nguyên từ 1 đến n (bao gồm cả 1 và n) sau đó in ra dictionary này. Ví dụ:
Giả sử số n là 8 thì đầu ra sẽ là: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64}.
Gợi ý:
 Viết lệnh yêu cầu nhập số nguyên n.
Code mẫu:
n=int(input(“Nhập vào một số:”))
d=dict()
for i in range(1,n+1):
d[i]=i*i
print (d)

Bài 04:
Câu hỏi:
Viết chương trình chấp nhận một chuỗi số, phân tách bằng dấu phẩy từ giao diện
điều khiển, tạo ra một danh sách và một tuple chứa mọi số.
Ví dụ: Đầu vào được cung cấp là 34,67,55,33,12,98 thì đầu ra là:
[’34’, ’67’, ’55’, ’33’, ’12’, ’98’]
(’34’, ’67’, ’55’, ’33’, ’12’, ’98’)
Gợi ý:
 Viết lệnh yêu cầu nhập vào các giá trị sau đó dùng quy tắc chuyển đổi kiểu dữ
liệu để hoàn tất.

Tài liệu được chia sẻ tại:

Code mẫu:
values=input(“Nhập vào các giá trị:”)
l=values.split(“,”)

t=tuple(l)
print (l)
print (t)

Bài 05:
Câu hỏi:
Định nghĩa một class có ít nhất 2 method:
getString: để nhận một chuỗi do người dùng nhập vào từ giao diện điều khiển.
printString: in chuỗi vừa nhập sang chữ hoa.
Thêm vào các hàm hiểm tra đơn giản để kiểm tra method của class.
Ví dụ: Chuỗi nhập vào là quantrimang.com thì đầu ra phải là: QUANTRIMANG.COM
Gợi ý:
 Sử dụng __init__ để xây dựng các tham số.
Code mẫu:
class InputOutString(object):
def __init__(self):
self.s = “”
def getString(self):
self.s = input(“Nhập chuỗi:”)

# Code by Quantrimang.com
def printString(self):
print (self.s.upper())
strObj = InputOutString()
strObj.getString()
strObj.printString()

Bài 06:
Câu hỏi:
Viết một method tính giá trị bình phương của một số.

Gợi ý:
 Sử dụng toán tử **.
Code mẫu:
x=int(input(“Nhập một số:”)) #nhập số cần tính bình phương từ giao diện
def square(num): #định nghĩa bình phương của một số
return num ** 2

# Code by Quantrimang.com
print (square(2)) #in bình phương của 2
print (square(3)) #in bình phương của 3
print (square(x)) #in bình phương của x

Vì đề bài không yêu cầu cụ thể bạn phải tính bình phương số có sẵn hay số nhập
vào nên mình dùng cả hai.
Bài 07:
Câu hỏi:
Python có nhiều hàm được tích hợp sẵn, nếu không biết cách sử dụng nó, bạn có
thể đọc tài liệu trực tuyến hoặc tìm vài cuốn sách. Nhưng Python cũng có sẵn tài liệu
về hàm cho mọi hàm tích hợp trong Python. Yêu cầu của bài tập này là viết một

Tài liệu được chia sẻ tại:

chương trình để in tài liệu về một số hàm Python được tích hợp sẵn như abs(), int(),
input() và thêm tài liệu cho hàm bạn tự định nghĩa.
Gợi ý:
 Sử dụng __doc__
Code mẫu:
print (abs.__doc__)
print (int.__doc__)

print (input.__doc__)

# Code by Quantrimang.com
def square(num):
”’Trả lại giá trị bình phương của số được nhập vào.
Số nhập vào phải là số nguyên.
”’
return num ** 2
print (square.__doc__)

Bài 08:
Câu hỏi:
Định nghĩa một lớp gồm có tham số lớp và có cùng tham số instance
Gợi ý:
 Khi định nghĩa tham số instance, cần thêm nó vào __init__
 Bạn có thể khởi tạo một đối tượng với tham số bắt đầu hoặc thiết lập giá trị sau
đó.
Code mẫu:
class Person:
# Định nghĩa lớp “name”
name = “Person”

# Code by Quantrimang.com
def __init__(self, name = None):
# self.name là biến instance
self.name = name
jeffrey = Person(“Jeffrey”)
print (“%s name is %s” % (Person.name, jeffrey.name))
nico = Person()
nico.name = “Nico”

print (“%s name is %s” % (Person.name, nico.name))

4. Bài tập Python level 2
Bài 09:
Câu hỏi:
Viết chương trình và in giá trị theo công thức cho trước: Q = √([(2 * C * D)/H]) (bằng
chữ: Q bằng căn bậc hai của [(2 nhân C nhân D) chia H]. Với giá trị cố định của C là
50, H là 30. D là dãy giá trị tùy biến, được nhập vào từ giao diện người dùng, các giá
trị của D được phân cách bằng dấu phẩy.
Ví dụ: Giả sử chuỗi giá trị của D nhập vào là 100,150,180 thì đầu ra sẽ là 18,22,24.
Gợi ý:
 Nếu đầu ra nhận được là một số dạng thập phân, bạn cần làm tròn thành giá trị
gần nhất, ví dụ 26.0 sẽ được in là 26.

Tài liệu được chia sẻ tại:

Trong trường hợp dữ liệu đầu vào được cung cấp cho câu hỏi, nó được giả định
là đầu vào do người dùng nhập từ giao diện điều khiển.
Code mẫu:

#!/usr/bin/env python
import math
c=50
h=30
value = []
items=[x for x in input(“Nhập giá trị của d: “).split(‘,’)]
for d in items:
value.append(str(int(round(math.sqrt(2*c*float(d)/h)))))

# Code by Quantrimang.com
print (‘,’.join(value))

Bài 10:
Câu hỏi:
Viết một chương trình có 2 chữ số, X, Y nhận giá trị từ đầu vào và tạo ra một mảng 2
chiều. Giá trị phần tử trong hàng thứ i và cột thứ j của mảng phải là i*j.
Lưu ý: i=0,1,…,X-1; j=0,1,…,Y-1.
Ví dụ: Giá trị X, Y nhập vào là 3,5 thì đầu ra là: [[0, 0, 0, 0, 0], [0, 1, 2, 3, 4], [0, 2, 4,
6, 8]]
Gợi ý:
 Viết lệnh để nhận giá trị X, Y từ giao diện điều khiển do người dùng nhập vào.
Code mẫu:
input_str = input(“Nhập X, Y: “)
dimensions=[int(x) for x in input_str.split(‘,’)]
rowNum=dimensions[0]
colNum=dimensions[1]
multilist = [[0 for col in range(colNum)] for row in range(rowNum)]

# Code by Quantrimang.com
for row in range(rowNum):
for col in range(colNum):
multilist[row][col]= row*col
print (multilist)

Bài 11:
Câu hỏi:
Viết một chương trình chấp nhận chuỗi từ do người dùng nhập vào, phân tách nhau
bởi dấu phẩy và in những từ đó thành chuỗi theo thứ tự bảng chữ cái, phân tách

nhau bằng dấu phẩy.
Giả sử đầu vào được nhập là: without,hello,bag,world, thì đầu ra sẽ
là: bag,hello,without,world.
Gợi ý:
Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giả
định là dữ liệu được người dùng nhập vào từ giao diện điều khiển.
Code mẫu:
items=[x for x in input(“Nhập một chuỗi: “).split(‘,’)]
items.sort()
print (‘,’.join(items))

Bài 12:
Câu hỏi:

Tài liệu được chia sẻ tại:

Viết một chương trình chấp nhận chuỗi là các dòng được nhập vào, chuyển các
dòng này thành chữ in hoa và in ra màn hình. Giả sử đầu vào là:
Hello world
Practice makes perfect
Thì đầu ra sẽ là:
HELLO WORLD
PRACTICE MAKES PERFECT
Gợi ý:
Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giả
định là dữ liệu được người dùng nhập vào từ giao diện điều khiển.
Code mẫu:
lines = []
while True:

s = input()
if s:
lines.append(s.upper())
else:
break;

# Bài Python 12, Code by Quantrimang.com
for sentence in lines:
print (sentence)

Bài 13:
Câu hỏi:
Viết một chương trình chấp nhận đầu vào là một chuỗi các từ tách biệt bởi khoảng
trắng, loại bỏ các từ trùng lặp, sắp xếp theo thứ tự bảng chữ cái, rồi in chúng.
Giả sử đầu vào là: hello world and practice makes perfect and hello world again
Thì đầu ra là: again and hello makes perfect practice world
Gợi ý:
 Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giả
định là dữ liệu được người dùng nhập vào từ giao diện điều khiển.
 Sử dụng set để loại bỏ dữ liệu trùng lặp tự động và dùng sorted() để sắp xếp dữ
liệu.
Code mẫu:
s = input(“Nhập chuỗi của bạn: “)
words = [word for word in s.split(” “)]
print (” “.join(sorted(list(set(words)))))

Bài 14:
Câu hỏi:
Viết một chương trình chấp nhận đầu vào là chuỗi các số nhị phân 4 chữ số, phân
tách bởi dấu phẩy, kiểm tra xem chúng có chia hết cho 5 không. Sau đó in các số

chia hết cho 5 thành dãy phân tách bởi dấu phẩy.
Ví dụ đầu vào là: 0100,0011,1010,1001
Đầu ra sẽ là: 1010
Gợi ý:
Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giả
định là dữ liệu được người dùng nhập vào từ giao diện điều khiển.

Tài liệu được chia sẻ tại:

Code mẫu:
value = []
items=[x for x in input(“Nhập các số nhị phân: “).split(‘,’)]
for p in items:
intp = int(p, 2)
if not intp%5:
value.append(p)

# Bài tập Python 14, Code by Quantrimang.com
print (‘,’.join(value))

Bài 15:
Câu hỏi:
Viết một chương trình tìm tất cả các số trong đoạn 1000 và 3000 (tính cả 2 số này)
sao cho tất cả các chữ số trong số đó là số chẵn. In các số tìm được thành chuỗi
cách nhau bởi dấu phẩy, trên một dòng.
Gợi ý:
Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giả
định là dữ liệu được người dùng nhập vào từ giao diện điều khiển.
Code mẫu:

values = []
for i in range(1000, 3001):
s = str(i)
if (int(s[0])%2==0) and (int(s[1])%2==0) and (int(s[2])%2==0) and
(int(s[3])%2==0):
values.append(s)
# Bài tập Python 15, Code by Quantrimang.com
print (“,”.join(values))

Bài 16:
Câu hỏi:
Viết một chương trình chấp nhận đầu vào là một câu, đếm số chữ cái và chữ số
trong câu đó. Giả sử đầu vào sau được cấp cho chương trình: hello world! 123
Thì đầu ra sẽ là:
Số chữ cái là: 10
Số chữ số là: 3
Gợi ý:
Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giả
định là dữ liệu được người dùng nhập vào từ giao diện điều khiển.
Code mẫu:
s = input(“Nhập câu của bạn: “)
# Bài tập Python 16, Code by Quantrimang.com
d={“DIGITS”:0, “LETTERS”:0}
for c in s:
if c.isdigit():
d[“DIGITS”]+=1
elif c.isalpha():
d[“LETTERS”]+=1
else:
pass

print (“Số chữ cái là:”, d[“LETTERS”])
print (“Số chữ số là:”, d[“DIGITS”])

Bài 17:
Câu hỏi:

Tài liệu được chia sẻ tại:

Viết một chương trình chấp nhận đầu vào là một câu, đếm chữ hoa, chữ thường.
Giả sử đầu vào là: Quản Trị Mạng
Thì đầu ra là:
Chữ hoa: 3
Chữ thường: 8
Gợi ý:
Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giả
định là dữ liệu được người dùng nhập vào từ giao diện điều khiển.
Code mẫu:
s = input(“Nhập câu của bạn: “)
d={“UPPER CASE”:0, “LOWER CASE”:0}
# Code by Quantrimang.com
for c in s:
if c.isupper():
d[“UPPER CASE”]+=1
elif c.islower():
d[“LOWER CASE”]+=1
else:
pass
print (“Chữ hoa:”, d[“UPPER CASE”])
print (“Chữ thường:”, d[“LOWER CASE”])

Bài 18:
Câu hỏi:
Viết một chương trình tính giá trị của a+aa+aaa+aaaa với a là số được nhập vào bởi
người dùng.
Giả sử a được nhập vào là 1 thì đầu ra sẽ là: 1234
Gợi ý:
Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giả
định là dữ liệu được người dùng nhập vào từ giao diện điều khiển.
Code mẫu:
a = input(“Nhập số a: “)
n1 = int( “%s” % a )
n2 = int( “%s%s” % (a,a) )
n3 = int( “%s%s%s” % (a,a,a) )
n4 = int( “%s%s%s%s” % (a,a,a,a) )
# Bài tập Python 18, Code by Quantrimang.com
print (“Tổng cần tính là: “,n1+n2+n3+n4)

Bài 19:
Câu hỏi:
Sử dụng một danh sách để lọc các số lẻ từ danh sách được người dùng nhập vào.
Giả sử đầu vào là: 1,2,3,4,5,6,7,8,9 thì đầu ra phải là: 1,3,5,7,9
Gợi ý:
Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giả
định là dữ liệu được người dùng nhập vào từ giao diện điều khiển.
Code mẫu:

Tài liệu được chia sẻ tại:

values = input(“Nhập dãy số của bạn, cách nhau bởi dấu phẩy: “)
numbers = [x for x in values.split(“,”) if int(x)%2!=0]
print (“,”.join(numbers))

Bài 20:
Câu hỏi:
Viết chương trình tính số tiền thực của một tài khoản ngân hàng dựa trên nhật ký
giao dịch được nhập vào từ giao diện điều khiển.
Định dạng nhật ký được hiển thị như sau:
D 100
W 200
(D là tiền gửi, W là tiền rút ra).
Giả sử đầu vào được cung cấp là:
D 300
D 300
W 200
D 100
Thì đầu ra sẽ là:
500
Gợi ý:
Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giả
định là dữ liệu được người dùng nhập vào từ giao diện điều khiển.
Code mẫu:
import sys
netAmount = 0
# Bài tập Python 20, Code by Quantrimang.com
while True:
s = input(“Nhập nhật ký giao dịch: “)
if not s:
break

values = s.split(” “)
operation = values[0]
amount = int(values[1])
if operation==”D”:
netAmount+=amount
elif operation==”W”:
netAmount-=amount
else:
pass
print (netAmount)

5. Bài tập Python level 3
Bài 21:
Câu hỏi:
Một website yêu cầu người dùng nhập tên người dùng và mật khẩu để đăng ký. Viết
chương trình để kiểm tra tính hợp lệ của mật khẩu mà người dùng nhập vào.
Các tiêu chí kiểm tra mật khẩu bao gồm:

Tài liệu được chia sẻ tại:

1. Ít nhất 1 chữ cái nằm trong [a-z]
2. Ít nhất 1 số nằm trong [0-9]
3. Ít nhất 1 kí tự nằm trong [A-Z]
4. Ít nhất 1 ký tự nằm trong [$ # @]
5. Độ dài mật khẩu tối thiểu: 6
6. Độ dài mật khẩu tối đa: 12
Chương trình phải chấp nhận một chuỗi mật khẩu phân tách nhau bởi dấu phẩy và
kiểm tra xem chúng có đáp ứng những tiêu chí trên hay không. Mật khẩu hợp lệ sẽ
được in, mỗi mật khẩu cách nhau bởi dấu phẩy.

Ví dụ mật khẩu nhập vào chương trình là: ABd1234@1,a F1#,2w3E*,2We3345
Thì đầu ra sẽ là: ABd1234@1
Gợi ý:
Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giả
định là dữ liệu được người dùng nhập vào từ giao diện điều khiển.
Code mẫu:
import re
value = []
items=[x for x in input(“Nhập mật khẩu: “).split(‘,’)]
# Bài tập Python 21, Code by Quantrimang.com
for p in items:
if len(p)<6 or len(p)>12:
continue
else:
pass
if not re.search(“[a-z]”,p):
continue
elif not re.search(“[0-9]”,p):
continue
elif not re.search(“[A-Z]”,p):
continue
elif not re.search(“[$#@]”,p):
continue
elif re.search(“\s”,p):
continue
else:
pass
value.append(p)
print (“,”.join(value))

Bài 22:
Câu hỏi:
Viết chương trình sắp xếp tuple (name, age, score) theo thứ tự tăng dần, name là
string, age và height là number. Tuple được nhập vào bởi người dùng. Tiêu chí sắp
xếp là:
Sắp xếp theo name sau đó sắp xếp theo age, sau đó sắp xếp theo score. Ưu tiên là
tên > tuổi > điểm.
Nếu đầu vào là:
Tom,19,80
John,20,90
Jony,17,91
Jony,17,93
Json,21,85

Tài liệu được chia sẻ tại:

Thì đầu ra sẽ là:
[(‘John’, ’20’, ’90’), (‘Jony’, ’17’, ’91’), (‘Jony’, ’17’, ’93’), (‘Json’, ’21’, ’85’), (‘Tom’, ’19’,
’80’)]
Gợi ý:
Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giả
định là dữ liệu được người dùng nhập vào từ giao diện điều khiển.
Sử dụng itemgetter để chấp nhận nhiều key sắp xếp.
Code mẫu:
from operator import itemgetter, attrgetter

# Bài tập Python 22 Code by Quantrimang.com
l = []
while True:

s = input()
if not s:
break
l.append(tuple(s.split(“,”)))
print (sorted(l, key=itemgetter(0,1,2)))

Bài 23:
Câu hỏi:
Xác định một class với generator có thể lặp lại các số nằm trong khoảng 0 và n, và
chia hết cho 7.
Gợi ý:
Sử dụng yield.
Code mẫu:
def putNumbers(n):
i = 0
while ij=i
i=i+1
if j%7==0:
yield j

# Bài tập Python 23 Code by Quantrimang.com
for i in putNumbers (100):
print (i)

Bài 24:
Câu hỏi:
Một Robot di chuyển trong mặt phẳng bắt đầu từ điểm đầu tiên (0,0). Robot có thể di
chuyển theo hướng UP, DOWN, LEFT và RIGHT với những bước nhất định. Dấu di
chuyển của robot được đánh hiển thị như sau:

UP 5
DOWN 3
LEFT 3
RIGHT 3
Các con số sau phía sau hướng di chuyển chính là số bước đi. Hãy viết chương
trình để tính toán khoảng cách từ vị trí hiện tại đến vị trí đầu tiên, sau khi robot đã di

Tài liệu được chia sẻ tại:

chuyển một quãng đường. Nếu khoảng cách là một số thập phân chỉ cần in só
nguyên gần nhất.
Ví dụ: Nếu tuple sau đây là input của chương trình:
UP 5
DOWN 3
LEFT 3
RIGHT 2
thì đầu ra sẽ là 2.
Gợi ý:
Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giả
định là dữ liệu được người dùng nhập vào từ giao diện điều khiển.
Code mẫu:
import math
pos = [0,0]
while True:
s = input()
if not s:
break
movement = s.split(” “)
direction = movement[0]

steps = int(movement[1])
if direction==”UP”:
pos[0]+=steps
elif direction==”DOWN”:
pos[0]-=steps
elif direction==”LEFT”:
pos[1]-=steps
elif direction==”RIGHT”:
pos[1]+=steps
else:
pass

# Bài tập Python 24 Code by Quantrimang.com
print (int(round(math.sqrt(pos[1]**2+pos[0]**2))))

Bài 25:
Câu hỏi:
Viết chương trình tính tần suất các từ từ input. Output được xuất ra sau khi đã sắp
xếp theo bảng chữ cái.
Giả sử input là: New to Python or choosing between Python 2 and Python 3? Read
Python 2 or Python 3.
Thì output phải là:
2:2
3.:1
3?:1
New:1
Python:5
Read:1
and:1
between:1

choosing:1
or:2
to:1

Tài liệu được chia sẻ tại:

Gợi ý:
Trong trường hợp dữ liệu đầu vào được cung cấp cho câu hỏi, nó phải được giả
định là một input được nhập từ giao diện điều khiển.
Code mẫu:
freq = {} # frequency of words in text
line = input()
for word in line.split():
freq[word] = freq.get(word,0)+1
# Bài tập Python 25 Code by Quantrimang.com
words = sorted(freq.keys())
for w in words:
print (“%s:%d” % (w,freq[w]))

6. Bài tập Python khác
Bài 26:
Câu hỏi:
Định nghĩa 1 hàm có thể tính tổng hai số.
Gợi ý:
Định nghĩa 1 hàm với 2 số là đối số. Bạn có thể tính tổng trong hàm và trả về giá trị.
Code mẫu:
def SumFunction(number1, number2): #định nghĩa hàm tính tổng
return number1+number2
print (SumFunction(5,7)) #in tổng 2 số 5 và 7

Bài 27:
Câu hỏi:
Định nghĩa một hàm có thể chuyển số nguyên thành chuỗi và in nó ra giao diện điều
khiển
Gợi ý:
Sử dụng str() để chuyển đổi một số thành chuỗi.
Code mẫu:
def printValue(n):
print (str(n))
printValue(3)

Bài 28:
Câu hỏi:
Định nghĩa hàm có thể nhận hai số nguyên trong dạng chuỗi và tính tổng của chúng,
sau đó in tổng ra giao diện điều khiển.
Gợi ý:
Sử dụng int() để chuyển đổi một chuỗi thành số nguyên.
Code mẫu:
def printValue(s1,s2):
print (int(s1)+int(s2))
printValue(“3″,”4”) #Kết quả là 7

Bài 29:
Câu hỏi:

Tài liệu được chia sẻ tại:

Định nghĩa hàm có thể nhận 2 chuỗi từ input và nối chúng sau đó in ra giao diện điều

khiển
Gợi ý:
Sử dụng + để nối các chuỗi.
Code mẫu:
def printValue(s1,s2):
print (s1+s2)
printValue(“3″,”4”) #Kết quả là 34

Bài 30:
Câu hỏi:
Định nghĩa một hàm có input là 2 chuỗi và in chuỗi có độ dài lớn hơn trong giao diện
điều khiển. Nếu 2 chuỗi có chiều dài như nhau thì in tất cả các chuỗi theo dòng.
Gợi ý:
Sử dụng hàm len() để lấy chiều dài của một chuỗi
Code mẫu:
def printValue(s1,s2):

# Bài tập Python 30 Code by Quantrimang.com
len1 = len(s1)
len2 = len(s2)
if len1>len2:
print (s1)
elif len2>len1:
print (s2)
else:
print(s1)
print (s2)
printValue(“one”,”three”)

Bài 31:

Câu hỏi:
Định nghĩa hàm có thể chấp nhận input là số nguyên và in “Đây là một số chẵn” nếu
nó chẵn và in “Đây là một số lẻ” nếu là số lẻ.
Gợi ý:
Sử dụng toán tử % để kiểm tra xem số đó chẵn hay lẻ.
Code mẫu:
def checkValue(n):
if n%2 == 0:
print (“Đây là một số chẵn”)
else:
print (“Đây là một số lẻ”)
checkValue(7)

Bài 32:
Câu hỏi:
Định nghĩa một hàm có thể in dictionary chứa key là các số từ 1 đến 3 (bao gồm cả
hai số) và các giá trị bình phương của chúng.
Gợi ý:
 Sử dụng dict[key]=value để nhập mục vào dictionary.
 Sử dụng toán từ ** để lấy bình phương của một số.
Code mẫu:

Tài liệu được chia sẻ tại:

def printDict():
d=dict()
d[1]=1
d[2]=2**2
d[3]=3**2

print (d)
# Bài tập Python 32, Code by Quantrimang.com
printDict()

Chạy code trên bạn sẽ được kết quả là một dictionary như sau: {1: 1, 2: 4, 3: 9}. Nếu
chưa hiểu lắm về kiểu dữ liệu dictionary này bạn hãy đọc lại bài: Kiểu dữ liệu trong
Python: chuỗi, số, list, tuple, set và dictionary
Bài 33:
Câu hỏi:
Định nghĩa một hàm có thể in dictionary chứa các key là số từ 1 đến 20 (bao gồm cả
1 và 20) và các giá trị bình phương của chúng.
Gợi ý:
 Sử dụng dict[key]=value để nhập mục vào dictionary.
 Sử dụng toán từ ** để lấy bình phương của một số.
 Sử dujnng range() cho các vòng lặp.
Code mẫu:
def printDict():
d=dict()
for i in range(1,21):
d[i]=i**2
print (d)
# Bài tập Python 33, Code by Quantrimang.com
printDict()

Kết quả khi chạy code trên là: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81,
10: 100, 11: 121, 12: 144, 13: 169, 14: 196, 15: 225, 16: 256, 17: 289, 18: 324, 19:
361, 20: 400}
Bài 34:
Câu hỏi:
Định nghĩa một hàm có thể tạo dictionary, chứa các key là số từ 1 đến 20 (bao gồm

cả 1 và 20) và các giá trị bình phương của chúng. Hàm chỉ in các giá trị mà thôi.
Gợi ý:
 Sử dụng dict[key]=value để nhập mục vào dictionary.
 Sử dụng toán từ ** để lấy bình phương của một số.
 Sử dụng range() cho các vòng lặp.
 Sử dụng keys() để di lặp các key trong dictionary. Có thể sử dụng item() để nhận
cặp key/value.
Code mẫu:
def printDict():
d=dict()
for i in range(1,21):
d[i]=i**2
for (k,v) in d.items():
print (v)
# Bài tập Python 34, Code by Quantrimang.com
printDict()

Kết quả bạn nhận được khi chạy code trên là các giá trị bình phương của số từ 1
đến 20.
Bài 35:

Tài liệu được chia sẻ tại:

Câu hỏi:
Định nghĩa một hàm có thể tạo ra một dictionary chứa key là những số từ 1 đến 20
(bao gồm cả 1 và 20) và các giá trị bình phương của key. Hàm chỉ cần in các key.
Gợi ý:
Tương tự như bài 34.
Code mẫu:

def printDict():
d=dict()
for i in range(1,21):
d[i]=i**2
for k in d.keys():
print (k)
# Bài Python 35, Code by Quantrimang.com
printDict()

Chạy code trên bạn sẽ nhận được các key trong dictionary, chính là các số từ 1 đến
20.
Bài 36:
Câu hỏi:
Định nghĩa một hàm có thể tạo và in list chứa các giá trị bình phương của các số từ
1 đến 20 (tính cả 1 và 20).
Gợi ý:
 Sử dụng toán tử ** để lấy giá trị bình phương.
 Sử dụng range() cho vòng lặp.
 Sử dụng list.append() để thêm giá trị vào list.
Code mẫu:
def printList():
li=list()
for i in range(1,21):
li.append(i**2)
print (li)
# Bài Python 36, Code by Quantrimang.com
printList()

Chạy code trên bạn sẽ nhận được một list chứa các giá trị bình phương của các số
từ 1 đến 20.

Bài 37:
Câu hỏi:
Định nghĩa một hàm có thể tạo list chứa các giá trị bình phương của các số từ 1 đến
20 (bao gồm cả 1 và 20) và in 5 mục đầu tiên trong list.
Gợi ý:
 Sử dụng toán tử ** để lấy giá trị bình phương.
 Sử dụng range() cho vòng lặp.
 Sử dụng list.append() để thêm giá trị vào list.
 Sử dụng [n1:n2] để cắt list
Code mẫu:
def printList():
li=list()
for i in range(1,21):
li.append(i**2)
print (li[:5])

Tài liệu được chia sẻ tại:

# Bài Python 37, Code by Quantrimang.com
printList()

Chạy code trên bạn sẽ nhận được một list chứa giá trị bình phương của các số từ 1
đến 5.
Bài 38:
Câu hỏi:
Định nghĩa một hàm có thể tạo ra list chứa các giá trị bình phương của các số từ 1
đến 20 (bao gồm cả 1 và 20), rồi in 5 mục cuối cùng trong list.
Gợi ý:
Tương tự bài 37.

Code mẫu:
def printList():
li=list()
for i in range(1,21):
li.append(i**2)
print li[-5:]
# Bài Python 38, Code by Quantrimang.com
printList()

Khi chạy code trên bạn sẽ nhận được list chứa giá trị bình phương của 16, 17, 18,
19, 20.
Bài 39:
Câu hỏi:
Định nghĩa một hàm có thể tạo list chứa giá trị bình phương của các số từ 1 đến 20
(bao gồm cả 1 và 20). Sau đó in tất cả các giá trị của list, trừ 5 mục đầu tiên.
Gợi ý:
Tương tư bài 37, 38.
Code mẫu:
def printList():
li=list()
for i in range(1,21):
li.append(i**2)
print (li[5:])
printList()

Kết quả:
[36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400]

Bài 40:
Câu hỏi:

Định nghĩa 1 hàm có thể tạo và in một tuple chứa các giá trị bình phương của các số
từ 1 đến 20 (tính cả 1 và 20).
Gợi ý:
 Sử dụng toán tử ** để lấy giá trị bình phương.
 Sử dụng range() cho vòng lặp.
 Sử dụng list.append() để thêm giá trị vào list.
 Sử dụng tuple() để lấy giá tuple từ list.
Code mẫu:
def printTuple():
li=list()

Tài liệu được chia sẻ tại:

for i in range(1,21):
li.append(i**2)
print (tuple(li))
printTuple()

Kết quả:
(1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289,
324, 361, 400)

Bài 41:
Câu hỏi:
Với tuple (1,2,3,4,5,6,7,8,9,10) cho trước, viết một chương trình in một nửa số giá trị
đầu tiên trong 1 dòng và 1 nửa số giá trị cuối trong 1 dòng.
Gợi ý:
Sử dụng [n1:n2] để lấy một phần từ tuple.
Code mẫu:

tp=(1,2,3,4,5,6,7,8,9,10)
tp1=tp[:5]
tp2=tp[5:]
print (tp1)
print (tp2)

Kết quả:
(1, 2, 3, 4, 5)
(6, 7, 8, 9, 10)

Bài 42:
Câu hỏi:
Viết một chương trình để tạo tuple khác, chứa các giá trị là số chẵn trong
tuple (1,2,3,4,5,6,7,8,9,10) cho trước.
Gợi ý:
 Sử dụng for để lặp tuple.
 Sử dụng tuple() để tạo tuple từ list.
Code mẫu:
tp=(1,2,3,4,5,6,7,8,9,10)
li=list()
for i in tp:
if tp[-i]%2==0:
li.append(tp[i])
tp2=tuple(li)
print (tp2)

Kết quả:
(2, 4, 6, 8, 10)

Bài 43:

Câu hỏi:
Viết một chương trình để tạo ra và in tuple chứa các số chẵn được lấy từ tuple
(1,2,3,4,5,6,7,8,9,10).
Gợi ý:
 Sử dụng “for” để lặp lại tuple.
 Sử dụng tuple() để tạo ra một tuple từ một danh sách.
Code mẫu:

Tài liệu được chia sẻ tại:

tp=(1,2,3,4,5,6,7,8,9,10)
li=list()
for i in tp:
if tp[i-1]%2==0:
li.append(tp[i-1])
tp2=tuple(li)
print tp2

Kết quả:
(2, 4, 6, 8, 10)
Bài 44:
Yêu cầu:
Viết một chương trình Python nhận chuỗi nhập vào bởi người dùng, in “Yes” nếu
chuỗi là “yes” hoặc “YES” hoặc “Yes”, nếu không in “No”.
Gợi ý:
 Sử dụng lệnh if để kiểm tra điều kiện.
Code mẫu:
s = input ()
if s == “yes” or s == “YES” or s == “Yes”:

print (“Yes”)
else:
print (“No”)

Bài 45:
Yêu cầu:
Viết chương trình Python có thể lọc các số chẵn trong danh sách sử dụng hàm filter.
Danh sách là [1,2,3,4,5,6,7,8,9,10].
Gợi ý:
 Sử dụng filter() để lọc các yếu tố trong một list.
 Sử dụng lambda để định nghĩa hàm chưa biết.
Code mẫu:
li = [1,2,3,4,5,6,7,8,9,10]
evenNumbers = list(filter (lambda x: x% 2 == 0, li))
print (evenNumbers)

Kết quả:
[2, 4, 6, 8, 10]
Lưu ý: Trong các phiên bản Python trước, bạn chỉ cần dùng hàm filter sẽ được trả
kết quả đầu ra là một danh sách. Nhưng từ Python 3, phải dùng list(filter()) thì kết
quả trả về mới là list. Điều này cũng áp dụng với map().
Bài 46:
Yêu cầu:
Viết chương trình Python dùng map() để tạo list chứa các giá trị bình phương của
các số trong [1,2,3,4,5,6,7,8,9,10].
Gợi ý:
 Sử dụng map() để tạo list.
 Sử dụng lambda để định nghĩa hàm chưa biết.
Code mẫu:
li = [1,2,3,4,5,6,7,8,9,10]

squaredNumbers = list(map (lambda x: x ** 2, li))
print (squaredNumbers)

Kết quả:

Tài liệu được chia sẻ tại:

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
Bài 47:
Yêu cầu:
Viết chương trình Python dùng map() và filter() để tạo list chứa giá trị bình phương
của các số chẵn trong [1,2,3,4,5,6,7,8,9,10].
Gợi ý:
 Dùng map() để tạo list.
 Dùng filter() để lọc thành phần trong list.
 Dùng lambda để định nghĩa hàm chưa biết.
Code mẫu:
li = [1,2,3,4,5,6,7,8,9,10]
squareOfEvenNumbers = list (map (lambda x: x ** 2, filter (lambda x: x% 2
== 0, li)))
print (squareOfEvenNumbers)

Kết quả:
[4, 16, 36, 64, 100]
Bài 48:
Yêu cầu:
Viết chương trình Python dùng filter() để tạo danh sách chứa các số chẵn trong đoạn
[1,20].
Gợi ý:

 Giống bài 45.
Code mẫu:
evenNumbers = list(filter (lambda x: x% 2 == 0, range (1,21)))
print (evenNumbers)

Kết quả:
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
Bài 49:
Yêu cầu:
Viết chương trình Python sử dụng map() để tạo list chứa giá trị bình phương của các
số trong đoạn [1,20].
Gợi ý:
 Giống bài 46.
Code mẫu:
squaredNumbers = list(map(lambda x: x ** 2, range (1,21)))
print (squaredNumbers)

Kết quả:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361,
400]
Bài 50:
Yêu cầu:
Định nghĩa một class có tên là Vietnam, với static method là printNationality.
Gợi ý:
Sử dụng @staticmethod để định nghĩa class với static method.

Tài liệu được chia sẻ tại:

Code mẫu:

class Vietnam (object):
@staticmethod
def printNationality ():
print (“Vietnam”)

# Bài Python 50, Code by Quantrimang.com
VietnamVodich = Vietnam ()
VietnamVodich.printNationality ()
Vietnam.printNationality ()

Bài 51:
Yêu cầu:
Định nghĩa một class tên Vietnam và class con của nó là Hanoi.
Gợi ý:
 Sử dụng Subclass(ParentClass) để định nghĩa một class con.
Code mẫu:
class Vietnam(object):
pass
class Hanoi(Vietnam):
pass

# Bài Python 51, Code by Quantrimang.com
VietnamVodich = Vietnam()
NguoiHanoi = Hanoi()
print (VietnamVodich)
print (NguoiHanoi)

Bài 52:
Yêu cầu:
Định nghĩa một class có tên là Circle có thể được xây dựng từ bán kính. Circle có

một method có thể tính diện tích.
Gợi ý:
Sử dụng def methodName(self) để định nghĩa method.
Code mẫu:
class Circle(object):
def __init__(self, r):
self.radius = r

# Bài Python 52, Code by Quantrimang.com
def area(self):
return self.radius**2*3.14
aCircle = Circle(2)
print (aCircle.area())

Trong code trên, ta thực hiện khai báo lớp Circle, và method tính diện tích cho hình
tròn, với bán kính r=2, kết quả khi chạy code sẽ được là: 12.56.
Bài 53:
Yêu cầu:
Định nghĩa class có tên là Hinhchunhat được xây dựng bằng chiều dài và chiều rộng.
Class Hinhchunhat có method để tính diện tích.
Gợi ý:
 Như bài 52.
Code mẫu:
class Hinhchunhat(object):
def __init__(self, l, w):
self.dai = l

Tài liệu được chia sẻ tại:

self.rong = w

# Bài Python 53, Code by Quantrimang.com
def area(self):
return self.dai*self.rong
aHinhchunhat = Hinhchunhat(10,2)
print (aHinhchunhat.area())

Trong code trên chiều dài hình nhữ nhật là 10, chiều rộng là 2. Chạy code ta được
kết quả là 20.
Bài 54:
Yêu cầu:
Định nghĩa một class có tên là Shape và class con là Square. Square có hàm init để
lấy đối số là chiều dài. Cả 2 class đều có hàm area để in diện tích của hình, diện tích
mặc định của Shape là 0.
Gợi ý:
Để ghi đè một method trong super class, chúng ta có thể định nghĩa một method có
cùng tên trong super class.
Code mẫu:
class Shape(object):
def __init__(self):
pass
def area(self):
return 0

# Bài Python 54, Code by Quantrimang.com
class Square(Shape):
def __init__(self, l):
Shape.__init__(self)
self.length = l

def area(self):
return self.length*self.length
aSquare= Square(3)
print (aSquare.area())

Với chiều dài là 3, khi chạy code trên ta được kết quả là 9.
Bài 55:
Yêu cầu:
Đưa ra một RuntimeError exception.
Gợi ý:
 Sử dụng raise() để đưa ra exception.
Code mẫu:
Code đơn giản:
raise RuntimeError(‘something wrong’)

Code phức tạp:
# Bài Python 55, Code by Quantrimang.com
class RuntimeError(Exception):
def __init__(self, mismatch):
Exception.__init__(self, mismatch)
try:
print (“And now, the Vocational Guidance Counsellor Sketch.”)
raise RuntimeError(“Does not have proper hat”)

Tài liệu được chia sẻ tại:

print (“This print statement will not be reached.”)
except RuntimeError as problem:
print (“Vocation problem: {0}”.format(problem))

Bài 56:
Yêu cầu:
Viết hàm để tính 5/0 và sử dụng try/exception để bắt lỗi.
Gợi ý:
 Sử dụng try/exception để bắt lỗi.
Code mẫu:
def throws():
return 5/0

# Bài Python 56, Code by Quantrimang.com
try:
throws()
except ZeroDivisionError:
print (“Chia một số cho 0!”)
except Exception as problem:
print (‘Bắt được một exception’)
finally:
print (‘Phép tính bị hủy’)

Kết quả khi chạy code trên ta nhận được như sau:

Bài 57:
Yêu cầu:
Định nghĩa một class exception tùy chỉnh, nhận một thông báo là thuộc tính.
Gợi ý:
 Để định nghĩa một class exception tùy chỉnh, chúng ta phải định nghĩa một class
kế thừa từ Exception.
Code mẫu:
class MyError(Exception):

“””My own exception class
# Bài Python 57, Code by Quantrimang.com
Attributes:
msg — explanation of the error
“””
def __init__(self, msg):
self.msg = msg
error = MyError(“Có gì đó sai sai!”)
print (error)

Khi chạy code trên, thông báo “Có gì đó sai sai!” sẽ được in ra màn hình.
Bài 58:
Yêu cầu:
Giả sử rằng chúng ta có vài địa chỉ email dạng , hãy
viết một chương trình để in username của địa chỉ email cụ thể. Cả username và
companyname chỉ bao gồm chữ cái.

Tài liệu được chia sẻ tại:

Ví dụ: Nếu cung cấp địa chỉ email thì đầu ra sẽ là: QTM.
Trong trường hợp dữ liệu đầu vào không có sẵn, ta giả định nó được người dùng
nhập vào từ giao diện điều khiển.
Gợi ý:
Sử dụng \w để kiểm tra chữ cái.
Code mẫu:
# Bài Python 58, Code by Quantrimang.com
import re
emailAddress = input()
pat2 = “(\w+)@((\w+\.)+(com))”

re2 = re.match(pat2,emailAddress)
print (re2.group(1))

Khi chạy code trên, nó sẽ nhận email được nhập vào bởi người dùng và trả về
username của email, nếu nhập vào bạn sẽ nhận được kết
quả là qtm.
Bài 59:
Yêu cầu:
Tương tự như bài 58, nhưng lần này ta sẽ viết hàm để lấy companyname.
Gợi ý:
 Giống bài 58.
Code mẫu:
# Bài Python 59, Code by Quantrimang.com
import re
emailAddress = input()
pat2 = “(\w+)@(\w+)\.(com)”
r2 = re.match(pat2,emailAddress)
print (r2.group(2))

Đây là kết quả khi chạy code bài 58 và 59:

Bài 60:
Yêu cầu:
Viết một chương trình chấp nhận chuỗi từ được phân tách bằng khoảng trống và in
các từ chỉ gồm chữ số.
Ví du: Nếu những từ sau đây là đầu vào của chương trình: 3 quantrimang.com và 2
python. Đầu ra sẽ là [‘3’, ‘2’]
Gợi ý:

Tài liệu được chia sẻ tại:

Sử dụng re.findall() để tìm tất cả chuỗi con sử dụng regex (biểu thức tiêu
chuẩn).
Code mẫu:

# Bài Python 60, Code by Quantrimang.com
import re
s = input()
print (re.findall(“\d+”,s))

Kết quả khi chạy code trên sẽ như sau:

Bài 61:
Yêu cầu:
In chuỗi Unicode “Hello world”.
Gợi ý:
 Sử dụng định dạng u’string’ để định nghĩa chuỗi Unicode.
Code mẫu:
# Bài Python 61, Code by Quantrimang.com
unicodeString = u”Hello world!”
print (unicodeString)

Bài 62:
Yêu cầu:
Viết chương trình để đọc chuỗi ASCII và chuyển đổi nó sang một chuỗi Unicode
được mã hóa bằng UTF-8.
Gợi ý:
 Sử dụng hàm encode() để chuyển đổi.

Code mẫu:
# Bài Python 62, Code by Quantrimang.com
s = input()
v = s.encode() # có thể dùng v=s.encode(‘utf-8’)
print (v)

Bài 63:
Yêu cầu:
Viết comment đặc biệt để chỉ định file code nguồn Python ở Unicode.
Code mẫu:
# -*- coding: utf-8 -*#Bài Python 63, Code by Quantrimang.com

Bài 64:
Yêu cầu:

Viết một chương trình tính 1/2 + 2/3 + 3/4 + … + n/(n + 1) với một n là số được nhập
vào (n> 0).
Ví dụ, nếu n là số sau đây được nhập vào:
5

Tài liệu được chia sẻ tại:

Thì đầu ra phải là:
3.55
Gợi ý:
 Sử dụng float() để chuyển số nguyên sang số thập phân.
Code mẫu:
#Bài Python 64, Code by Quantrimang.com
n=int(input(“Nhập số n >0: “))

sum=0.0
for i in range(1,n+1):
sum += float(float(i)/(i+1))
print (sum)

Bài 65:
Yêu cầu:
Viết chương trình tính: f(n)=f(n-1)+100 khi n>0 và f(0)=1, với n là số được nhập vào
(n>0).
Ví dụ: Nếu n được nhập vào là 5 thì đầu ra phải là 500.
Gợi ý:
 Chúng ta có thể định nghĩa hàm đệ quy trong Python.
Code mẫu:
def f(n):
if n==0:
return 0
else:
return f(n-1)+100
#Bài Python 65, Code by Quantrimang.com
n=int(input(“Nhập số n>0: “))
print (f(n))

Bài 66:
Yêu cầu:

Dãy Fibonacci được tính dựa trên công thức sau:
f(n)=0 nếu n=0
f(n)=1 nếu n=1
f(n)=f(n-1)+f(n-2) nếu n>1
Hãy viết chương trình tính giá trị của f(n) với n là số được người dùng nhập vào. Ví

dụ: Nếu n được nhập vào là 7 thì đầu ra của chương trình sẽ là 13.
Gợi ý:
Tương tự như bài 65, ta cũng sử dụng hàm đệ quy trong Python.
Code mẫu:
def f(n):
if n == 0: return 0
elif n == 1: return 1
else: return f(n-1)+f(n-2)

#Bài Python 66, Code by Quantrimang.com
n=int(input(“Nhập số n: “))
print (f(n))

Bài 67:
Yêu cầu:
Dãy Fibonacci được tính dựa trên công thức sau:

Tài liệu được chia sẻ tại:

Câu hỏi:Với số nguyên n nhất định, hãy viết chương trình để tạo ra một dictionary chứa (i, i*i)như là số nguyên từ 1 đến n (bao gồm cả 1 và n) sau đó in ra dictionary này. Ví dụ:Giả sử số n là 8 thì đầu ra sẽ là: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64}.Gợi ý: Viết lệnh yêu cầu nhập số nguyên n.Code mẫu:n=int(input(“Nhập vào một số:”))d=dict()for i in range(1,n+1):d[i]=i*iprint (d)Bài 04:Câu hỏi:Viết chương trình chấp nhận một chuỗi số, phân tách bằng dấu phẩy từ giao diệnđiều khiển, tạo ra một danh sách và một tuple chứa mọi số.Ví dụ: Đầu vào được cung cấp là 34,67,55,33,12,98 thì đầu ra là:[’34’, ’67’, ’55’, ’33’, ’12’, ’98’](’34’, ’67’, ’55’, ’33’, ’12’, ’98’)Gợi ý: Viết lệnh yêu cầu nhập vào các giá trị sau đó dùng quy tắc chuyển đổi kiểu dữliệu để hoàn tất.Tài liệu được chia sẻ tại:Code mẫu:values=input(“Nhập vào các giá trị:”)l=values.split(“,”)t=tuple(l)print (l)print (t)Bài 05:Câu hỏi:Định nghĩa một class có ít nhất 2 method:getString: để nhận một chuỗi do người dùng nhập vào từ giao diện điều khiển.printString: in chuỗi vừa nhập sang chữ hoa.Thêm vào các hàm hiểm tra đơn giản để kiểm tra method của class.Ví dụ: Chuỗi nhập vào là quantrimang.com thì đầu ra phải là: QUANTRIMANG.COMGợi ý: Sử dụng __init__ để xây dựng các tham số.Code mẫu:class InputOutString(object):def __init__(self):self.s = “”def getString(self):self.s = input(“Nhập chuỗi:”)# Code by Quantrimang.comdef printString(self):print (self.s.upper())strObj = InputOutString()strObj.getString()strObj.printString()Bài 06:Câu hỏi:Viết một method tính giá trị bình phương của một số.Gợi ý: Sử dụng toán tử **.Code mẫu:x=int(input(“Nhập một số:”)) #nhập số cần tính bình phương từ giao diệndef square(num): #định nghĩa bình phương của một sốreturn num ** 2# Code by Quantrimang.comprint (square(2)) #in bình phương của 2print (square(3)) #in bình phương của 3print (square(x)) #in bình phương của xVì đề bài không yêu cầu cụ thể bạn phải tính bình phương số có sẵn hay số nhậpvào nên mình dùng cả hai.Bài 07:Câu hỏi:Python có nhiều hàm được tích hợp sẵn, nếu không biết cách sử dụng nó, bạn cóthể đọc tài liệu trực tuyến hoặc tìm vài cuốn sách. Nhưng Python cũng có sẵn tài liệuvề hàm cho mọi hàm tích hợp trong Python. Yêu cầu của bài tập này là viết mộtTài liệu được chia sẻ tại:chương trình để in tài liệu về một số hàm Python được tích hợp sẵn như abs(), int(),input() và thêm tài liệu cho hàm bạn tự định nghĩa.Gợi ý: Sử dụng __doc__Code mẫu:print (abs.__doc__)print (int.__doc__)print (input.__doc__)# Code by Quantrimang.comdef square(num):”’Trả lại giá trị bình phương của số được nhập vào.Số nhập vào phải là số nguyên.”’return num ** 2print (square.__doc__)Bài 08:Câu hỏi:Định nghĩa một lớp gồm có tham số lớp và có cùng tham số instanceGợi ý: Khi định nghĩa tham số instance, cần thêm nó vào __init__ Bạn có thể khởi tạo một đối tượng với tham số bắt đầu hoặc thiết lập giá trị sauđó.Code mẫu:class Person:# Định nghĩa lớp “name”name = “Person”# Code by Quantrimang.comdef __init__(self, name = None):# self.name là biến instanceself.name = namejeffrey = Person(“Jeffrey”)print (“%s name is %s” % (Person.name, jeffrey.name))nico = Person()nico.name = “Nico”print (“%s name is %s” % (Person.name, nico.name))4. Bài tập Python level 2Bài 09:Câu hỏi:Viết chương trình và in giá trị theo công thức cho trước: Q = √([(2 * C * D)/H]) (bằngchữ: Q bằng căn bậc hai của [(2 nhân C nhân D) chia H]. Với giá trị cố định của C là50, H là 30. D là dãy giá trị tùy biến, được nhập vào từ giao diện người dùng, các giátrị của D được phân cách bằng dấu phẩy.Ví dụ: Giả sử chuỗi giá trị của D nhập vào là 100,150,180 thì đầu ra sẽ là 18,22,24.Gợi ý: Nếu đầu ra nhận được là một số dạng thập phân, bạn cần làm tròn thành giá trịgần nhất, ví dụ 26.0 sẽ được in là 26.Tài liệu được chia sẻ tại:Trong trường hợp dữ liệu đầu vào được cung cấp cho câu hỏi, nó được giả địnhlà đầu vào do người dùng nhập từ giao diện điều khiển.Code mẫu:#!/usr/bin/env pythonimport mathc=50h=30value = []items=[x for x in input(“Nhập giá trị của d: “).split(‘,’)]for d in items:value.append(str(int(round(math.sqrt(2*c*float(d)/h)))))# Code by Quantrimang.comprint (‘,’.join(value))Bài 10:Câu hỏi:Viết một chương trình có 2 chữ số, X, Y nhận giá trị từ đầu vào và tạo ra một mảng 2chiều. Giá trị phần tử trong hàng thứ i và cột thứ j của mảng phải là i*j.Lưu ý: i=0,1,…,X-1; j=0,1,…,Y-1.Ví dụ: Giá trị X, Y nhập vào là 3,5 thì đầu ra là: [[0, 0, 0, 0, 0], [0, 1, 2, 3, 4], [0, 2, 4,6, 8]]Gợi ý: Viết lệnh để nhận giá trị X, Y từ giao diện điều khiển do người dùng nhập vào.Code mẫu:input_str = input(“Nhập X, Y: “)dimensions=[int(x) for x in input_str.split(‘,’)]rowNum=dimensions[0]colNum=dimensions[1]multilist = [[0 for col in range(colNum)] for row in range(rowNum)]# Code by Quantrimang.comfor row in range(rowNum):for col in range(colNum):multilist[row][col]= row*colprint (multilist)Bài 11:Câu hỏi:Viết một chương trình chấp nhận chuỗi từ do người dùng nhập vào, phân tách nhaubởi dấu phẩy và in những từ đó thành chuỗi theo thứ tự bảng chữ cái, phân táchnhau bằng dấu phẩy.Giả sử đầu vào được nhập là: without,hello,bag,world, thì đầu ra sẽlà: bag,hello,without,world.Gợi ý:Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giảđịnh là dữ liệu được người dùng nhập vào từ giao diện điều khiển.Code mẫu:items=[x for x in input(“Nhập một chuỗi: “).split(‘,’)]items.sort()print (‘,’.join(items))Bài 12:Câu hỏi:Tài liệu được chia sẻ tại:Viết một chương trình chấp nhận chuỗi là các dòng được nhập vào, chuyển cácdòng này thành chữ in hoa và in ra màn hình. Giả sử đầu vào là:Hello worldPractice makes perfectThì đầu ra sẽ là:HELLO WORLDPRACTICE MAKES PERFECTGợi ý:Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giảđịnh là dữ liệu được người dùng nhập vào từ giao diện điều khiển.Code mẫu:lines = []while True:s = input()if s:lines.append(s.upper())else:break;# Bài Python 12, Code by Quantrimang.comfor sentence in lines:print (sentence)Bài 13:Câu hỏi:Viết một chương trình chấp nhận đầu vào là một chuỗi các từ tách biệt bởi khoảngtrắng, loại bỏ các từ trùng lặp, sắp xếp theo thứ tự bảng chữ cái, rồi in chúng.Giả sử đầu vào là: hello world and practice makes perfect and hello world againThì đầu ra là: again and hello makes perfect practice worldGợi ý: Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giảđịnh là dữ liệu được người dùng nhập vào từ giao diện điều khiển. Sử dụng set để loại bỏ dữ liệu trùng lặp tự động và dùng sorted() để sắp xếp dữliệu.Code mẫu:s = input(“Nhập chuỗi của bạn: “)words = [word for word in s.split(” “)]print (” “.join(sorted(list(set(words)))))Bài 14:Câu hỏi:Viết một chương trình chấp nhận đầu vào là chuỗi các số nhị phân 4 chữ số, phântách bởi dấu phẩy, kiểm tra xem chúng có chia hết cho 5 không. Sau đó in các sốchia hết cho 5 thành dãy phân tách bởi dấu phẩy.Ví dụ đầu vào là: 0100,0011,1010,1001Đầu ra sẽ là: 1010Gợi ý:Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giảđịnh là dữ liệu được người dùng nhập vào từ giao diện điều khiển.Tài liệu được chia sẻ tại:Code mẫu:value = []items=[x for x in input(“Nhập các số nhị phân: “).split(‘,’)]for p in items:intp = int(p, 2)if not intp%5:value.append(p)# Bài tập Python 14, Code by Quantrimang.comprint (‘,’.join(value))Bài 15:Câu hỏi:Viết một chương trình tìm tất cả các số trong đoạn 1000 và 3000 (tính cả 2 số này)sao cho tất cả các chữ số trong số đó là số chẵn. In các số tìm được thành chuỗicách nhau bởi dấu phẩy, trên một dòng.Gợi ý:Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giảđịnh là dữ liệu được người dùng nhập vào từ giao diện điều khiển.Code mẫu:values = []for i in range(1000, 3001):s = str(i)if (int(s[0])%2==0) and (int(s[1])%2==0) and (int(s[2])%2==0) and(int(s[3])%2==0):values.append(s)# Bài tập Python 15, Code by Quantrimang.comprint (“,”.join(values))Bài 16:Câu hỏi:Viết một chương trình chấp nhận đầu vào là một câu, đếm số chữ cái và chữ sốtrong câu đó. Giả sử đầu vào sau được cấp cho chương trình: hello world! 123Thì đầu ra sẽ là:Số chữ cái là: 10Số chữ số là: 3Gợi ý:Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giảđịnh là dữ liệu được người dùng nhập vào từ giao diện điều khiển.Code mẫu:s = input(“Nhập câu của bạn: “)# Bài tập Python 16, Code by Quantrimang.comd={“DIGITS”:0, “LETTERS”:0}for c in s:if c.isdigit():d[“DIGITS”]+=1elif c.isalpha():d[“LETTERS”]+=1else:passprint (“Số chữ cái là:”, d[“LETTERS”])print (“Số chữ số là:”, d[“DIGITS”])Bài 17:Câu hỏi:Tài liệu được chia sẻ tại:Viết một chương trình chấp nhận đầu vào là một câu, đếm chữ hoa, chữ thường.Giả sử đầu vào là: Quản Trị MạngThì đầu ra là:Chữ hoa: 3Chữ thường: 8Gợi ý:Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giảđịnh là dữ liệu được người dùng nhập vào từ giao diện điều khiển.Code mẫu:s = input(“Nhập câu của bạn: “)d={“UPPER CASE”:0, “LOWER CASE”:0}# Code by Quantrimang.comfor c in s:if c.isupper():d[“UPPER CASE”]+=1elif c.islower():d[“LOWER CASE”]+=1else:passprint (“Chữ hoa:”, d[“UPPER CASE”])print (“Chữ thường:”, d[“LOWER CASE”])Bài 18:Câu hỏi:Viết một chương trình tính giá trị của a+aa+aaa+aaaa với a là số được nhập vào bởingười dùng.Giả sử a được nhập vào là 1 thì đầu ra sẽ là: 1234Gợi ý:Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giảđịnh là dữ liệu được người dùng nhập vào từ giao diện điều khiển.Code mẫu:a = input(“Nhập số a: “)n1 = int( “%s” % a )n2 = int( “%s%s” % (a,a) )n3 = int( “%s%s%s” % (a,a,a) )n4 = int( “%s%s%s%s” % (a,a,a,a) )# Bài tập Python 18, Code by Quantrimang.comprint (“Tổng cần tính là: “,n1+n2+n3+n4)Bài 19:Câu hỏi:Sử dụng một danh sách để lọc các số lẻ từ danh sách được người dùng nhập vào.Giả sử đầu vào là: 1,2,3,4,5,6,7,8,9 thì đầu ra phải là: 1,3,5,7,9Gợi ý:Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giảđịnh là dữ liệu được người dùng nhập vào từ giao diện điều khiển.Code mẫu:Tài liệu được chia sẻ tại:values = input(“Nhập dãy số của bạn, cách nhau bởi dấu phẩy: “)numbers = [x for x in values.split(“,”) if int(x)%2!=0]print (“,”.join(numbers))Bài 20:Câu hỏi:Viết chương trình tính số tiền thực của một tài khoản ngân hàng dựa trên nhật kýgiao dịch được nhập vào từ giao diện điều khiển.Định dạng nhật ký được hiển thị như sau:D 100W 200(D là tiền gửi, W là tiền rút ra).Giả sử đầu vào được cung cấp là:D 300D 300W 200D 100Thì đầu ra sẽ là:500Gợi ý:Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giảđịnh là dữ liệu được người dùng nhập vào từ giao diện điều khiển.Code mẫu:import sysnetAmount = 0# Bài tập Python 20, Code by Quantrimang.comwhile True:s = input(“Nhập nhật ký giao dịch: “)if not s:breakvalues = s.split(” “)operation = values[0]amount = int(values[1])if operation==”D”:netAmount+=amountelif operation==”W”:netAmount-=amountelse:passprint (netAmount)5. Bài tập Python level 3Bài 21:Câu hỏi:Một website yêu cầu người dùng nhập tên người dùng và mật khẩu để đăng ký. Viếtchương trình để kiểm tra tính hợp lệ của mật khẩu mà người dùng nhập vào.Các tiêu chí kiểm tra mật khẩu bao gồm:Tài liệu được chia sẻ tại:1. Ít nhất 1 chữ cái nằm trong [a-z]2. Ít nhất 1 số nằm trong [0-9]3. Ít nhất 1 kí tự nằm trong [A-Z]4. Ít nhất 1 ký tự nằm trong [$ # @]5. Độ dài mật khẩu tối thiểu: 66. Độ dài mật khẩu tối đa: 12Chương trình phải chấp nhận một chuỗi mật khẩu phân tách nhau bởi dấu phẩy vàkiểm tra xem chúng có đáp ứng những tiêu chí trên hay không. Mật khẩu hợp lệ sẽđược in, mỗi mật khẩu cách nhau bởi dấu phẩy.Ví dụ mật khẩu nhập vào chương trình là: ABd1234@1,a F1#,2w3E*,2We3345Thì đầu ra sẽ là: ABd1234@1Gợi ý:Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giảđịnh là dữ liệu được người dùng nhập vào từ giao diện điều khiển.Code mẫu:import revalue = []items=[x for x in input(“Nhập mật khẩu: “).split(‘,’)]# Bài tập Python 21, Code by Quantrimang.comfor p in items:if len(p)<6 or len(p)>12:continueelse:passif not re.search(“[a-z]”,p):continueelif not re.search(“[0-9]”,p):continueelif not re.search(“[A-Z]”,p):continueelif not re.search(“[$#@]”,p):continueelif re.search(“\s”,p):continueelse:passvalue.append(p)print (“,”.join(value))Bài 22:Câu hỏi:Viết chương trình sắp xếp tuple (name, age, score) theo thứ tự tăng dần, name làstring, age và height là number. Tuple được nhập vào bởi người dùng. Tiêu chí sắpxếp là:Sắp xếp theo name sau đó sắp xếp theo age, sau đó sắp xếp theo score. Ưu tiên làtên > tuổi > điểm.Nếu đầu vào là:Tom,19,80John,20,90Jony,17,91Jony,17,93Json,21,85Tài liệu được chia sẻ tại:Thì đầu ra sẽ là:[(‘John’, ’20’, ’90’), (‘Jony’, ’17’, ’91’), (‘Jony’, ’17’, ’93’), (‘Json’, ’21’, ’85’), (‘Tom’, ’19’,’80’)]Gợi ý:Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giảđịnh là dữ liệu được người dùng nhập vào từ giao diện điều khiển.Sử dụng itemgetter để chấp nhận nhiều key sắp xếp.Code mẫu:from operator import itemgetter, attrgetter# Bài tập Python 22 Code by Quantrimang.coml = []while True:s = input()if not s:breakl.append(tuple(s.split(“,”)))print (sorted(l, key=itemgetter(0,1,2)))Bài 23:Câu hỏi:Xác định một class với generator có thể lặp lại các số nằm trong khoảng 0 và n, vàchia hết cho 7.Gợi ý:Sử dụng yield.Code mẫu:def putNumbers(n):i = 0while ij=ii=i+1if j%7==0:yield j# Bài tập Python 23 Code by Quantrimang.comfor i in putNumbers (100):print (i)Bài 24:Câu hỏi:Một Robot di chuyển trong mặt phẳng bắt đầu từ điểm đầu tiên (0,0). Robot có thể dichuyển theo hướng UP, DOWN, LEFT và RIGHT với những bước nhất định. Dấu dichuyển của robot được đánh hiển thị như sau:UP 5DOWN 3LEFT 3RIGHT 3Các con số sau phía sau hướng di chuyển chính là số bước đi. Hãy viết chươngtrình để tính toán khoảng cách từ vị trí hiện tại đến vị trí đầu tiên, sau khi robot đã diTài liệu được chia sẻ tại:chuyển một quãng đường. Nếu khoảng cách là một số thập phân chỉ cần in sónguyên gần nhất.Ví dụ: Nếu tuple sau đây là input của chương trình:UP 5DOWN 3LEFT 3RIGHT 2thì đầu ra sẽ là 2.Gợi ý:Trong trường hợp dữ liệu đầu vào được nhập vào chương trình nó nên được giảđịnh là dữ liệu được người dùng nhập vào từ giao diện điều khiển.Code mẫu:import mathpos = [0,0]while True:s = input()if not s:breakmovement = s.split(” “)direction = movement[0]steps = int(movement[1])if direction==”UP”:pos[0]+=stepselif direction==”DOWN”:pos[0]-=stepselif direction==”LEFT”:pos[1]-=stepselif direction==”RIGHT”:pos[1]+=stepselse:pass# Bài tập Python 24 Code by Quantrimang.comprint (int(round(math.sqrt(pos[1]**2+pos[0]**2))))Bài 25:Câu hỏi:Viết chương trình tính tần suất các từ từ input. Output được xuất ra sau khi đã sắpxếp theo bảng chữ cái.Giả sử input là: New to Python or choosing between Python 2 and Python 3? ReadPython 2 or Python 3.Thì output phải là:2:23.:13?:1New:1Python:5Read:1and:1between:1choosing:1or:2to:1Tài liệu được chia sẻ tại:Gợi ý:Trong trường hợp dữ liệu đầu vào được cung cấp cho câu hỏi, nó phải được giảđịnh là một input được nhập từ giao diện điều khiển.Code mẫu:freq = {} # frequency of words in textline = input()for word in line.split():freq[word] = freq.get(word,0)+1# Bài tập Python 25 Code by Quantrimang.comwords = sorted(freq.keys())for w in words:print (“%s:%d” % (w,freq[w]))6. Bài tập Python khácBài 26:Câu hỏi:Định nghĩa 1 hàm có thể tính tổng hai số.Gợi ý:Định nghĩa 1 hàm với 2 số là đối số. Bạn có thể tính tổng trong hàm và trả về giá trị.Code mẫu:def SumFunction(number1, number2): #định nghĩa hàm tính tổngreturn number1+number2print (SumFunction(5,7)) #in tổng 2 số 5 và 7Bài 27:Câu hỏi:Định nghĩa một hàm có thể chuyển số nguyên thành chuỗi và in nó ra giao diện điềukhiểnGợi ý:Sử dụng str() để chuyển đổi một số thành chuỗi.Code mẫu:def printValue(n):print (str(n))printValue(3)Bài 28:Câu hỏi:Định nghĩa hàm có thể nhận hai số nguyên trong dạng chuỗi và tính tổng của chúng,sau đó in tổng ra giao diện điều khiển.Gợi ý:Sử dụng int() để chuyển đổi một chuỗi thành số nguyên.Code mẫu:def printValue(s1,s2):print (int(s1)+int(s2))printValue(“3″,”4”) #Kết quả là 7Bài 29:Câu hỏi:Tài liệu được chia sẻ tại:Định nghĩa hàm có thể nhận 2 chuỗi từ input và nối chúng sau đó in ra giao diện điềukhiểnGợi ý:Sử dụng + để nối các chuỗi.Code mẫu:def printValue(s1,s2):print (s1+s2)printValue(“3″,”4”) #Kết quả là 34Bài 30:Câu hỏi:Định nghĩa một hàm có input là 2 chuỗi và in chuỗi có độ dài lớn hơn trong giao diệnđiều khiển. Nếu 2 chuỗi có chiều dài như nhau thì in tất cả các chuỗi theo dòng.Gợi ý:Sử dụng hàm len() để lấy chiều dài của một chuỗiCode mẫu:def printValue(s1,s2):# Bài tập Python 30 Code by Quantrimang.comlen1 = len(s1)len2 = len(s2)if len1>len2:print (s1)elif len2>len1:print (s2)else:print(s1)print (s2)printValue(“one”,”three”)Bài 31:Câu hỏi:Định nghĩa hàm có thể chấp nhận input là số nguyên và in “Đây là một số chẵn” nếunó chẵn và in “Đây là một số lẻ” nếu là số lẻ.Gợi ý:Sử dụng toán tử % để kiểm tra xem số đó chẵn hay lẻ.Code mẫu:def checkValue(n):if n%2 == 0:print (“Đây là một số chẵn”)else:print (“Đây là một số lẻ”)checkValue(7)Bài 32:Câu hỏi:Định nghĩa một hàm có thể in dictionary chứa key là các số từ 1 đến 3 (bao gồm cảhai số) và các giá trị bình phương của chúng.Gợi ý: Sử dụng dict[key]=value để nhập mục vào dictionary. Sử dụng toán từ ** để lấy bình phương của một số.Code mẫu:Tài liệu được chia sẻ tại:def printDict():d=dict()d[1]=1d[2]=2**2d[3]=3**2print (d)# Bài tập Python 32, Code by Quantrimang.comprintDict()Chạy code trên bạn sẽ được kết quả là một dictionary như sau: {1: 1, 2: 4, 3: 9}. Nếuchưa hiểu lắm về kiểu dữ liệu dictionary này bạn hãy đọc lại bài: Kiểu dữ liệu trongPython: chuỗi, số, list, tuple, set và dictionaryBài 33:Câu hỏi:Định nghĩa một hàm có thể in dictionary chứa các key là số từ 1 đến 20 (bao gồm cả1 và 20) và các giá trị bình phương của chúng.Gợi ý: Sử dụng dict[key]=value để nhập mục vào dictionary. Sử dụng toán từ ** để lấy bình phương của một số. Sử dujnng range() cho các vòng lặp.Code mẫu:def printDict():d=dict()for i in range(1,21):d[i]=i**2print (d)# Bài tập Python 33, Code by Quantrimang.comprintDict()Kết quả khi chạy code trên là: {1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81,10: 100, 11: 121, 12: 144, 13: 169, 14: 196, 15: 225, 16: 256, 17: 289, 18: 324, 19:361, 20: 400}Bài 34:Câu hỏi:Định nghĩa một hàm có thể tạo dictionary, chứa các key là số từ 1 đến 20 (bao gồmcả 1 và 20) và các giá trị bình phương của chúng. Hàm chỉ in các giá trị mà thôi.Gợi ý: Sử dụng dict[key]=value để nhập mục vào dictionary. Sử dụng toán từ ** để lấy bình phương của một số. Sử dụng range() cho các vòng lặp. Sử dụng keys() để di lặp các key trong dictionary. Có thể sử dụng item() để nhậncặp key/value.Code mẫu:def printDict():d=dict()for i in range(1,21):d[i]=i**2for (k,v) in d.items():print (v)# Bài tập Python 34, Code by Quantrimang.comprintDict()Kết quả bạn nhận được khi chạy code trên là các giá trị bình phương của số từ 1đến 20.Bài 35:Tài liệu được chia sẻ tại:Câu hỏi:Định nghĩa một hàm có thể tạo ra một dictionary chứa key là những số từ 1 đến 20(bao gồm cả 1 và 20) và các giá trị bình phương của key. Hàm chỉ cần in các key.Gợi ý:Tương tự như bài 34.Code mẫu:def printDict():d=dict()for i in range(1,21):d[i]=i**2for k in d.keys():print (k)# Bài Python 35, Code by Quantrimang.comprintDict()Chạy code trên bạn sẽ nhận được các key trong dictionary, chính là các số từ 1 đến20.Bài 36:Câu hỏi:Định nghĩa một hàm có thể tạo và in list chứa các giá trị bình phương của các số từ1 đến 20 (tính cả 1 và 20).Gợi ý: Sử dụng toán tử ** để lấy giá trị bình phương. Sử dụng range() cho vòng lặp. Sử dụng list.append() để thêm giá trị vào list.Code mẫu:def printList():li=list()for i in range(1,21):li.append(i**2)print (li)# Bài Python 36, Code by Quantrimang.comprintList()Chạy code trên bạn sẽ nhận được một list chứa các giá trị bình phương của các sốtừ 1 đến 20.Bài 37:Câu hỏi:Định nghĩa một hàm có thể tạo list chứa các giá trị bình phương của các số từ 1 đến20 (bao gồm cả 1 và 20) và in 5 mục đầu tiên trong list.Gợi ý: Sử dụng toán tử ** để lấy giá trị bình phương. Sử dụng range() cho vòng lặp. Sử dụng list.append() để thêm giá trị vào list. Sử dụng [n1:n2] để cắt listCode mẫu:def printList():li=list()for i in range(1,21):li.append(i**2)print (li[:5])Tài liệu được chia sẻ tại:# Bài Python 37, Code by Quantrimang.comprintList()Chạy code trên bạn sẽ nhận được một list chứa giá trị bình phương của các số từ 1đến 5.Bài 38:Câu hỏi:Định nghĩa một hàm có thể tạo ra list chứa các giá trị bình phương của các số từ 1đến 20 (bao gồm cả 1 và 20), rồi in 5 mục cuối cùng trong list.Gợi ý:Tương tự bài 37.Code mẫu:def printList():li=list()for i in range(1,21):li.append(i**2)print li[-5:]# Bài Python 38, Code by Quantrimang.comprintList()Khi chạy code trên bạn sẽ nhận được list chứa giá trị bình phương của 16, 17, 18,19, 20.Bài 39:Câu hỏi:Định nghĩa một hàm có thể tạo list chứa giá trị bình phương của các số từ 1 đến 20(bao gồm cả 1 và 20). Sau đó in tất cả các giá trị của list, trừ 5 mục đầu tiên.Gợi ý:Tương tư bài 37, 38.Code mẫu:def printList():li=list()for i in range(1,21):li.append(i**2)print (li[5:])printList()Kết quả:[36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361, 400]Bài 40:Câu hỏi:Định nghĩa 1 hàm có thể tạo và in một tuple chứa các giá trị bình phương của các sốtừ 1 đến 20 (tính cả 1 và 20).Gợi ý: Sử dụng toán tử ** để lấy giá trị bình phương. Sử dụng range() cho vòng lặp. Sử dụng list.append() để thêm giá trị vào list. Sử dụng tuple() để lấy giá tuple từ list.Code mẫu:def printTuple():li=list()Tài liệu được chia sẻ tại:for i in range(1,21):li.append(i**2)print (tuple(li))printTuple()Kết quả:(1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289,324, 361, 400)Bài 41:Câu hỏi:Với tuple (1,2,3,4,5,6,7,8,9,10) cho trước, viết một chương trình in một nửa số giá trịđầu tiên trong 1 dòng và 1 nửa số giá trị cuối trong 1 dòng.Gợi ý:Sử dụng [n1:n2] để lấy một phần từ tuple.Code mẫu:tp=(1,2,3,4,5,6,7,8,9,10)tp1=tp[:5]tp2=tp[5:]print (tp1)print (tp2)Kết quả:(1, 2, 3, 4, 5)(6, 7, 8, 9, 10)Bài 42:Câu hỏi:Viết một chương trình để tạo tuple khác, chứa các giá trị là số chẵn trongtuple (1,2,3,4,5,6,7,8,9,10) cho trước.Gợi ý: Sử dụng for để lặp tuple. Sử dụng tuple() để tạo tuple từ list.Code mẫu:tp=(1,2,3,4,5,6,7,8,9,10)li=list()for i in tp:if tp[-i]%2==0:li.append(tp[i])tp2=tuple(li)print (tp2)Kết quả:(2, 4, 6, 8, 10)Bài 43:Câu hỏi:Viết một chương trình để tạo ra và in tuple chứa các số chẵn được lấy từ tuple(1,2,3,4,5,6,7,8,9,10).Gợi ý: Sử dụng “for” để lặp lại tuple. Sử dụng tuple() để tạo ra một tuple từ một danh sách.Code mẫu:Tài liệu được chia sẻ tại:tp=(1,2,3,4,5,6,7,8,9,10)li=list()for i in tp:if tp[i-1]%2==0:li.append(tp[i-1])tp2=tuple(li)print tp2Kết quả:(2, 4, 6, 8, 10)Bài 44:Yêu cầu:Viết một chương trình Python nhận chuỗi nhập vào bởi người dùng, in “Yes” nếuchuỗi là “yes” hoặc “YES” hoặc “Yes”, nếu không in “No”.Gợi ý: Sử dụng lệnh if để kiểm tra điều kiện.Code mẫu:s = input ()if s == “yes” or s == “YES” or s == “Yes”:print (“Yes”)else:print (“No”)Bài 45:Yêu cầu:Viết chương trình Python có thể lọc các số chẵn trong danh sách sử dụng hàm filter.Danh sách là [1,2,3,4,5,6,7,8,9,10].Gợi ý: Sử dụng filter() để lọc các yếu tố trong một list. Sử dụng lambda để định nghĩa hàm chưa biết.Code mẫu:li = [1,2,3,4,5,6,7,8,9,10]evenNumbers = list(filter (lambda x: x% 2 == 0, li))print (evenNumbers)Kết quả:[2, 4, 6, 8, 10]Lưu ý: Trong các phiên bản Python trước, bạn chỉ cần dùng hàm filter sẽ được trảkết quả đầu ra là một danh sách. Nhưng từ Python 3, phải dùng list(filter()) thì kếtquả trả về mới là list. Điều này cũng áp dụng với map().Bài 46:Yêu cầu:Viết chương trình Python dùng map() để tạo list chứa các giá trị bình phương củacác số trong [1,2,3,4,5,6,7,8,9,10].Gợi ý: Sử dụng map() để tạo list. Sử dụng lambda để định nghĩa hàm chưa biết.Code mẫu:li = [1,2,3,4,5,6,7,8,9,10]squaredNumbers = list(map (lambda x: x ** 2, li))print (squaredNumbers)Kết quả:Tài liệu được chia sẻ tại:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]Bài 47:Yêu cầu:Viết chương trình Python dùng map() và filter() để tạo list chứa giá trị bình phươngcủa các số chẵn trong [1,2,3,4,5,6,7,8,9,10].Gợi ý: Dùng map() để tạo list. Dùng filter() để lọc thành phần trong list. Dùng lambda để định nghĩa hàm chưa biết.Code mẫu:li = [1,2,3,4,5,6,7,8,9,10]squareOfEvenNumbers = list (map (lambda x: x ** 2, filter (lambda x: x% 2== 0, li)))print (squareOfEvenNumbers)Kết quả:[4, 16, 36, 64, 100]Bài 48:Yêu cầu:Viết chương trình Python dùng filter() để tạo danh sách chứa các số chẵn trong đoạn[1,20].Gợi ý: Giống bài 45.Code mẫu:evenNumbers = list(filter (lambda x: x% 2 == 0, range (1,21)))print (evenNumbers)Kết quả:[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]Bài 49:Yêu cầu:Viết chương trình Python sử dụng map() để tạo list chứa giá trị bình phương của cácsố trong đoạn [1,20].Gợi ý: Giống bài 46.Code mẫu:squaredNumbers = list(map(lambda x: x ** 2, range (1,21)))print (squaredNumbers)Kết quả:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361,400]Bài 50:Yêu cầu:Định nghĩa một class có tên là Vietnam, với static method là printNationality.Gợi ý:Sử dụng @staticmethod để định nghĩa class với static method.Tài liệu được chia sẻ tại:Code mẫu:class Vietnam (object):@staticmethoddef printNationality ():print (“Vietnam”)# Bài Python 50, Code by Quantrimang.comVietnamVodich = Vietnam ()VietnamVodich.printNationality ()Vietnam.printNationality ()Bài 51:Yêu cầu:Định nghĩa một class tên Vietnam và class con của nó là Hanoi.Gợi ý: Sử dụng Subclass(ParentClass) để định nghĩa một class con.Code mẫu:class Vietnam(object):passclass Hanoi(Vietnam):pass# Bài Python 51, Code by Quantrimang.comVietnamVodich = Vietnam()NguoiHanoi = Hanoi()print (VietnamVodich)print (NguoiHanoi)Bài 52:Yêu cầu:Định nghĩa một class có tên là Circle có thể được xây dựng từ bán kính. Circle cómột method có thể tính diện tích.Gợi ý:Sử dụng def methodName(self) để định nghĩa method.Code mẫu:class Circle(object):def __init__(self, r):self.radius = r# Bài Python 52, Code by Quantrimang.comdef area(self):return self.radius**2*3.14aCircle = Circle(2)print (aCircle.area())Trong code trên, ta thực hiện khai báo lớp Circle, và method tính diện tích cho hìnhtròn, với bán kính r=2, kết quả khi chạy code sẽ được là: 12.56.Bài 53:Yêu cầu:Định nghĩa class có tên là Hinhchunhat được xây dựng bằng chiều dài và chiều rộng.Class Hinhchunhat có method để tính diện tích.Gợi ý: Như bài 52.Code mẫu:class Hinhchunhat(object):def __init__(self, l, w):self.dai = lTài liệu được chia sẻ tại:self.rong = w# Bài Python 53, Code by Quantrimang.comdef area(self):return self.dai*self.rongaHinhchunhat = Hinhchunhat(10,2)print (aHinhchunhat.area())Trong code trên chiều dài hình nhữ nhật là 10, chiều rộng là 2. Chạy code ta đượckết quả là 20.Bài 54:Yêu cầu:Định nghĩa một class có tên là Shape và class con là Square. Square có hàm init đểlấy đối số là chiều dài. Cả 2 class đều có hàm area để in diện tích của hình, diện tíchmặc định của Shape là 0.Gợi ý:Để ghi đè một method trong super class, chúng ta có thể định nghĩa một method cócùng tên trong super class.Code mẫu:class Shape(object):def __init__(self):passdef area(self):return 0# Bài Python 54, Code by Quantrimang.comclass Square(Shape):def __init__(self, l):Shape.__init__(self)self.length = ldef area(self):return self.length*self.lengthaSquare= Square(3)print (aSquare.area())Với chiều dài là 3, khi chạy code trên ta được kết quả là 9.Bài 55:Yêu cầu:Đưa ra một RuntimeError exception.Gợi ý: Sử dụng raise() để đưa ra exception.Code mẫu:Code đơn giản:raise RuntimeError(‘something wrong’)Code phức tạp:# Bài Python 55, Code by Quantrimang.comclass RuntimeError(Exception):def __init__(self, mismatch):Exception.__init__(self, mismatch)try:print (“And now, the Vocational Guidance Counsellor Sketch.”)raise RuntimeError(“Does not have proper hat”)Tài liệu được chia sẻ tại:print (“This print statement will not be reached.”)except RuntimeError as problem:print (“Vocation problem: {0}”.format(problem))Bài 56:Yêu cầu:Viết hàm để tính 5/0 và sử dụng try/exception để bắt lỗi.Gợi ý: Sử dụng try/exception để bắt lỗi.Code mẫu:def throws():return 5/0# Bài Python 56, Code by Quantrimang.comtry:throws()except ZeroDivisionError:print (“Chia một số cho 0!”)except Exception as problem:print (‘Bắt được một exception’)finally:print (‘Phép tính bị hủy’)Kết quả khi chạy code trên ta nhận được như sau:Bài 57:Yêu cầu:Định nghĩa một class exception tùy chỉnh, nhận một thông báo là thuộc tính.Gợi ý: Để định nghĩa một class exception tùy chỉnh, chúng ta phải định nghĩa một classkế thừa từ Exception.Code mẫu:class MyError(Exception):”””My own exception class# Bài Python 57, Code by Quantrimang.comAttributes:msg — explanation of the error”””def __init__(self, msg):self.msg = msgerror = MyError(“Có gì đó sai sai!”)print (error)Khi chạy code trên, thông báo “Có gì đó sai sai!” sẽ được in ra màn hình.Bài 58:Yêu cầu:Giả sử rằng chúng ta có vài địa chỉ email dạng , hãyviết một chương trình để in username của địa chỉ email cụ thể. Cả username vàcompanyname chỉ bao gồm chữ cái.Tài liệu được chia sẻ tại:Ví dụ: Nếu cung cấp địa chỉ email thì đầu ra sẽ là: QTM.Trong trường hợp dữ liệu đầu vào không có sẵn, ta giả định nó được người dùngnhập vào từ giao diện điều khiển.Gợi ý:Sử dụng \w để kiểm tra chữ cái.Code mẫu:# Bài Python 58, Code by Quantrimang.comimport reemailAddress = input()pat2 = “(\w+)@((\w+\.)+(com))”re2 = re.match(pat2,emailAddress)print (re2.group(1))Khi chạy code trên, nó sẽ nhận email được nhập vào bởi người dùng và trả vềusername của email, nếu nhập vào bạn sẽ nhận được kếtquả là qtm.Bài 59:Yêu cầu:Tương tự như bài 58, nhưng lần này ta sẽ viết hàm để lấy companyname.Gợi ý: Giống bài 58.Code mẫu:# Bài Python 59, Code by Quantrimang.comimport reemailAddress = input()pat2 = “(\w+)@(\w+)\.(com)”r2 = re.match(pat2,emailAddress)print (r2.group(2))Đây là kết quả khi chạy code bài 58 và 59:Bài 60:Yêu cầu:Viết một chương trình chấp nhận chuỗi từ được phân tách bằng khoảng trống và incác từ chỉ gồm chữ số.Ví du: Nếu những từ sau đây là đầu vào của chương trình: 3 quantrimang.com và 2python. Đầu ra sẽ là [‘3’, ‘2’]Gợi ý:Tài liệu được chia sẻ tại:Sử dụng re.findall() để tìm tất cả chuỗi con sử dụng regex (biểu thức tiêuchuẩn).Code mẫu:# Bài Python 60, Code by Quantrimang.comimport res = input()print (re.findall(“\d+”,s))Kết quả khi chạy code trên sẽ như sau:Bài 61:Yêu cầu:In chuỗi Unicode “Hello world”.Gợi ý: Sử dụng định dạng u’string’ để định nghĩa chuỗi Unicode.Code mẫu:# Bài Python 61, Code by Quantrimang.comunicodeString = u”Hello world!”print (unicodeString)Bài 62:Yêu cầu:Viết chương trình để đọc chuỗi ASCII và chuyển đổi nó sang một chuỗi Unicodeđược mã hóa bằng UTF-8.Gợi ý: Sử dụng hàm encode() để chuyển đổi.Code mẫu:# Bài Python 62, Code by Quantrimang.coms = input()v = s.encode() # có thể dùng v=s.encode(‘utf-8’)print (v)Bài 63:Yêu cầu:Viết comment đặc biệt để chỉ định file code nguồn Python ở Unicode.Code mẫu:# -*- coding: utf-8 -*#Bài Python 63, Code by Quantrimang.comBài 64:Yêu cầu:Viết một chương trình tính 1/2 + 2/3 + 3/4 + … + n/(n + 1) với một n là số được nhậpvào (n> 0).Ví dụ, nếu n là số sau đây được nhập vào:Tài liệu được chia sẻ tại:Thì đầu ra phải là:3.55Gợi ý: Sử dụng float() để chuyển số nguyên sang số thập phân.Code mẫu:#Bài Python 64, Code by Quantrimang.comn=int(input(“Nhập số n >0: “))sum=0.0for i in range(1,n+1):sum += float(float(i)/(i+1))print (sum)Bài 65:Yêu cầu:Viết chương trình tính: f(n)=f(n-1)+100 khi n>0 và f(0)=1, với n là số được nhập vào(n>0).Ví dụ: Nếu n được nhập vào là 5 thì đầu ra phải là 500.Gợi ý: Chúng ta có thể định nghĩa hàm đệ quy trong Python.Code mẫu:def f(n):if n==0:return 0else:return f(n-1)+100#Bài Python 65, Code by Quantrimang.comn=int(input(“Nhập số n>0: “))print (f(n))Bài 66:Yêu cầu:Dãy Fibonacci được tính dựa trên công thức sau:f(n)=0 nếu n=0f(n)=1 nếu n=1f(n)=f(n-1)+f(n-2) nếu n>1Hãy viết chương trình tính giá trị của f(n) với n là số được người dùng nhập vào. Vídụ: Nếu n được nhập vào là 7 thì đầu ra của chương trình sẽ là 13.Gợi ý:Tương tự như bài 65, ta cũng sử dụng hàm đệ quy trong Python.Code mẫu:def f(n):if n == 0: return 0elif n == 1: return 1else: return f(n-1)+f(n-2)#Bài Python 66, Code by Quantrimang.comn=int(input(“Nhập số n: “))print (f(n))Bài 67:Yêu cầu:Dãy Fibonacci được tính dựa trên công thức sau:Tài liệu được chia sẻ tại: