NỘI DUNG
Bài 24: Xâu ký tự
Bài 25: Một số lệnh
làm việc với xâu ký tự
Bài 26: Hàm trong
Python
Bài 27: Tham số của
hàm
BÀI TẬP
I. TRẮC NGHIỆM
MỘT SỐ CÂU TRẮC
NGHIỆM MINH HỌA
Câu 1. Kiểu dữ liệu nào sau đây được sử dụng để lưu trữ xâu ký tự trong
Python?
A. Số nguyên (int)
B. Số thực (float)
C. Xâu (str)
D. Lôgic (bool)
Câu 2. Cách nào sau đây được sử dụng để tạo một xâu ký tự trong Python? Chọn
đáp án sai.
A. Sử dụng dấu nháy
đơn (')
B. Sử dụng dấu nháy
kép (")
C. Sử dụng dấu nháy ba
("") hoặc (""" """)
D. Sử dụng dấu ngoặc
vuông ([])
Câu 3. Điều nào sau đây là đúng về xâu ký tự trong Python?
A. Xâu ký tự có thể
thay đổi được.
B. Không thể thay đổi
kí tự trong xâu.
C. Độ dài của xâu ký tự
bị giới hạn.
D. Xâu ký tự chỉ có thể
chứa các chữ cái.
Câu 4. Trong Python, xâu rỗng được biểu diễn như thế nào?
A. None
B. 0
C. ""
D. " " (một
dấu cách)
Câu 5. Cho xâu s = “Hello”, biểu thức len(s) sẽ trả về giá trị nào?
A. 4
B. 5
C. 6
D. 0
Câu 6. Để truy cập vào ký tự đầu tiên của xâu s = “Python”, ta sử dụng cú pháp
nào?
A. s[1]
B. s[0]
C. s(0)
D. s(1)
Câu 7. Cho xâu s = “Tin học 10”, ký tự tại vị trí chỉ số 4 là ký tự nào?
A. 'n'
B. ' ' (dấu cách)
C. 'o'
D. 'h'
Câu 8. Cho đoạn mã sau:
s = "abc"
for i in
range(len(s)):
print(i, end = " ")
Đoạn mã trên sẽ in ra
kết quả gì?
A. 0 1 2
B. 1 2 3
C. a b c
D. "abc"
Câu 9. Sau khi thực hiện các lệnh sau, biến skq sẽ có
giá trị bao nhiêu?
s = "527493"
skq = ""
for ch in s:
if int(ch) % 2 != 0:
skq = skq + ch
A. 24
B. 5793
C. "5793"
D. "24"
Câu 10. Cho xâu s = “Hello”, làm thế nào để lấy ra xâu
con “Hel”?
A. s[0:2]
B. s[1:2]
C. s[1:3]
D. s[:3]
Câu 11. Kết quả của biểu thức 'a' in 'abcd' là gì?
A. True
B. False
C. 1
D. 0
Câu 12. Hàm find() trong Python được sử dụng để làm
gì?
A. Thay thế một xâu
con trong xâu cha.
B. Tìm vị trí đầu tiên của một xâu con trong xâu cha.
C. Xóa một xâu con khỏi xâu cha.
D. Tìm kiếm xâu con.
Câu 13. Cho xâu s = “ab cd ab”, giá trị trả về của lệnh
s.find(“ab”) là bao nhiêu?
A. 0
B. 6
C. 3
D. -1
Câu 14. Để kiểm tra xem xâu “abc” có nằm trong xâu
“abcdef” hay không, ta sử dụng biểu thức nào?
A.
s.split("abc")
B. "abc".in(s)
C. "abc" in "abcdef"
D. s.find("abc")
Câu 15. Cho xâu s = "abc def abc”. Giá trị trả về
của lệnh s.find(“abc”, 1) là bao nhiêu?
A. 0
B. 8
C. -1
D. 3
Câu 16. Lệnh nào sau đây không phải là một lệnh hợp lệ
để tìm kiếm xâu con trong Python?
A. "xyz" in
s
B. s.find("xyz")
C. s.join("xyz")
D. s[4:len(s)]
Câu 17. Cho đoạn code sau:
s = "Python is easy"
print(s[:10])
Kết quả in ra là gì?
A. Python is e
B. Python is
C. Python is easy
D. is easy
Câu 18. Cho xâu s = “a,b,c,d”. Làm thế nào để tạo ra
list ['a', 'b', 'c', 'd']?
A. list(s)
B. s.split(",")
C. s.split()
D. s.toList()
Câu 19. Cho xâu s = “Hello”. Để tìm chữ “H” ở vị trí đầu
tiên, ta dùng lệnh nào?
A.
s.find("H")
B. s.index("H")
C. s[0]
D. s[1]
Câu 20. Cho xâu s = “Hello”. Để nối thêm xâu “ World”
vào xâu s, ta dùng lệnh nào?
A. s.append("
World”)
B. s + " World"
C. s.split(" World")
D. s.join(“ World”)
Câu 21. Lệnh nào sau đây được sử dụng để kiểm tra xem
một chuỗi có nằm trong một chuỗi khác không trong NNLT Python?
A. find()
B. in
C. replace()
D. split()
Câu 22. Cho chuỗi s = "abc def ghi”. Lệnh
s.find(“def”) sẽ trả về giá trị nào?
A. 0
B. 3
C. 4
D. -1
Câu 23. Cho chuỗi s = "mot,hai,ba". Lệnh
s.split(",") sẽ trả về kết quả gì?
A.
"mot,hai,ba"
B. ["mot", "hai", "ba"]
C. ["mot,hai", "ba"]
D. "mot", "hai", "ba"
Câu 24. Lệnh nào sau đây được dùng để nối các phần tử
của danh sách thành một chuỗi?
A. split()
B. find()
C. join()
D. replace()
Câu 25. Nếu s = "Hello" thì
s.find("l") sẽ trả về giá trị nào?
A. 0
B. 2
C. 3
D. -1
Câu 26. Cho chuỗi s = "123abc456". Làm thế
nào để lấy ra chuỗi "abc"?
A. s[3:6]
B. s.split('abc')
C. s.find('abc')
D. s.join('abc')
Câu 27. Nếu bạn muốn nối hai chuỗi lại với nhau, bạn sử
dụng toán tử nào?
A. *
B. +
C. //
D. –
Câu 28. Phát biểu nào sau đây là sai?
A. Lệnh join() và lệnh
split() có chức năng giống nhau là dùng để nối xâu.
B. Lệnh join() có tác dụng ngược với lệnh split(), có chức năng nối các phần tử
của danh sách thành một xâu.
C. Để tìm một xâu trong một xâu khác có thể dùng toán tử in hoặc lệnh find(). Lệnh
find() trả về vị trí của xâu con trong xâu mẹ.
D. Lệnh split() tách một xâu thành các từ và đưa vào một danh sách.
Câu 29. Biểu thức kiểm tra <xâu 1> nằm trong
<xâu 2> là:
A. <xâu 1> of
<xâu 2>
B. <xâu 1> on <xâu 1>
C. <xâu 1> in <xâu 2>
D. <xâu 2> in <xâu 1>
Câu 30. Cú pháp đầy đủ của lệnh find() là:
A. . find(,start)
B. <xâu mẹ> : find(<xâu con,start>)
C. . find(,start>)
D. . find(,start>)
Câu 31. Cú pháp của lệnh split() là:
A. . split()
B. <xâu mẹ> : split(<kí tự tách>)
C. <xâu mẹ> : split()
D. . split(<kí tự tách>)
Câu 32. Cú pháp của lệnh join() là:
A. ‘kí tự nối' .
join()
B. ‘kí tự nối' : join()
C. ‘kí tự nối' . join()
D. ‘kí tự nối” . join(<xâu mẹ>)
Câu 33. Chương trình trên giải quyết bài toán gì?
s = ""
for i in range(10):
s = s + str(i)
print(s)
A. In một xâu kí tự từ
0 tới 10.
B. In một xâu kí tự từ 0 tới 9.
C. In một xâu kí tự từ 1 tới 10.
D. In một xâu kí tự từ 1 đến 9.
Câu 34. Để tính độ dài của xâu s ta dùng hàm gì?
A. str(s).
B. len(s).
C. length(s).
D. s.len().
Câu 35. Sau khi thực hiện lệnh sau, biến s sẽ có kết
quả là
s1
="3986443"
s2 = ""
for ch in s1:
if int(ch) % 2 == 0:
s2 = s2 + ch
print(s2)
A. 3986443.
B. 8644.
C. 39864.
D. 443.
Câu 36. Chuỗi sau được in ra mấy lần?
s =
"abcdefghi"
for i in range(10):
if i % 4 == 0:
print(s)
A. 0.
B. 1.
C. 2.
D. 3.
Câu 37. Biểu thức logic "01" in
"10101" sẽ trả về giá trị gì?
A. True.
B. False.
C. 1.
D. 2.
Câu 38. Phát biểu nào sau đây là sai?
A. Có thể truy cập từng
kí tự của xâu thông qua chỉ số.
B. Chỉ số bắt đầu từ 0.
C. Có thể thay đổi từng kí tự của một xâu.
D. Python không có kiểu dữ liệu kí tự.
Câu 39. Kết quả của chương trình sau là gì?
s = "1221"
kq = False
for i in
range(len(s)-1):
if s[i] == "2" and s[i+1] ==
"1":
kq = True
break
print(kq)
A. True.
B. False.
C. Chương trình bị lỗi.
D. Vòng lặp vô hạn.
Câu 40. Kết quả của chương trình sau là bao nhiêu?
>>> s = "0123145"
>>> s[0] =
'8'
>>>
print(s[0])
A. '8'.
B. '0'.
C. '1'.
D. Chương trình bị lỗi.
Câu 41. Phát biểu đúng trong các phát biểu sau là:
A. Lệnh float() trả về
số nguyên từ số hoặc chuỗi biểu thức.
B. Có ít hàm có sẵn được xây dựng trong python.
C. Lệnh bool() chuyển một giá trị sang Boolean.
D. Lệnh input() có thể nhập vào một số nguyên mà không cần chuyển đổi kiểu.
Câu 42. Kết quả của chương trình sau là:
def PhepNhan(Number):
return Number * 10
print(PhepNhan(5))
A. 5.
B. 10.
C. Chương trình bị lỗi.
D. 50.
Câu 43. Kết quả của chương trình sau là:
def Kieu(Number):
return type(Number)
print(Kieu (5.0))
A. 5.
B. float.
C. Chương trình bị lỗi.
D. int.
Câu 44. Hàm sau có chức năng gì?
def sum(a, b):
return
print("sum =
" + str(a + b))
A. Trả về tổng của hai
số a và b được truyền vào.
B. Trả về hai giá trị a và b.
C. Tính tổng hai số a và b.
D. Tính tổng hai số a và b và hiển thị ra màn hình.
Câu 45. Điền vào (...) để tìm ra số lớn nhất trong 3 số
nhập vào:
def find_max(a, b, c):
max = a
if (...): max = b
if (...): max = c
return max
A. max < b, max
< c.
B. max <= b, max < c.
C. max < b, max <=c.
D. max <=b, max<=c.
Câu 46. Chương trình sau bị lỗi ở dòng lệnh thứ bao
nhiêu?
1| def add(a,b)
2| sum = a+b
3| return sum
4| x=int(input())
5| tong = add(x, 4)
6| print("Tổng là: " + str(tong))
A. 1
B. 3
C. 5
D. 6
Câu 47. Hàm trong Python là gì?
A. Một biến đặc biệt.
B. Một khối lệnh có thể tái sử dụng.
C. Một kiểu dữ liệu
D. Một toán tử.
Câu 48. Điều gì xảy ra khi bạn gọi một hàm trong
Python?
A. Chương trình kết
thúc.
B. Khối lệnh trong hàm được thực thi.
C. Một lỗi xảy ra.
D. Không có gì xảy ra.
Câu 49. Cú pháp nào sau đây là đúng để định nghĩa một
hàm trong Python?
A. function
my_function():
B. def my_function
C. def my_function():
D. my_function():
Câu 50. len(), int(), print() là những ví dụ về:
A. Hàm tự định nghĩa.
B. Hàm tích hợp sẵn.
C. Biến.
D. Kiểu dữ liệu.
Câu 51. Lệnh print("Thời khoá biểu") thực hiện
điều gì?
A. Chuyển đổi chuỗi
"Thời khoá biểu" thành một số nguyên.
B. Yêu cầu nhập vào một xâu kí tự.
C. Hiển thị xâu kí tự "Thời khoá biểu" ra màn hình.
D. Trả về kiểu dữ liệu của biến.
Câu 52. Lệnh type() dùng để làm gì?
A. Chuyển đổi một giá
trị sang kiểu dữ liệu khác.
B. In một giá trị ra màn hình.
C. Nhập một giá trị từ bàn phím.
D. Trả về kiểu dữ liệu của một biến.
Câu 53. Đâu là sự khác biệt giữa tham số và đối số của
hàm?
A. Tham số được sử dụng
khi gọi hàm, đối số được sử dụng khi định nghĩa hàm.
B. Tham số và đối số là giống nhau.
C. Tham số là biến trong định nghĩa hàm, đối số là giá trị được truyền vào khi
gọi hàm.
D. Đối số là biến trong định nghĩa hàm, tham số là giá trị được truyền vào khi
gọi hàm.
Câu 54. Khi nào nên sử dụng chương trình con (hàm)?
A. Khi chương trình
quá ngắn.
B. Khi không cần chia nhỏ công việc.
C. Khi muốn chia nhỏ một bài toán lớn thành các phần nhỏ hơn, dễ quản lý.
D. Không bao giờ cần sử dụng chương trình con.
Câu 55. Từ khóa nào được sử dụng để trả về một giá trị
từ một hàm?
A. exit.
B. value.
C. return.
D. print.
Câu 56. Điều gì xảy ra nếu một hàm không có câu lệnh
return?
A. Lỗi sẽ xảy ra.
B. Hàm sẽ tự động trả về 0.
C. Hàm sẽ trả về None.
D. Hàm sẽ lặp vô hạn.
Câu 57. Hàm range() có chức năng gì?
A. Tìm kiếm một giá trị
trong một danh sách.
B. Tạo ra một dãy số.
C. Sắp xếp một danh sách.
D. Tính tổng các phần tử trong một danh sách.
Câu 58. Câu lệnh def prime(n): là cú pháp của?
A. Gọi hàm
B. Định nghĩa hàm
C. Tham số của hàm
D. Đối số của hàm
Câu 59. Làm thế nào để gọi hàm tongduong với tham số
A?
A. def tongduong(A):
B. tongduong
C. tongduong =A
D. tongduong(A)
Câu 60. Trong đoạn code sau, đâu là đối số?
def sum(a, b, c):
return a + b + c
x = 10
y = 20
z = 30
result = sum(x, y, z)
A. a, b, c
B. return a + b + c
C. x, y
D. 10, x, y
Câu 61. Trong đoạn code sau, đâu là tham số?
def sum(a, b, c):
return a + b + c
x = 10
y = 20
z = 30
result = sum(x, y, z)
A. 10, x, y
B. Return a+b+c
C. x,y
D. a,b,c
Câu 62. Hoàn thiện chương trình để tìm UCLN của hai số?
def UCLN(a, b):
if (...):
return a
return UCLN(b, a % b)
a = int(input('Nhap
vao so nguyen duong a = '))
b = int(input('Nhap
vao so nguyen duong b = '))
print(“UCLN cua 2 so
la:”,UCLN(a, b))
A. a>c
B. a>b
C. a==1
D. b==0
Câu 63. Các tham số của f có kiểu dữ liệu gì nếu hàm f
được gọi như sau: f( '5.0')
A. str
B. float.
C. int
D. Không xác định.
Câu 64. Hoàn thành chương trình kiểm tra một số có là
số nguyên tố không:
def prime(n):
c=0
k=1
while(k<=n):
if n%k==0:
c=c+1
k=k+1
if c==2: return (...) # Sửa ở đây, c == 2 mới
là số nguyên tố
else: return (...)
A. True, False.
B. True, True.
C. False, False.
D. False, True.
Câu 65. Chương trình sau bị lỗi ở dòng thứ bao nhiêu?
def tinh(a,b):
if(b!=0):
return a//b
s=tinh(1,m)
print(s)
A. 2
B. 3
C. 4
D. 5.
Câu 66. Giá trị của x là bao nhiêu sau biết kết quả là
8:
def tinh(a,b,c):
if (b!=0):
return a//b+c*2
s=tinh(1,5,x)
print(s)
A. 3
B. 2
C. 1
D. 4.
II. ĐÚNG/SAI
Câu 1: Trong thực tế, khi bạn cần trích xuất tên người
dùng từ địa chỉ email (ví dụ, từ
"john.doe@example.com" lấy "john.doe"), phương pháp
nào sau đây là hiệu quả nhất?
a) Sử dụng find() để
tìm vị trí của "@" và sau đó sử dụng slicing.
b) Sử dụng split("@") để tách chuỗi thành hai phần và lấy phần đầu.
c) Sử dụng vòng lặp để duyệt từng ký tự cho đến khi gặp "@".
d) Sử dụng hàm replace() để thay thế "@example.com" bằng
"".
Câu 2: Bạn muốn tạo một chương trình để kiểm tra xem
một mã số thuế có hợp lệ hay không (ví dụ, kiểm tra
độ dài, cấu trúc). Phương pháp nào sau đây là thích hợp nhất?
A. Sử dụng len() để kiểm
tra độ dài và các phép toán trên xâu để kiểm tra cấu trúc.
B. Sử dụng find() để tìm các ký tự đặc biệt trong mã số thuế.
C. Sử dụng split() để tách mã số thuế thành các phần và kiểm tra từng phần.
D. Sử dụng hàm replace() để loại bỏ các ký tự không hợp lệ.
Câu 3. Cho đoạn chương trình sau: Học sinh trả lời
đúng hoặc sai cho các ý sau:
s = input("Nhập
xâu ký tự: ")
d = 0
for k in s:
d = d + 1
print(d)
print(s[1], s[d - 1])
so = 0
for k in s:
if k == 'b':
so += 1
print(so)
a) Tính độ dài của xâu
s.
b) In xâu vừa nhập ra màn hình.
c) In kí tự đầu tiên của xâu s ra màn hình. Sai, in ký tự thứ 2 và cuối
d) Đếm trong xâu s có bao nhiêu kí tự b.
III. TỰ LUẬN
Câu 1. Viết chương trình nhập một xâu S là họ tên đầy
đủ (gồm họ, đệm, tên) từ bàn phím, sau đó in ra màn hình lần lượt họ, đệm và
tên vừa nhập.
|
Input |
Output |
|
S = “Nguyễn Văn An” |
Họ: Nguyễn |
|
Họ đệm: Văn |
|
|
Tên: An |
Câu 2. Viết chương trình nhập vào một xâu S từ bàn
phím gồm các số tự nhiên, mỗi số cách nhau bởi một dấu
cách (khoảng trống). Tính và in ra màn hình tổng, trung bình cộng của các số vừa
nhập từ bàn phím.
|
Input |
Output |
|
S = "2 4 0 -3
7" |
Tổng: 10 |
|
Trung bình: 2.0 |
Câu 3. Áp dụng cấu trúc hàm để viết chương trình nhập
vào số tự nhiên N từ bàn phím. Kiểm tra số N có phải
là số nguyên tố hay không?
|
Input |
Output |
|
N = 5 |
“5 là số nguyên tố" |
|
N = 6 |
‘6 không phải số
nguyên tố' |
Câu 4. Áp dụng cấu trúc hàm để viết chương trình nhập
vào một xâu S từ bàn phím. Kiểm tra và in ra trong
xâu có bao nhiêu kí tự là chữ số, bao nhiêu kí tự là chữ cái.
|
Input |
Output |
|
S = "70 Le Hong
Phong" |
“Xâu có 2 kí tự là
chữ số' |
|
“Xâu có 11 kí tự là
chữ cái' |
Câu 5. Viết một hàm Python có tên tinhtong nhận
hai tham số là hai số nguyên dương a và b. Hàm này trả về
tổng của tất cả các số chẵn nằm trong khoảng từ a đến b (bao gồm cả a và b nếu
chúng là số chẵn).
|
Input |
Output |
|
a = 3 |
Tổng: 18 |
|
b=8 |
Câu 6. Định nghĩa một hàm Python có tên kiemtra_namnhuan
nhận một tham số là nam (số nguyên). Hàm này trả về True nếu năm
đó là năm nhuận và False nếu không phải. Sử dụng hàm này để viết chương
trình nhập vào một năm từ bàn phím và in ra thông báo cho biết năm đó có phải
là năm nhuận hay không.
|
Input |
Output |
|
nam = 2000 |
“Năm 2000 là năm nhuận' |
|
nam = 2025 |
‘Năm 2025 là năm
không nhuận’ |
Chúc các em ôn tập
thật tốt!