Đề cương ôn tập học kì II Tin học 10
Bạn đang xem tài liệu "Đề cương ôn tập học kì II Tin học 10", để tải tài liệu gốc về máy hãy click vào nút Download ở trên.
File đính kèm:
de_cuong_on_tap_hoc_ki_ii_tin_hoc_10.pdf
Nội dung tài liệu: Đề cương ôn tập học kì II Tin học 10
- I/ CÁC DẠNG BÀI TẬP TỰ LUẬN THAM KHẢO 1/ Bài tập tự luận về kiểu dữ liệu danh sách: *Lý thuyết 1. Khái niệm - Kiểu dữ liệu danh sách (list) là dữ liệu có nhiều phần tử, hay là kiểu dữ liệu bao gồm một dãy các giá trị. Các phần tử trong danh sách có thể có các kiểu dữ liệu khác nhau. 2. Khởi tạo ds - Kiểu dữ liệu danh sách được khởi tạo như sau: = [ ,..., ] Vd: A=[1,2,3,4,5.5, “python”] - Tạo danh sách rỗng: =[] - Truy cập từng phần tử thông qua chỉ số: [ ] - Thêm 1 phần tử vào cuối danh sách bằng phương thức append(). Ví dụ: A.append(10) 3. Một số lệnh làm việc với kiểu dữ liệu danh sách - Toán tử in: kiểm tra 1 giá trị có nằm trong danh sách hay không? - Lệnh clear(): xóa toàn bộ danh sách. - Lệnh remove(value): xóa phần tử đầu tiên của danh sách có giá trị là value. - Lệnh insert(k, x): chèn phần tử x vào vị trí k của danh sách. *Bài tập Câu 1: Giả sử danh sách được xác định như sau: A = [1, 2, 3, 10, "Việt", True] Em hãy cho biết câu lệnh sau in gì ra màn hình. print(A[2], A[4], A[5], len(A)) Trả lời: Câu lệnh in ra màn hình: 3 Việt True 6 Câu 2: Giả sử A là danh sách được xác định trong Câu 1. Các câu lệnh sau cho kết quả là gì? a) del A[0] b) A = [0, 2] + A c) A[1] = A[1] * 2 d) A = A + [15] Trả lời: a) Xoá phần tử đầu tiên của danh sách. b) Thêm hai phần tử mới là các số 0, 2 vào đầu danh sách A. c) Nhân phần tử thứ hai của danh sách đã cho với 2 (giá trị A[1] sau câu lệnh này sẽ là 4). d) Thêm vào cuối danh sách A phần tử một số có giá trị là 15. Câu 3: Cho A là danh sách được xác định như sau: A = [1, -2, -3.5, 4, 6, -2.5]. Em hãy cho biết kết quả thực hiện các câu lệnh sau: a) s = 0 for i in range(len (A)): if A[i] > 0: s = s +A[i] print(s) b) for i in range(len(A)): A[i] = A[i] + 3 c) k = 0 for i in range(1, 4): if A[i] < 0: k = k +1 print(k) Trả lời: a) Kết quả in ra là 11 (là tổng các phần tử lớn hơn 0 của A).
- b) Mỗi phần tử của danh sách A sau câu lệnh này được cộng thêm 3, nghĩa là: A = [4, 1,-0.5, 7, 9, 0.5]. c) Kết quả in ra là 2 (là số phần tử nhỏ hơn 0 trong các phần tử A[1], A[2], A[3]). Câu 4: Em hãy viết các câu lệnh xoá phần tử đầu tiên và phần tử cuối cùng trong danh sách A cho trước. Trả lời: Lệnh xoá phần tử đầu tiên trong danh sách A: del A[0]. Lệnh xoá phần tử cuối cùng trong danh sách A: del A[len(A)-1]. Câu 5: Cho dãy các số nguyên A, viết chương trình in ra các số chẵn của A. Hướng dẫn c=0 for i in range(len(A)): if(A[i]%2==0): c=c+1 print(c) Câu 6: Giải thích các lệnh ở mỗi câu sau thực hiện công việc gì? Hướng dẫn a) Gán S = 0; Duyệt các phần tử trong danh sách A và tính tổng các phần tử lớn hơn 0 của A In kết quả S ra màn hình b) Gán C = 0; Duyệt các phần tử trong danh sách A và đếm số lượng các phần tử lớn hơn 0 của A In kết quả C ra màn hình Câu 7: Nhập số n từ bàn phím, sau đó nhập danh sách n tên các bạn lớp em và in ra danh sách các tên đó, mỗi tên trên một dòng. Hướng dẫn
- Câu 8: Nhập một dãy số từ bàn phím. Tính tổng, trung bình của dãy và in dãy số trên một hàng ngang. Hướng dẫn: Câu 6 :Viết chương trình tính giá trị và chỉ số của phần tử lớn nhất của A(dãy A cho trước). Tương tự với bài toán tìm phần tử nhỏ nhất. Câu 7: Em hãy viết chương trình nhập một số tự nhiên n và tạo một danh sách các ước số thực sự của n. Hướng dẫn: Câu 9:Cho trước dãy số A. Viết chương trình thực hiện công việc sau: - Xoá đi một phần tử ở chính giữa dãy nếu số phần tử của dãy là số lẻ. - Xoá đi hai phần tử ở chính giữa của dãy nếu số phần tử của dãy là số chẵn. Hướng dẫn: Đề cho sẵn dãy A vì vậy ta không cần viết đoạn lệnh nhập dãy A Câu 10: Viết chương trình nhập n từ bàn phím, tạo và in ra màn hình dãy số A bao gồm n số tự nhiên chẵn đầu tiên. Lời giải:
- Câu 11: Dãy số Fibonacci được xác định như sau: F0 = 0 F1 = 1 Fn = Fn - 1 + Fn – 2 (với n ≥ 2) Viết chương trình nhập n từ bàn phím, tạo và in ra màn hình dãy số A bao gồm n số hạng đầu của dãy Fibonacci Hướng dẫn 2/ Dạng bài tập kiểm thử và gỡ lỗi chương trình. * Lý thuyết - Phân biệt lỗi chương trình Python làm 3 loại: + Lỗi cú pháp (Syntax Error) + Lỗi ngoại lệ (Exceptions Error) + Lỗi Logic. - Một số phương pháp kiểm thử chương trình: - Quan sát mã lỗi Runtime và bắt ngoại lệ: kiểm tra vị trí dòng lệnh sinh ra lỗi này, từ đó phân tích, tìm và sửa lỗi - Kiểm thử chương trình với các bộ test dữ liệu test: phát hiện ra lỗi, nguyên nhân bị lỗi với từng bộ test cụ thể - In các thông số trung gian: kiểm tra các quy trình hay thuật toán được viết có đúng không. - Sử dụng công cụ break point (điểm dừng): Các điểm dừng sẽ cho phép người kiểm thử có thể quan sát các thông tin khác bên trong chương trình, từ đó kiểm tra tính đúng đắn của chương trình *Bài tập Câu 1: Bài toán yêu cầu sắp xếp dãy số ban đầu thành dãy tăng dần. Giả sử dãy số ban đầu là [3, 1, 8, 10, 5]. Kết quả thu được dãy [1, 3, 8, 5, 10]. Chương trình có lỗi không? Nếu có thể thì lỗi đó thuộc loại gì? Trả lời:Có lỗi. Đây là lỗi loại 3, tức là lỗi ngữ nghĩa bên trong chương trình, không phải lỗi ngoại lệ. Câu 2: Các lệnh sau khi thực hiện có thể sinh lỗi không? Nếu có thì lỗi có thể là gì? 1. n = int(input("Nhập số nguyên n: ")) 2. if prime(n): 3. print(n, "là số nguyên tố") 4. else: 5. print(n,"là hợp số") Trả lời: - Lệnh 1 có thể phát sinh lỗi ValueError khi người dùng nhập dữ liệu chưa chính xác. - Lệnh 3 có thể phát sinh lỗi NameError khi hàm prime() chưa được định nghĩa. - Kết quả của chương trình có thể sai nếu hàm prime() không được viết chính xác. Khi đó chương trình có lỗi lôgic bên trong. Câu 3a: Chương trình sau có chức năng sắp xếp một dãy số cho trước. Hãy kiểm tra xem chương trình có lỗi không. Nếu có thì tìm và sửa lỗi. Câu 3b: Để kiểm thử một chương trình, nếu chỉ bằng việc kiểm tra thông qua các bộ dữ liệu test thì có đảm bảo tìm ra hết lỗi của chương trình hay không? Vì sao? Trả lời 3a: Chương trình bị lỗi logic. Khi chạy chương trình như trên sẽ cho ra kết quả là [10, 0, 1, 2, 5, 8, 4].
- Sửa lại chương trình như sau: 3b: Chỉ bằng việc kiểm tra thông qua các bộ dữ liệu test thì không đảm bảo tìm ra hết lỗi của chương trình. II/ CÁC DẠNG BÀI TẬP TRẮC NGHIỆM HÀM TRONG PYTHON Câu 1: Chọn phát biểu sai trong các phát biểu sau: A. Lệnh print() thực hiện việc in ra màn hình. B. Lệnh input() thực hiện yêu cầu nhập vào một biểu thức, số hay một xâu bất kì. C. Lệnh type() trả lại kiểu dữ liệu của biểu thức trong ngoặc. D. Lệnh str() chuyển đối tượng đã cho thành chuỗi. Câu 2: Số phát biểu đúng trong số phát biểu sau: 1) Python cung cấp sẵn nhiều hàm thực hiện những công việc khác nhau cho người dùng tuỳ ý sử dụng. 2) Lệnh float() chuyển đối tượng đã cho thành kiểu số thực. 3) Lệnh int trả về số nguyên từ số hoặc chuỗi biểu thức. 4) Trong python, người dùng chỉ được sử dụng các hàm có sẵn được xây dựng. 5) Người dùng có thể xây dựng thêm một số hàm mới. A. 1. B. 2. C. 3. D. 4. (1,2,3,5). Câu 3: 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 4: Chương trình sau cho kết quả là bao nhiêu? def chao(ten): """Hàm này dùng để chào một người được truyền vào như một tham số""" print("Xin chào, " + ten + "!") chao(‘Xuan’) A. “Xin chào”. B. “Xin chào, Xuan!”. C. “Xin chào!”. D. Câu lệnh bị lỗi. Câu 5: 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 6: 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 7: Hàm sau có chức năng gì? def sum(a, b): 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 8: Đ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 9: Chương trình sau ra kết quả bao nhiêu? def get_sum(num): tmp = 0 for i in num: tmp += i return tmp result = get_sum(1, 2, 3, 4, 5) print(result) A. 12. B. 13. C. 14. D. 15. Câu 10: Chương trình sau bị lỗi ở dòng lệnh thứ bao nhiêu? a = "Hello Guy!" def say(i): return a + i say(3) print(a) A. 4. B. 2. C. 3. D. Không có dòng lệnh bị lỗi. GIẢI THÍCH Đáp án đúng là: C Không thể thực hiện phép nỗi chuỗi giữa chuỗi a và số nguyên i = 3 Câu 11: Chương trình sau bị lỗi ở dòng lệnh thứ bao nhiêu? def add(a, b): x = a + b return(x) add(1, 2) add(5, 6) A. 2. B. 3. C. 1. D. Không bị lỗi.
- Câu 12: Chương trình sau bị lỗi ở dòng lệnh thứ bao nhiêu? def add(a, b) sum = a + b return sum x = int(input("Nhập số thứ nhất:")) y = int(input("Nhập số thứ hai:")) tong = add(x, y) print("Tổng là: " + str(tong)) A. 1.(thiếu dấu : ). B. 2. C. 3. D. 4. Câu 13: Kết quả của chương trình sau: def my_function(x): return 3 * x print(my_function(3)) print(my_function(5)) print(my_function(9)) A. 3, 5, 9. B. 9, 15, 27. C. 9, 5, 27. D. Chương trình bị lỗi. GIẢI THÍCH Đáp án đúng là: B Hàm thực hiện chức năng nhận giá trị x với 3. Câu 14: Chương trình sau hiển thị kết quả như thế nào? def ham(): print(country) ham("Sweden") ham("India") ham("Brazil") A. Sweden, India, Brazil. B. Sweden, Brazil, India. C. Sweden, Brazil. D. Chương trình bị lỗi. Câu 15: Hoàn thành chương trình tính tổng một mảng sau: n = ( )(input()) lst = [] for i in range(n): lst.append(int(input())) answer = ( ) for v in lst: answer *= v
- print(answer) A. float, 1. B. int, 0. C. int, 1. D. float, 0. Câu 16: Từ khóa nào dùng để khai báo hàm người dùng tự định nghĩa A. Def . B. Dec. C. Return. D. Print. Câu 17: Mệnh đề nào dưới đây mô tả đúng về hàm tự định nghĩa không trả lại giá trị? A. Trong mô tả hàm không có từ khóa return. B. Trong mô tả hàm chỉ có một từ khóa return. C. Trong mô tả hàm phải có tối thiểu hai từ khóa return. D. Trong mô tả hàm hoặc không có return hoặc có return nhưng không có giá trị sau từ khóa return. Câu 18: Trong ngôn ngữ lập trình Python, mệnh đề nào dưới đây mô tả đúng quan hệ giữa hàm và thủ tục? A. Hàm và thủ tục là hai khái niệm hoàn toàn khác nhau. B. Hàm là thủ tục nhưng thủ tục có thể không phải là hàm. C. Trong Python, hàm và thủ tục là hai khái niệm đồng nhất. D. Thủ tục là hàm nhưng hàm có thể không phải là thủ tục. Câu 4: Chọn phát biểu sai trong các phát biểu sau: A. Lệnh print() thực hiện việc in ra màn hình. B. Lệnh input() thực hiện yêu cầu nhập vào một biểu thức, số hay một xâu bất kì. C. Lệnh type() trả lại kiểu dữ liệu của biểu thức trong ngoặc. D. Lệnh str() chuyển đối tượng đã cho thành chuỗi. Câu 19: Số phát biểu đúng trong số phát biểu sau: 1) Python cung cấp sẵn nhiều hàm thực hiện những công việc khác nhau cho người dùng tuỳ ý sử dụng. 2) Lệnh float() chuyển đối tượng đã cho thành kiểu số thực. 3) Lệnh int trả về số nguyên từ số hoặc chuỗi biểu thức. 4) Trong python, người dùng chỉ được sử dụng các hàm có sẵn được xây dựng. 5) Người dùng có thể xây dựng thêm một số hàm mới. A. 1. B. 2. C. 3. D. 4. Câu 20: 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. KIỂU DỮ LIỆU XÂU KÍ TỰ Câu 1: Xâu trong python là: A. Một kí tự. B. Một dãy các số C. Một dãy các kí tự. D. Một giá trị bất kì. Câu 2: Xâu rỗng là xâu: A. Có duy nhất một phần tử. B. Không có phần tử nào. C. Có độ dài vô hạn D. Viết theo chiều thuận và chiều ngược giống nhau Câu 3: Điểm khác nhau cơ bản giữa xâu và danh sách là: A. Các phần tử của xâu được đánh số bắt đầu từ 0. B. Không thể thay đổi được từng kí tự của xâu C. Có thể thay đổi được từng kí tự của xâu D. Truy cập đến phần tử của xâu thông qua tên biến xâu và chỉ số. Câu 4: Cách nào không dùng để biểu diễn xâu kí tự: A. Đặt xâu trong cặp dấu nháy đơn B. Đặt xâu trong cặp dấu nháy kép D. Đặt xâu trong ba cặp dấu nháy kép D. Ghi như bình thường không có gì đặc biệt. Câu 5: Độ dài của xâu được tính thông qua lệnh: A. Len() B. Range() C. Append() D. For Câu 6: Lệnh dùng để duyệt từng kí tự ch của xâu theo phần tử của xâu s được viết: A. For ch in range(len(s)): B. For ch in len(s): C. For ch in s: D. For ch in s Câu 7: Lệnh s1 in s2 có ý nghĩa gì? A. Tìm xâu con của xâu s1;
- B. Tìm một phần tử có giá trị bất kì trong xâu C. Trả lại giá trị fasle nếu xâu s1 không là xâu con của s2. D. Trả lại giá trị true nếu xâu s1 không là xâu con của xâu s2. Câu 8: Sau khi thực hiện đoạn lệnh sau biến s1 sẽ cho giá trị là bao nhiêu? s = “abcdefghi” k = len(s)//2; s1 = “”; for i in range(k): s1 = s1+s[i] A. “abcde” B. “efghi” C. “abcdefghi” D. “abcd” Câu 9: Đoạn lệnh ở câu 8 thực hiện công việc gì? A. Tìm k phần tử cuối cùng của xâu s. B. Tạo xâu s1 gồm các kí tự từ đầu xâu đến nửa xâu. C. Tạo xâu s1 gồm các kí tự từ nửa xâu đến cuối xâu. D. Tạo xâu s1 gồm tất cả các phần tử của xâu. Câu 10: Cho biết kết quả khi thực hiện đoạn chương trình sau: A. “lop” B. “10a” C. “lop 10a” D. “a01 pol” Câu 11: Có bao nhiêu xâu kí tự nào hợp lệ? 1) “123_@##” 2) “hoa hau” 3) “346h7g84jd” 4) python 5) “01028475” 6) 123456 A. 5. B. 6. C. 4. (1,2,3,5). D. 3. Câu 12: Xâu “1234%^^%TFRESDRG” có độ dài bằng bao nhiêu? A. 16. B. 17. C. 18. D. 15. Câu 13: 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 14: 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 15: Biểu thức sau cho kết quả đúng hay sai? S1 = “12345” S2 = “3e4r45” S3 = “45” S3 in S1 S3 in S2 A. True, False. B. True, True. C. False, False. D. False, True. Câu 16:
- Kết quả của chương trình sau nếu s = “python1221” là gì? s = input("Nhập xâu kí tự bất kì:") 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. GIẢI THÍCH Đáp án đúng là: A Chuỗi s chứa “21” nên kq = True. Câu 17: Chương trình sau cho kết quả là bao nhiêu? name = "Codelearn" print(name[0]) A. “C”. B. “o”. C. “c”. D. Câu lệnh bị lỗi. Câu 18: 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. GIẢI THÍCH Khác với danh sách, không thể thay đổi từng kí tự của xâu. Câu 19: Trong Python, xâu nào chương trình sẽ báo lỗi. A. 'This is a string in Python'. message = "This is also a string". B. '"Beautiful is better than ugly.". Said Tim Peters'. C. Không có xâu bị lỗi. D. 'It\'s also a valid string'. Câu 20: Kết quả của chương trình sau là bao nhiêu? >>> s = “abcdefg” >>> print(s[2]) A. ‘c’. B. ‘b’. C. ‘a’. D. ‘d’. Câu 21: 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 chuỗi kí tự từ 0 tới 10. B. In một chuỗi kí tự từ 0 tới 9. C. In một chuỗi kí tự từ 1 tới 10. D. In một chuỗi kí tự từ 1 đến 9. Câu 22: Cho s = “123456abcdefg”, s1 = “124”, s2 = “235”, s3 = “ab”, s4 = “56” + s3 Có bao nhiêu biểu thức lôgic sau đúng? 1) s1 in s. 2) s2 in s. 3) s3 in s. 4) s4 in s. A. 1. B. 2.(đáp án 3, đáp án 4). C. 3. D. 4. Câu 23: Chương trình sau giải quyết bài toán gì? n = input("Nhập n") s = "" for i in range(n): if i % 2 == 0: s. append(i) print(s) A. In ra một chuỗi các số từ 0 tới n. B. Chương trình bị lỗi. C. In ra một chuỗi các số lẻ từ 0 đến n. D. In ra một chuỗi các số chẵn từ 0 đến n – 1. GIẢI THÍCH Do i có kiểu số nguyên nên không thể thêm vào chuỗi s được. Câu 24: 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. GIẢI THÍCH In ra 3 lần chuỗi s tương ứng với biến i bằng 0, 4, 8. Câu 25: Để tạo xâu in hoa từ toàn bộ xâu hiện tại ta dùng hàm nào sau đây? A. lower(). B. len(). C. upper(). D. srt(). Câu 26: Lệnh nào sau đây dùng để tách xâu A. split(). B. join(). C. remove(). D. copy(). Câu 27: Phát biểu nào chưa chính xác khi nói về toán tử in? A. Biểu thức kiểm tra xâu 1 nằm trong xâu 2 là: in . B. Toán tử in trả về giá trị True nếu xâu 1 nằm trong xâu 2. C. Toán tử in trả về giá trị False nếu xâu 1 không nằm trong xâu 2.
- D. Toán tử in là toán tử duy nhất giải quyết được bài toán kiểm tra xâu có nằm trong xâu không. Câu 28: Lệnh sau trả lại giá trị gì? "0123456789".find("012abc") A. -1 (do không tìm thấy nên trả về -1) B. 0. C. 1. D. Báo lỗi. Câu 29: Lệnh sau trả lại giá trị gì? len(" Hà Nội Việt Nam "".split()) A. 0. B. 4. C. 5. D. Báo lỗi. Giải thích: ( chuỗi " Hà Nội Việt Nam " sẽ được tách thành 3 phần tử trong danh sách ['Hà', 'Nội', 'Việt', 'Nam']. Phương thức len() sẽ trả về số lượng phần tử trong danh sách này, tức là 4.) Câu 30: Cho xâu s = "Python". Muốn chuyển thành xâu s = "P y t h o n" ta cần làm sử dụng những câu lệnh A. split() và join(). B. split() và replace(). C. del() và replace(). D. replace(). Câu 31: Để thay thế kí tự ‘a’ trong xâu s bằng một xâu mới rỗng ta dùng lệnh nào? A. s=s.replace(‘a’,’’). B. s=s.replace(‘a’). C. s=replace(a,’’). D. s=s.replace(). Câu 32: Chọn phát biểu sai trong các phát biểu sau A. Lệnh join() nối các phần tử của một danh sách thành một xâu, ngăn cách bởi dấu cách. B. Trong lệnh join, kí tự nối tuỳ thuộc vào câu lệnh. C. split() có tác dụng tách xâu. D. Kí tự mặc định để phân cách split() là dấu cách. Câu 33: Lệnh sau trả lại giá trị gì? "Trường Sơn".find("Sơn",4) A. 5. B. 6. C. 7. D. 8. Câu 34: Muốn nối danh sách gồm các từ thành một xâu ta dùng lệnh nào? A. Lệnh join(). B. Lệnh split(). C. Lệnh len(). D. Lệnh find(). Câu 35: Để tạo xâu in thường từ toàn bộ xâu hiện tại ta dùng hàm gì? A. lower(). B. len(). C. upper(). D. str(). Câu 36: Lệnh sau trả lại giá trị gì? "Trường Sơn".find("Sơn",8) A. 5. B. 6. C. 7. D. -1. Câu 37. Sử dụng lệnh nào để tìm vị trí của một xâu con trong xâu khác không? A. test(). B. in(). C. find(). D. split(). Câu 38. Kết quả của các câu lệnh sau là gì? s = "12 34 56 ab cd de " print(s. find(" ")) print(s.find("12")) print(s. find("34")) A. 2, 0, 3. B. 2, 1, 3. C. 3, 5, 2. D. 1, 4, 5. Câu 39. Phát biểu nào sau đây là đúng khi nói về các phương thức trong python? A. Python có một lệnh đặc biệt dành riêng cho xâu kí tự. B. Cú pháp của lệnh find là: . Find( ). C. Lệnh find sẽ tìm vị trí đầu tiên của xâu con trong xâu mẹ. D. Câu lệnh find có một cú pháp duy nhất. Câu 40. Lệnh sau trả lại giá trị gì? >> “abcdabcd”. find(“cd”) >> “abcdabcd”. find(“cd”, 4) A. 2, 6. B. 3, 3. C. 2, 2. D. 2, 7. Câu 41. Kết quả của chương trình sau là gì? >>> s = “Một năm có bốn mùa” >>> s.split() >>> st = “a, b, c, d, e, f, g, h” >>> st.split() A. ‘Một năm có bốn mùa’, [‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘h’]. B. [‘Một’, ‘năm’, ‘có’, ‘bốn’, ‘mùa’], [‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘g’, ‘h’]. C. ‘Một năm có bốn mùa’, ‘abcdefgh’. D. [‘Một’, ‘năm’, ‘có’, ‘bốn’, ‘mùa’], ‘abcdefgh’.
- Câu 42. Điền đáp án đúng vào chỗ chấm ( ) hoàn thành phát biểu đúng sau: “Python có các để xử lí xâu là dùng để tách câu thành một danh sách và lệnh join() dùng để các xâu thành một xâu”. A. câu lệnh, split(), nối. B. câu lệnh đặc biệt, split(), tách xâu. C. câu lệnh đặc biệt, copy(), nối danh sách. D. câu lệnh đặc biệt, split(), nối danh sách. Câu 43. Kết quả của chương trình sau là gì? a = "Hello" b = "world" c = a + " " + b print(c) A. hello world. B. Hello World. C. Hello word. D. Helloword. Câu 44. Hoàn thành câu lệnh sau để in ra chiều dài của xâu: x = "Hello World" print( ) A. x. len(). B. len(x). C. copy(x). D. x. length(). Câu 45. Cho xâu s = “1, 2, 3, 4, 5”. Muốn xoá bỏ kí tự “,” và thay thế bằng dấu “ ” ta sử dụng lần lượt những câu lệnh nào? A. remove() và join(). B. del() và replace(). C. split() và join(). D. split() và replace(). Câu 46: Cho xâu s = "Python". Muốn chuyển thành xâu s = "P y t h o n" ta cần làm sử dụng những câu lệnh: A. split() và join(). B. split() và replace(). C. del() và replace(). D. replace(). Câu 47: Chương trình sau cho ra kết quả là gì greeting = 'Good ' time = 'Afternoon' greeting = greeting + time + '!' print(greeting) A. ‘GoodAfternoon’. B. ‘GoodAfternoon!’. C. Chương trình báo lỗi. D. ‘Good Afternoon !’. Câu 48: Kết quả của chương trình sau là gì? line = "Geek1 Geek2 Geek3" print(line.split()) print(line.split(' ', 1)) A. ['Geek1', 'Geek2', 'Geek3']. ['Geek1', 'Geek2 Geek3'].
- B. ['Geek1', 'Geek2', 'Geek3']. ['Geek1', 'Geek2', 'Geek3'] . C. ['Geek1 Geek2', 'Geek3']. ['Geek1', 'Geek2', 'Geek3']. D. ['Geek1 Geek2', 'Geek3']. ['Geek1', 'Geek2 Geek3']. KIỂU DỮ LIỆU DANH SÁCH Câu 1: Quan sát các lệnh sau, lệnh nào đúng khi khởi tạo dữ liệu danh sách Ds? A. Ds==[]. B. Ds=[1.5, 2, 3, “9”, “10”]. C. Ds=={3, 4, 5, 6, 7}. D. [1, 2, 3, 4, 5]=Ds. Câu 2: Phát biểu nào sai về kiểu dữ liệu danh sách? A. Kiểu dữ liệu danh sách là kiểu dữ liệu gồm một dãy các giá trị. B. Các phần tử trong kiểu dữ liệu danh sách phải cùng kiểu dữ liệu. C. Chỉ số của các phần tử trong kiểu dữ liệu danh sách bắt đầu từ 0. D. Kiểu dữ liệu danh sách cho phép thay đổi từng giá trị của từng phần tử bằng lệnh gán. Câu 3: Cho biết kết quả sau khi thực hiện lệnh len? a =[4, 3, -2, -3, 5, 6, 4] len(A) A. 7. B. 6. C. 8. D. báo lỗi. Câu 4: Lệnh thêm phần tử có giá trị 100 vào cuối danh sách A? A. A[len(A)]= 100. B. A[len(A)-1] = 100. C. A= A +100. D. A.append(100). Câu 5: cho biết kết quả của đoạn chương trình sau? List1=[1, 2, 3, 4] List2=[5, 6, 7, 8] print(len(List1+List2)) A. 2. B. 4. C. 8. D. Báo lỗi. Câu 6: Viết lệnh xóa phần tử cuối cùng của danh sách A bằng lệnh del? A. del A[len(A)-1]. B. del A[len(A)]. C. del (A[len(A)-1]). D. del (A[len(A)]). Câu 7: Cách thêm một phần tử x vào đầu danh sách list? A. list= list+[x]. B. list.append(x). C. list= [x]+list. D. list[0]=x. Câu 8: Chương trình in ra danh sách B, mỗi phần tử in trên một hàng? A. Print(“các phần tử là:”, B). B. print(“ các phần tử là:”). for i in range(len(B)): print(B[i], end= “ ”) C. print(“ các phần tử là:”). for i in range(len(B)): print(A[i]) D. print(“ các phần tử là:”). for i in range(len(B)-1): print(B[i], end= “ ”) Câu 9: Lệnh nào để xóa toàn bộ dữ liệu của danh sách A A. A.append(x). B. A.insert(k,x). C. A.clear(). D. A.remove(x). Câu 10: Cho đoạn chương trình: A=[8,7,4,11,35] for k in A: print(k, end=' ') Khi thực hiện đoạn chương trình trên biến k sẽ lần lượt nhận các giá trị nào từ dãy A. A. 0,1,2,3,4. B. 8,7,4,11,35. C. 1,2,3,4,5. D. 35,11,4,7,8. Câu 11: (NB)Muốn thêm phần tử 10 vào cuối danh sách B ta dùng lệnh nào sau đây? A. B.append(10). B. B.clear(10). C. B.remove(10). D. B.insert(1,10). Câu 12: (NB). Cho các lệnh: A=[7,1,2,4,8] A.insert(3,6). Sau khi thực hiện dãy lệnh trên ta nhận được kết quả ào sau đây? A. [7,1,2,6,4,8]. B. [7,1,6,2,4,8]. C. [7,6,1,2,4,8]. D. [7,1,2,4,6,8]. Câu 5(TH). Cho đoạn chương trình sau: A=[1, 15, -9, 20, -99,100,120,7,10] B=[]
- for i in A: If i>1 and i<15: B.append(i). print(B) Sau khi thực hiện đoạn chương trình trên, dãy B có bao nhiêu phần tử? A. 1. B. 2. C. 5. D. 9. Câu 13: (TH). Câu lệnh nào sau đây dùng để in ra n dấu * viết liền nhau Ví dụ: Nhập 3 thì in ra *** A. n=int(input());. print(n*"*") B. n=input(). print(n*"*") C. n=int(input()). print(n**) D. n=input(). print(n***) Câu 14: Cho danh sách A=[4,7,8,6,7]. Kết quả sau khi gọi lệnh A.remove(8) là?. A.[4,7,8,7]. B.[]. C.[7,8,6,7]. D.[4,7,6,7]. Câu 15: Cho đoạn chương trình sau: n = int(input()) for i in range(n - 1, 0, -1): print(i, end=" ") Với n=5 đoạn chương trình trên cho kết quả là? A. 1 2 3 4. B. 4 3 2 1 C. 7 9 8 10. D. 1 5 8 9. Câu 16: (Vận dụng). Cho chương trình sau: n=int(input()) a=list(map(int,input().split())) b=[] c=[] d=[] for i in a: if i%2==0: b.append(i) else: c.append(i) d=b+c for i in d: print(i,end=" ") Sau khi thực hiện chương trình trên kết quả là: A. Dãy số sau khi đưa các phần tử lẻ lên đầu dãy và các phần tử chẵn về cuối dãy. B. Dãy số sau khi đưa các phần tử chẵn lên đầu dãy và các phần tử lẻ về cuối dãy. C. Dãy số chỉ toàn số lẻ. D. Dãy số chỉ toàn số chẵn. Câu 17: (Vận dụng cao). Cho chương trình sau: n=int(input()) i=1 while i<=n: if i%10!=0: print(i,end=" ") if i%10==0: print(i) i+=1 Sau khi thực hiện chương trình trên kết quả là: A. In ra các số tự nhiên từ 1 đến n, 10 số trên 1 hàng, mỗi số cách nhau một dấu cách trống. B. In ra các số tự nhiên từ 1 đến n, Các số chia hết cho 10, mỗi số cách nhau một dấu cách trống. C. In ra các số tự nhiên từ 1 đến n. Các số không chia hết cho 10, mỗi số cách nhau một dấu cách trống. KIỂM THỬ VÀ GỠ LỖI CHƯƠNG TRÌNH
- Câu 1: (B): Khi gõ sai cú pháp 1 lệnh, chương trình sẽ dừng lại và báo lỗi, đó là loại lỗi gì? A. Lỗi logic . B. Lỗi ngoại lệ. C. Lỗi cú pháp. D. Cả 3 lỗi trên. Câu 2: (B): Lỗi NameError có nghĩa là gì? A. Lỗi xảy ra khi chương trình muốn tìm một tên nhưng không thấy. B. Lỗi kiểu dữ liệu. C. Lỗi cú pháp. D. Lỗi xảy ra khi lệnh cố gắng truy cập phần tử của danh sách nhưng chỉ số vượt qua giới hạn. Câu 3: (B): Tổng thể có thể phân biệt lỗi chương trình Python làm mấy loại: A.7 . B. 3. C. 5. D.4. Câu 4: (TH): Cho câu lệnh sau: while True print(“Hello”) . Chương trình sẽ báo lỗi gì? A. SyntaxError. B. ValueError. C. IndexError. D. TypeError. Câu 5: (TH): Mã lỗi ngoại lệ của lệnh: int (“abc”) là gì? A. TypeEror. B. NameError. C. ValueError. D. IndexError. Câu 6: (TH): Mã lỗi ngoại lệ có thể có của lệnh : 12 + x(10) sau nếu xảy ra lỗi là: A. TypeEror. B. NameError. C. ValueError. D. Cả A và B. Câu 7 (VD): Cho đoạn chương trình tính tổng các số dương của dãy số A sau: Chương trình có bao nhiêu lỗi? A. 1. B. 2 ( s viết thường và S iết hoa, thiếu dấu : sau câu ệnh if). C. 0. D. 3. Câu 7: (VD): cho đoạn chương trình sau: Chương trình có lỗi gì? A. Lỗi cú pháp. B. Lỗi kiểu dữ liệu. C. Lỗi chia cho số 0. D. Lỗi chỉ số. Câu 8: (VDC): Cho chương trình thực hiện nhập một số tự nhiên n từ bàn phím, kết quả đưa ra danh sách các ước số thực sự của n, tính cả 1 và không tính n như sau: Chương trình trên có thể sinh những lỗi ngoại lệ nào? A. Lỗi Dữ liệu đã nhập không phải số tự nhiên và lỗi không nhập gì mà nhấn phím Enter ngay sau dòng yêu cầu nhập dữ liệu. B. Lỗi sai cú pháp câu lệnh for. C. Lỗi hàm range(1, n//2+1) . D.Lỗi không cho kết quả đúng. Câu 9: (VDC): Chương trình sau nhập các số nguyên m,n từ bàn phím, cách nhau bởi dấu cách. Chương trình đưa ra tổng hiệu tích thương cảu 2 số đã nhập : Khả năng sinh lỗi của chương trình là: A. Số n nhập vào là số 0. B. Các số m,n khi nhập vào không là số nguyên. C. Lỗi tách xâu kí tự thành danh sách các xâu con bằng lệnh split().
- D. Các lỗi: Số n nhập vào là số 0, giữa hai số m,n không có dấu cách, Các số m,n khi nhập vào không là số nguyên. Câu 10: Hoàn thành phát biểu sau: “Có rất nhiều công cụ và phương pháp khác nhau để kiểm thử chương trình. Các công cụ có mục đích của chương trình và , các lỗi phát sinh trong tương lai” A. Tìm ra lỗi, phòng ngừa, ngăn chặn. B. Tìm ra lỗi, phòng ngừa, xử lí. C. Phòng ngừa, ngăn chặn, xử lí lỗi. D. Xử lí lỗi, phòng ngừa, ngăn chặn. Câu 11: Đâu không là công cụ để kiểm thử chương trình? A. Công cụ in biến trung gian. B. Công cụ sinh các bộ dữ liệu test. C. Công cụ thống kê dữ liệu. D. Công cụ điểm dừng trong phần mềm soạn thảo lập trình. Câu 12: Trong các phát biểu sau, phát biểu nào chưa chính xác về kiểm thử chương trình? A. Hiện nay, có ít phương pháp và công cụ khác nhau để kiểm thử chương trình. B. Chương trình cần được thử với một số bộ dữ liệu test gồm đầu vào tiêu biểu và kết quả đầu ra biết trước. C. Các bộ test phụ thuộc vào các tiêu chí khác nhau. D. Các bộ test dữ liệu nên có nhiều bộ test ngẫu nhiên,. Câu 13: Phát biểu nào sau đây đúng nhất khi nói về các bộ dữ liệu test khi kiểm thử chương trình? A. Các bộ test có thể có đầu vào theo các tiêu chí khác nhau. B. Các bộ test có đầu vào theo một số tiêu chí nhất định. C. Các bộ test có thể có đầu vào theo các tiêu chí khác nhau như độ lớn, tính đa dạng của dữ liệu. D. Các bộ test có đầu vào phải theo các tiêu chí về độ lớn, tính đa dạng của dữ liệu. Câu 14: Số phát biểu đúng trong các phát biểu sau: 1) Cần chú ý nên có nhiều bộ test khi test các bộ dữ liệu. 2) Việc sinh ngẫu nhiên dữ liệu đầu vào trong miền xác định của chương trình làm tăng khả năng tìm lỗi. 3) Thực tế cho thấy ít khi phát sinh lỗi tại các vùng biên hoặc lân cận biên. 4) Không thể sử dụng các lệnh print() để in ra các biến trung gian. A. 2. (1,2). B. 3. C. 1. D. 4. Câu 15: Chương trình chạy phát sinh lỗi ngoại lệ ZeroDivision, nên xử lí như thế nào? A. Kiểm tra lại giá trị số chia. B. Kiểm tra lại chỉ số trong mảng. C. Kiểm tra giá trị của số bị chia. D. Kiểm tra kiểu dữ liệu nhập vào. Câu 16: Chương trình sau bị lỗi ở dòng lệnh thứ bao nhiêu ? >>> fruits = ['Banana', 'Apple', 'Lime'] >>> loud_fruits = [fruit.upper() for fruit in fruits] >>> print(loud_fruits) >>> list(enumerate(fruits)) A. 2. B. 3. C. 4. D. Không phát sinh lỗi. Câu 17: Chương trình sau phát sinh lỗi gì? >>> 1 / 0 0.5 >>> 2 ** 3 8 A. NameError. B. TypeError. C. ZeroDivisionError. ( lỗi chia cho số 0: 1/0). D. Syntax Error. Câu 18: Chương trình chạy phát sinh lỗi ngoại lệ IndexError, nên xử lí như thế nào? A. Kiểm tra lại giá trị số chia. B. Kiểm tra lại chỉ số trong mảng. C. Kiểm tra giá trị của số bị chia. D. Kiểm tra kiểu dữ liệu nhập vào. Câu 19: Chương trình sau có lỗi ở dòng lệnh nào? n = int(input("Nhập số tự nhiên n: "))
- s = "" for i in range(10): s = s + i A. 1. B. 2. C. 3. D. 4. Câu 20: Chương trình chạy phát sinh lỗi ngoại lệ TypeError, nên xử lí như thế nào? A. Kiểm tra lại chỉ số trong mảng. B. Kiểm tra lại giá trị số chia. C. Kiểm tra giá trị của số bị chia. D. Kiểm tra kiểu dữ liệu nhập vào. Câu 21: Chương trình sau mắc lỗi gì? def func(n) a, b = 0, 1 while a < n: print(a, end=' ') a, b = b, a+b print() print(func(1000)) A. TypeError. B. ZeroDivisionError. C. Syntax Error. (thiếu dấu : sau khai báo hàm ở dòng đầu tiên). D. NameError. Câu 22: Để tính giá trị trung bình của một danh sách số A, người lập trình đã dùng lệnh gttb = sum(A) / len(A). Những mã lỗi ngoại lệ nào có thể xảy ra ? A. NameError. B. ZeroDivisionError. C. Không thể xảy ra lỗi. D. Có thể xảy ra cả hai lỗi trên. Câu 23: Chương trình chạy phát sinh lỗi ngoại lệ NameError, nên xử lí như thế nào? A. Kiểm tra lại chỉ số trong mảng. B. Kiểm tra lại tên các biến và hàm. C. Kiểm tra giá trị của số bị chia. D. Kiểm tra kiểu dữ liệu nhập vào. Chương trình sau nên sửa như thế nào. Chọn phương án đúng nhất. fruits = ['Banana', 'Apple', 'Lime'] print(fruits[4]) A. Thay đổi kiểu dữ liệu của từng phần tử trong mảng. B. Kiểm tra chỉ số của mảng khi thực hiện lệnh.( Danh sách có 3 phần tử nên trong lệnh print() cần thay đổi chỉ số của danh sách). C. Thay đổi tên mảng. D. Chương trình không có lỗi.

