# Giải Bài test Python số 2. - Đề thi 16/05 ### 1. 10 điểm - Thái Cho chuỗi a = "emtenlanguyenvanthai". Đếm kí tự của chuỗi. Tìm số chữ n trong dãy và thay thế kí tự "nguyen" thành "ha". ```python a = "emtenlanguyenvanthai" print(len(a)) print(a.count("n")) a = a.replace("nguyen", "ha") ``` ### 2. 10 điểm - Thái Căn lề giữa vs 30 kí tự vs lệnh format vs chuỗi "tuhoclaptrinh". ```python print('{:^30}'.format("tuhoclaptrinh")) ``` ### 3. Loại bỏ dấu tiếng Việt - 10 điểm - Nhập một xâu từ bàn phím. - Loại bỏ toàn bộ dấu tiếng Việt trong chuỗi. <5 điểm> - Giữ lại được chữ hoa, chữ thường như lúc đầu (ví dụ Ê -> E thay vì Ê -> e) <+2 điểm> - Code < 10 dòng. <+3 điểm> **Cách giải 1** ```python import re s = "Đây là chuỗi cần chuyển sang tiếng Việt không dấu " s = re.sub('[àáạảãâầấậẩẫăằắặẳẵ]', 'a', s) s = re.sub('[ÀÁẠẢÃĂẰẮẶẲẴÂẦẤẬẨẪ]', 'A', s) s = re.sub('èéẹẻẽêềếệểễ', 'e', s) s = re.sub('ÈÉẸẺẼÊỀẾỆỂỄ', 'E', s) s = re.sub('òóọỏõôồốộổỗơờớợởỡ', 'o', s) s = re.sub('ÒÓỌỎÕÔỒỐỘỔỖƠỜỚỢỞỠ', 'O', s) s = re.sub('ìíịỉĩ', 'i', s) s = re.sub('ÌÍỊỈĨ', 'I', s) s = re.sub('ùúụủũưừứựửữ', 'u', s) s = re.sub('ƯỪỨỰỬỮÙÚỤỦŨ', 'U', s) s = re.sub('ỳýỵỷỹ', 'y', s) s = re.sub('ỲÝỴỶỸ', 'Y', s) s = re.sub('Đ', 'D', s) s = re.sub('đ', 'd', s) ``` **Cách giải 2** (Luyện kĩ năng Google) ```python s = "Đây là chuỗi cần chuyển sang tiếng Việt không dấu " import unidecode s = unidecode.unidecode(s) print(s) ``` ### 4. Làm sao để làm tròn số? - 10 điểm. - Viết chương trình làm tròn số chạy như sau: (+10 điểm) ```python Nhập số: 1.23456 Làm tròn đến bao nhiêu chữ số thập phân? Nhập: 2 Kết quả: 1.23 ``` ```python i = float(input("Nhập số: ")) n = int(input("Làm tròn đến bao nhiêu chữ số thập phân? Nhập: ")) print("Kết quả: {}".format(round(i, n))) ``` ### 5. 10 điểm - Tú 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à: 1+11+111+1111 = 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. Giả sử có chuối a = '1' thì int(a) sẽ cho ra số 1. ```python a = input("Nhập a: ") print(eval("{0}+{0}{0}+{0}{0}{0}+{0}{0}{0}{0}".format(a))) ``` Hoặc: ```python a = input("Nhập a: ") a1 = int("{0}".format(a)) a2 = int("{0}{0}".format(a)) a3 = int("{0}{0}{0}".format(a)) a4 = int("{0}{0}{0}{0}".format(a)) print(a1+a2+a3+a4) ``` ### 6. 10 điểm - Tú Với chuỗi s dưới đây s = 'aaaaaaaAAAAAaaa//123123//000000//&&TTT%%abcxyznontqfadf' Hãy lấy mật mã trong chuỗi s, biết mật mã nằm giữa && và %%. Cố gắng tối thiểu dòng code ```python s = 'aaaaaaaAAAAAaaa//123123//000000//&&TTT%%abcxyznontqfadf' print((s.split("&&")[1]).split("%%")[0]) ``` ```python s = 'aaaaaaaAAAAAaaa//123123//000000//&&TTT%%abcxyznontqfadf' s1 = s.split("&&")[1] s2 = s1.split("%%")[0] print(s2) ``` ### 7. 10 điểm - Thành Nhập một số tự nhiên vào từ bàn phím. Kiểm tra tính chia hết của số đó cho 2,3 và 6. In kết quả ra màn hình. (in ra mọi số có thể chia hết trong 2 3 6. Nếu không chia hết cho số nào in ra không chia hết.) Kiểm tra chia hết cho 2 Kiểm tra chia hết cho 3 Kiểm tra chia hết cho 6 Báo được ko chia hết. ```python a = int(input("Nhập số: ")) if a % 2 == 0: print("Chia hết cho 2") if a % 3 == 0: print("Chia hết cho 3") if a % 6 == 0: print("Chia hết cho 6") if a % 2 != 0 and a % 3 != 0 and a % 6 != 0: print("Không chia hết cho cả 2,3,6") ``` ### 8. 10 điểm - Thành Nhập một câu ( cách nhau bằng dấu cách từ bàn phím) In ra từ đầu và từ cuối. ```python sentence = input("Nhập câu: ") splited = sentence.split() print("Từ đầu: {} - Từ cuối: {}".format(splited[0], splited[-1])) ``` ### 9. 10 điểm - Duy Bạn hãy làm 1 máy tính cầm tay sử dụng if và else <8 điểm> ( yêu cầu :sử dụng số từ bàn phím , có các phép tính cơ bản (+),(-),(/),(*) ) - Ví dụ về việc chạy máy tính này: Dòng đầu tiên in ra `Nhập phép tính:` và nhận một phép tính từ người dùng. Chương trình sẽ thực hiện tính toán và in ra kết quả 3. ```python Nhập phép tính: 1+2 Kết quả: 3 ``` - Làm máy tính như trên, nhưng không dùng if else <2 điểm>. **Cách 1: Cách làm của Duy** **Cách 2:** ```python tinh = input("Nhập phép tính: ") print("Kết quả: {}".format(eval(tinh))) ``` ### 10. 10 điểm - Duy - Ý nghĩa hàm `round()`. - Giả sử `a = 111.999`. Viết tìm hàm khác để xử lý số a in được kết quả tương tự `print(round(a))`. ```python import math a = 111.999 print(round(a)) print(math.ceil(a)) ```