1. Trang chủ
  2. » Giáo án - Bài giảng

Luyện Đề từ đơn giản tới nâng cao trong Python 9

124 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Luyện đề từ đơn giản tới nâng cao trong python 9
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Công Nghệ Thông Tin
Thể loại Bài tập
Thành phố Hồ Chí Minh
Định dạng
Số trang 124
Dung lượng 133,25 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Kiểm tra s có phải là chuỗi chỉ chứa chữ cái hay không.Chủ đề: Thuật toán nâng cao Mục tiêu: Dãy con liên tiếp, tối ưu tổng Đề bài:Nhập vào một dãy n số nguyên... Đầu ra:Thu nhập nhỏ nhấ

Trang 1

Nhập vào một số nguyên dương n.a) (4.0 điểm - 80%) In ra tất cả các số chẵn

từ 1 đến n.b) (1.0 điểm - 20%) Đếm có bao nhiêu số chia hết cho 3 và 5 trong đoạn

Chủ đề: Kiểm tra số đặc biệt và tính toán cơ bản trên số nguyên

Mục tiêu: Hiểu bản chất số nguyên tố, chia hết, ước số…

Đề bài:

Nhập vào một số nguyên dương n.a) (2.4 điểm - 40%) Kiểm tra n có phải là

số nguyên tố hay không.b) (1.8 điểm - 30%) Tính tổng các chữ số của n.c) (1.8 điểm - 30%) Tìm tất cả các ước số của n và in ra số ước.

Trang 2

Nhập vào số nguyên n và dãy n số nguyên.

a) (2.4 điểm - 40%) Sắp xếp dãy theo thứ tự tăng dần.

b) (1.8 điểm - 30%) Tìm và in ra các số chia hết cho 5 trong mảng.

c) (1.8 điểm - 30%) Viết chương trình kiểm tra xem chuỗi nhập vào có phải là chuỗi đối xứng không (Ví dụ: madam, abccba)

Chủ đề: Thuật toán, tổ hợp, nâng cao

Mục tiêu: Rèn kỹ năng tư duy giải thuật, xử lý dãy con, đoạn con.

Đề bài:

Trang 3

Nhập vào một dãy n số nguyên.a) (1.8 điểm - 60%) Tìm độ dài dãy con tăng dài nhất liên tiếp trong mảng.b) (1.2 điểm - 40%) Tính tổng lớn nhất của đoạn con liên tiếp bất kỳ (tương tự bài toán Kadane).

Gợi ý:

Dãy con tăng liên tiếp: duyệt và so sánh a[i] < a[i+1]

Tổng đoạn con lớn nhất: dùng thuật toán Kadane (tăng dần dãy tổng và reset nếu âm)

VD:

Input: [1, 2, 2, 3, 4, 1, 2, 3, 0]

Output:

a) Dãy con tăng dài nhất: 3 (dãy: 1 2 3 hoặc 1 2 3)

b) Tổng đoạn con lớn nhất: 13 (dãy: 2 + 3 + 4 + 1 + 2 + 3)

Trang 4

Bài giải Bài 1: Rẽ nhánh & vòng lặp

print("Có", count, "số chia hết cho cả 3 và 5")

Câu 2: Số nguyên tố, tổng chữ số, ước số

Trang 5

print("Không phải số nguyên tố")

print("Có", dem, "ước")

Câu 3: Mảng & chuỗi

Trang 6

print("Chuỗi", s, "không phải chuỗi đối xứng")

Câu 4: Dãy con tăng & Tổng đoạn con lớn nhất

print("Độ dài dãy con tăng dài nhất:", max_len)

# b) Tổng đoạn con liên tiếp lớn nhất (Kadane đơn giản) max_sum = a[0]

cur_sum = a[0]

for i in range(1, len(a)):

Trang 7

if cur_sum + a[i] > a[i]:

cur_sum = cur_sum + a[i]

Trang 8

LUYỆN ĐỀ 2

Câu 1 (5,0 điểm)

Chủ đề: Cấu trúc rẽ nhánh & vòng lặp

Mục tiêu: Biết cách dùng if, for, while để giải bài toán thực tế.

Đề bài:Nhập vào số nguyên dương n.

Chủ đề: Kiểm tra số đặc biệt và tính toán cơ bản

Mục tiêu: Hiểu bản chất số hoàn hảo, tích chữ số, bội số

Đề bài:Nhập vào số nguyên dương n.

a) (2.4 điểm - 40%) Kiểm tra n có phải là số hoàn hảo không.

Mục tiêu: Biết lọc, đếm, kiểm tra chuỗi

Đề bài:Nhập vào số nguyên n và dãy gồm n số nguyên.

a) (2.4 điểm - 40%) Tìm số lớn thứ hai trong mảng.

b) (1.8 điểm - 30%) Đếm và in ra các số lẻ trong mảng.

Trang 9

c) (1.8 điểm - 30%) Nhập chuỗi s Kiểm tra s có phải là chuỗi chỉ chứa chữ cái hay không.

Chủ đề: Thuật toán nâng cao

Mục tiêu: Dãy con liên tiếp, tối ưu tổng

Đề bài:Nhập vào một dãy n số nguyên.

a) (1.8 điểm - 60%) Tìm đoạn con có tổng nhỏ nhất.

b) (1.2 điểm - 40%) Tìm độ dài dãy con giảm liên tiếp dài nhất trong mảng Input:

Dãy = [3, 2, -5, 4, -6, -1, 2, -3]

Output:

a) Tổng đoạn con nhỏ nhất là: -8 (dãy: -6, -1, 2, -3)

b) Độ dài dãy con giảm liên tiếp dài nhất là 2 (ví dụ: 3 → 2 hoặc 4 → -6)

Trang 10

if i % 2 != 0: # Kiểm tra nếu i là số lẻ

print(i, end=' ') # In số lẻ ra màn hình, cách nhau bằng dấu cách Bài 1-b:

n = int(input()) # Nhập vào số nguyên dương n

# Khởi tạo biến đếm số chia hết cho 3

count = 0

# Duyệt từ 1 đến n để tìm các số chia hết cho 3

for i in range(1, n+1):

if i % 3 == 0: # Kiểm tra nếu i chia hết cho 3

count += 1 # Tăng biến đếm lên 1

# In ra kết quả

print(f"Có {count} số chia hết cho 3.")

Bài 2a:

n = int(input()) # Nhập vào số nguyên dương n

# Kiểm tra số nguyên tố

is_prime = n > 1 and all(n % i != 0 for i in range(2, int(n**0.5) + 1))

Trang 11

n = int(input()) # Nhập vào số nguyên dương n

# Tìm các ước số của n, chỉ duyệt từ 1 đến căn bậc hai của n

uocs = set()

for i in range(1, int(n**0.5) + 1): # Duyệt từ 1 đến căn bậc hai của n

if n % i == 0:

uocs.add(i) # Thêm ước số i

uocs.add(n // i) # Thêm ước số n // i (đối số)

# In ra kết quả

print(f"Ước của {n} là:", *sorted(uocs))

print(f"Có {len(uocs)} ước")

Bài 3:

s = input() # Nhập vào chuỗi s

c = input() # Nhập vào ký tự c mà ta muốn đếm

# Đếm số lần xuất hiện của ký tự c trong chuỗi s

count = s.count(c)

# In ra kết quả

print(f"Số lần xuất hiện của ký tự '{c}' là: {count}")

Trang 12

s = input() # Nhập vào chuỗi s

# Duyệt qua chuỗi s và in mỗi ký tự 2 lần liên tiếp for char in s:

print(char * 2, end='') # In mỗi ký tự 2 lần Bài 4:

n = int(input()) # Nhập vào số nguyên dương n

Trang 13

LUYỆN ĐỀ 3 Bài 1: Tính tiền taxi

10 km đầu: 13.000 VNĐ/km

Từ km 11 đến 30: 11.000 VNĐ/km

Trên 30 km: 10.000 VNĐ/km

Giảm 10% tổng tiền nếu đi > 100km

Input: 35 Output: Tổng tiền taxi: 385000 VNĐ

Bài 2: Kiểm tra số chính phương & tính tổng ước

a) Nhập n, kiểm tra chính phương

b) Tính tổng các ước của n

Input: 36 Output: 36 là số chính phương Tổng ước: 91

Bài 3: Mảng 1 chiều - Sắp xếp, tìm, xóa

Trang 14

LUYỆN ĐỀ 4 Bài 1: Tính tiền internet theo gói

Cơ bản 100.000 VNĐ/tháng được 30GB

Quá mỗi GB: 3.000 VNĐ

Input: 45 Output: Tiền internet cần trả: 145000 VNĐ

Bài 2: Tính BCNN của danh sách số

Trang 15

Hỏi đi 12.5km thì hết bao nhiêu tiền?

b) Tiền điện được tính như sau:

- 0–50 kWh: 1,678đ/kWh

- 51–100 kWh: 1,734đ/kWh

- Trên 100 kWh: 2,014đ/kWh

Với 135 kWh, tính tiền điện phải trả.

c) Gói mạng Internet cố định là 220,000đ/tháng Nếu đóng 12 tháng trước sẽ được giảm 1 tháng.

Tính tổng tiền phải trả nếu đăng ký 2 năm.

Viết chương trình nhận vào một số nguyên dương N và thực hiện:

a) Kiểm tra N có phải số nguyên tố không.

b) Tính tổng các chữ số của N Kiểm tra N có phải số chính phương không c) Tìm tất cả ước số và kiểm tra Ước chung lớn nhất với 100 là bao nhiêu.

Trang 16

a) Tìm học sinh có điểm cao nhất và thấp nhất.

b) Đếm xem có bao nhiêu học sinh đạt loại giỏi (>=8.0).

c) Xóa tất cả điểm dưới 5 và in ra danh sách sau khi xóa.

Cho một dãy số nguyên N phần tử

a) Tìm đoạn con liên tiếp có tổng lớn nhất (Kadane's algorithm).

b) Tìm dãy con tăng dài nhất.

c) Tìm đoạn con có tích lớn nhất (áp dụng khi có cả số âm).

Trang 17

Dãy con tăng dài nhất: 3 (ví dụ: [3,5,6]) Tích lớn nhất: 720 (đoạn: [5,6,-2,4])

"""

Trang 18

# LUYỆN ĐỀ 5 - ĐỀ LUYỆN HỌC SINH GIỎI LỚP 9

# BÀI 1: TÍNH CHI PHÍ MUA HÀNG VÀ GIẢM GIÁ

Nhập vào số nguyên dương N Thực hiện các yêu cầu:

a) Kiểm tra xem N có chia hết cho 3, 5 và 9 không.

b) Đếm số lượng ước của N và cho biết tổng các ước đó.

c) Kiểm tra xem N có phải là số bậc thang hay không (các chữ số tăng dần hoặc giảm dần).

Trang 19

Nhập vào danh sách tên học sinh trong lớp Ví dụ: ["An", "Bao", "Minh",

"Nam", "Linh", "Nhi"]

a) Đếm xem có bao nhiêu tên bắt đầu bằng chữ 'N'.

b) Sắp xếp danh sách tên theo thứ tự bảng chữ cái.

c) Thay thế tất cả các tên "Nam" thành "Nam Phong".

Output:

Tên bắt đầu bằng N: 2

Danh sách sau sắp xếp: ["An", "Bao", "Linh", "Minh", "Nam", "Nhi"]

Danh sách sau thay thế: ["An", "Bao", "Minh", "Nam Phong", "Linh", "Nhi"]

"""

# BÀI 4: DÃY CON - TOÁN DÃY SỐ TỔ HỢP

"""

Cho một dãy số nguyên Hãy thực hiện:

a) Tìm độ dài dãy con liên tiếp chia hết cho 3 dài nhất.

Trang 20

LUYỆN ĐỀ 6 - ĐỀ LUYỆN HỌC SINH GIỎI LỚP 9

# BÀI 1: THỜI GIAN VÀ LỊCH BIỂU

sau đó cộng thêm 1 đơn vị (dịch mã đơn giản).

a) Nhập chuỗi ký tự thường, ví dụ: "abc"

b) Mã hóa theo quy tắc trên → "bcd"

c) Giải mã chuỗi vừa mã hóa để khôi phục chuỗi gốc.

Một lớp có 3 học sinh, mỗi bạn học 4 môn Hãy xử lý điểm theo ma trận sau:

a) Tính điểm trung bình từng học sinh.

Trang 21

b) Tìm học sinh có điểm trung bình cao nhất.

c) Kiểm tra học sinh nào có tất cả các môn đều trên 5.

Hãy viết chương trình tính số bước ít nhất để đi từ vị trí (x1, y1) đến (x2, y2).

a) Tính số bước theo quy tắc: mỗi bước đi ngang/dọc 1 ô.

b) Tính tổng quãng đường nếu mỗi bước dài 1.5m.

Trang 22

đề 8

BÀI 1: TÍNH TIỀN MUA HÀNG (Ứng dụng Toán thực tế)

Minh đi nhà sách mua đồ dùng học tập Hãy giúp Minh tính tổng chi phí.

🟨 BÀI 2: KIỂM TRA SỐ ĐẶC BIỆT

Viết chương trình nhập số nguyên dương N, và:

Kiểm tra N có chia hết cho 3 hoặc 5 không.

Kiểm tra N có phải là số đối xứng (palindrome).

🟨 BÀI 3: DANH SÁCH ĐIỂM SỐ

Nhập danh sách điểm (từ 0–10) của học sinh trong lớp.

BÀI 4: XỬ LÝ CHUỖI TÊN

Nhập vào danh sách tên học sinh.

Yêu cầu:

Trang 23

Đếm số tên có độ dài lớn hơn 3 ký tự.

Tên dài nhất: "Minh"

Danh sách in hoa: ["AN", "LINH", "MINH", "BA

Trang 24

ĐỀ 9

BÀI 1: CHUYẾN ĐI DÃ NGOẠI

Câu chuyện: Lớp 8A tổ chức chuyến đi chơi công viên, cần tính chi phí cho từng

bạn.

Yêu cầu:Viết chương trình nhận vào số học sinh, giá vé vào cổng, tiền thuê xe

theo đầu người và số tiền đóng góp quỹ lớp mỗi bạn.Tính tổng số tiền mà lớp phải chuẩn bị.

BÀI 2: KIỂM TRA SỐ – GIẢI MÃ MẬT MÃ

Yêu cầu:Cho một số nguyên dương N Thực hiện các bước sau

a) Kiểm tra N có phải là số thuận nghịch không (ví dụ 12321).

BÀI 3: CHUỖI - PHÂN TÍCH VÀ BIẾN ĐỔI

Yêu cầu:Nhập vào một chuỗi mô tả thời khóa biểu của học sinh, ví dụ "Toán, Văn,

Anh, Toán, Lý"

a) Đếm số môn học trùng nhau

b) In ra danh sách các môn không trùng (loại trùng lặp)

c) Sắp xếp danh sách theo thứ tự bảng chữ cái

Ví dụ: Input: "Toán, Văn, Anh, Toán, Lý"

Trang 25

Số môn trùng nhau: 1

Danh sách không trùng: ['Toán', 'Văn', 'Anh', 'Lý']

Sau sắp xếp: ['Anh', 'Lý', 'Toán', 'Văn']

BÀI 4: THUẬT TOÁN - CHIA NHÓM HỌC SINH

Yêu cầu:Cho một danh sách chứa chiều cao (cm) của các bạn trong lớp.

a) Tính chiều cao trung bình

Đề bài:Cho hai số nguyên a và b Tính tổng tiền của một món hàng có giá a (đơn

vị: đồng) và số lượng b Sau đó tính giảm giá 15% nếu tổng tiền lớn hơn hoặc bằng

2 triệu đồng, in ra số tiền cần thanh toán.

Đầu vào:Hai số nguyên a, b (1 ≤ a, b ≤ 1000000).

Đầu ra:Số tiền cần phải trả, đã tính giảm giá (nếu có).

Đề bài:Nhập vào hai số nguyên dương a và b Tính số cặp số trong khoảng [a, b]

mà ước chung lớn nhất của chúng là 1.

Đầu vào:Hai số nguyên a, b (1 ≤ a ≤ b ≤ 1000).

Đầu ra:Số cặp số trong khoảng [a, b] mà có ước chung lớn nhất bằng 1.

def ucln(a, b):

if b == 0:

return a

Trang 26

Đề bài:Nhập vào một danh sách các thu nhập của một nhóm người Tính thu nhập

nhỏ nhất, lớn nhất và số lượng thu nhập khác nhau trong danh sách.

Đầu vào:Số nguyên n (1 ≤ n ≤ 100), sau đó là một danh sách n các số nguyên Đầu ra:Thu nhập nhỏ nhất, thu nhập lớn nhất và số lượng thu nhập khác nhau

Bài 4: Dãy con liên tiếp

Đề bài:Cho một dãy số thực a có n phần tử Tìm dãy con liên tiếp có tổng lớn nhất

và tính tổng của dãy con đó.

Đầu vào:Hai số nguyên n, s (1 ≤ n ≤ 1000), sau đó là một danh sách n số thực Đầu ra:Tổng lớn nhất của dãy con liên tiếp.

Trang 27

Bài 1: Tổng tiền mua hàng

Đề bài:Cho hai số nguyên a và b Tính tổng tiền của một món hàng có giá a (đơn

vị: đồng) và số lượng b Nếu tổng tiền lớn hơn hoặc bằng 500,000 đồng, áp dụng giảm giá 10% và in ra số tiền cần thanh toán.

Đầu vào:Hai số nguyên a, b (1 ≤ a, b ≤ 1000000).

Đầu ra:Số tiền cần phải trả sau khi áp dụng giảm giá (nếu có).

Đề bài:Nhập vào hai số nguyên dương a và b Tính số cặp số trong khoảng [a, b]

mà cả hai số đều là số nguyên tố.

Đầu vào:Hai số nguyên a, b (1 ≤ a ≤ b ≤ 1000).

Đầu ra:Số cặp số trong khoảng [a, b] mà cả hai số đều là số nguyên tố.

Bài 3: Tính thu nhập trung bình

Đề bài:Nhập vào danh sách thu nhập của n người trong một nhóm Tính thu nhập

trung bình của nhóm và in ra các thu nhập lớn hơn trung bình.

Đầu vào:Số nguyên n (1 ≤ n ≤ 100), sau đó là một danh sách n các số nguyên (thu

Trang 28

avg = sum(a) / n

print(f"Thu nhập trung bình: {avg:.2f}")

print("Thu nhập lớn hơn trung bình:")

for x in a:

if x > avg:

print(x)

Bài 4: Dãy con liên tiếp có tổng lớn nhất

Đề bài:Cho một dãy số nguyên a có n phần tử Tìm dãy con liên tiếp có tổng lớn

current_sum = max(a[i], current_sum + a[i])

max_sum = max(max_sum, current_sum)

print(max_sum)

Bài 5: Đếm số lần xuất hiện của phần tử trong dãy

Đề bài:Nhập vào một dãy số nguyên, tính số lần xuất hiện của mỗi phần tử trong

dãy số và in ra phần tử và số lần xuất hiện của nó.

Đầu vào:Một số nguyên n (1 ≤ n ≤ 100), sau đó là một danh sách n các số nguyên Đầu ra:Mỗi phần tử và số lần xuất hiện của nó trong dãy.

for key, value in counts.items():

print(f"Phần tử {key} xuất hiện {value} lần")

Bài 6: Tìm số chia hết cho 3 và 5

Trang 29

Đề bài:Cho một dãy số nguyên, tìm các số trong dãy chia hết cho cả 3 và 5 Đầu vào:Một số nguyên n (1 ≤ n ≤ 100), sau đó là một danh sách n các số nguyên Đầu ra:In ra các số chia hết cho cả 3 và 5 trong dãy số.

Bài 1: Tính tổng các số chia hết cho 2 hoặc 3 trong dãy

Đề bài:Cho một dãy số nguyên Hãy tính tổng các số chia hết cho 2 hoặc 3 trong

Bài 2: Số hoàn hảo

Đề bài:Một số nguyên dương n được gọi là số hoàn hảo nếu tổng các ước của nó

(không bao gồm chính nó) bằng chính nó Ví dụ: 6 là số hoàn hảo vì 1 + 2 + 3 = 6 Hãy kiểm tra xem số a có phải là số hoàn hảo hay không.

Đầu vào:Một số nguyên dương a (1 ≤ a ≤ 10000).

Đầu ra:In ra "YES" nếu số a là số hoàn hảo, ngược lại in ra "NO".

Trang 30

Bài 3: Tính tổng dãy con liên tiếp có tổng nhỏ nhất

Đề bài:Cho một dãy số nguyên có n phần tử Hãy tìm tổng nhỏ nhất của một dãy

con liên tiếp trong dãy số đó.

Đầu vào:Một số nguyên n (1 ≤ n ≤ 1000) và một dãy số nguyên a có n phần tử Đầu ra:Tổng nhỏ nhất của một dãy con liên tiếp trong dãy.

current_sum = min(a[i], current_sum + a[i])

min_sum = min(min_sum, current_sum)

print(min_sum)

Bài 4: Đếm số nguyên tố trong dãy số

Đề bài:Cho một dãy số nguyên Hãy đếm số lượng số nguyên tố có trong dãy Đầu vào:Một số nguyên n (1 ≤ n ≤ 100), sau đó là một danh sách n các số nguyên Đầu ra:Số lượng số nguyên tố trong dãy số.

Trang 31

Bài 5: Tìm số lớn nhất trong dãy con liên tiếp

Đề bài:Cho một dãy số nguyên a có n phần tử Hãy tìm số lớn nhất trong các dãy

con liên tiếp có tổng lớn nhất trong dãy số đó.

Đầu vào:Một số nguyên n (1 ≤ n ≤ 1000) và một dãy số nguyên a có n phần tử Đầu ra:Số lớn nhất trong dãy con liên tiếp có tổng lớn nhất.

Bài 6: Tìm số chia hết cho 7 trong dãy

Đề bài:Cho một dãy số nguyên Hãy tìm các số trong dãy chia hết cho 7 và in ra

print(*[i for i in range(1, n+1) if i % 2 == 0])

ds = [str(i) for i in range(1, n+1) if i % 3 == 0 and i % 5 == 0]

print(len(ds), *ds)

Trang 32

print("CHAN" if n % 2 == 0 else "LE")

✅ Tối ưu: Dùng toán tử ba ngôi thay vì if - else

✅ Đáp ứng mọi test: Hoạt động đúng với mọi số nguyên

Trang 33

2 So sánh hai số

python

Sao chépChỉnh sửa

a, b = map(int, input().split())

print(">" if a > b else "<" if a < b else "=")

✅ Tối ưu: Gọn hơn bằng cách sử dụng toán tử ba ngôi lồng nhau

✅ Đáp ứng mọi test: Không bị lỗi khi nhập hai số bất kỳ

3 Kiểm tra năm nhuận

python

Sao chépChỉnh sửa

n = int(input())

print("YES" if (n % 4 == 0 and n % 100 != 0) or (n % 400 == 0) else "NO")

✅ Tối ưu: Viết điều kiện trong một dòng

✅ Đáp ứng mọi test: Hoạt động đúng với mọi giá trị n

✅ Tối ưu: Dùng công thức tổng cấp số cộng thay vì vòng lặp

✅ Đáp ứng mọi test: Không bị lỗi với số lớn

5 Đếm số chữ số của n

python

Sao chépChỉnh sửa

print(len(input().strip()))

✅ Tối ưu: Dùng len() để đếm số chữ số thay vì vòng lặp

✅ Đáp ứng mọi test: Đúng cho mọi số nguyên dương

✅ Bạn cần bài toán cụ thể nào không? ✅

4o

Bạn đã nói:

tôi muốn các dạng bài tập về sử dụng câu lệnh rẽ nhánh, tính toán đơn giản thực tế có ví dụ và chú thích, tối ưu pphu hợp với tất cả các test trên themis

Trang 34

ChatGPT đã nói:

Dưới đây là một số bài tập sử dụng câu lệnh rẽ nhánh (if-else), kèm theo ví dụ, chú thích và cách viết tối ưu để phù hợp với Themis.

1 Kiểm tra số lớn nhất trong ba số

Đề bài: Nhập vào ba số nguyên a, b, c Xuất số lớn nhất

Giải pháp:

 So sánh ba số bằng max(a, b, c) để tối ưu

Themis yêu cầu đầu vào hợp lệ nên ta chỉ cần đảm bảo nhập đúng định dạng.

Mã nguồn tối ưu:

✅ Tối ưu: Dùng max() thay vì if - else lồng nhau

✅ Phù hợp mọi test: Không lỗi với số âm, số lớn

2 Kiểm tra số có chia hết cho 3 và 5 không?

Đề bài: Nhập một số nguyên n Kiểm tra:

Nếu chia hết cho 3 và 5, in YES

 Ngược lại, in NO

Giải pháp:

 Kiểm tra n % 3 == 0 and n % 5 == 0

Mã nguồn tối ưu:

Trang 35

Ví dụ:

Input Output

15 YES

10 NO

✅ Tối ưu: Dùng toán tử ba ngôi (if - else)

✅ Phù hợp mọi test: Không lỗi với số âm, số lớn

3 Kiểm tra số dương, âm hay 0

✅ Tối ưu: Sử dụng toán tử ba ngôi lồng

✅ Phù hợp mọi test: Đúng với mọi số nguyên

4 Tính tiền taxi dựa trên số km

Đề bài: Nhập số km x Tính tiền theo bảng sau:

Trang 36

✅ Tối ưu: Không cần dùng if-else nhiều dòng.

✅ Phù hợp mọi test: Đúng với mọi x

5 Kiểm tra loại tam giác

Đề bài: Nhập ba cạnh tam giác a, b, c Kiểm tra loại:

 Nếu không phải tam giác, in "INVALID"

 Nếu tam giác đều, in "EQUILATERAL"

 Nếu tam giác cân, in "ISOSCELES"

 Nếu tam giác vuông, in "RIGHT"

 Ngược lại, in "SCALENE" (thường)

Mã nguồn tối ưu:

Trang 37

Input Output

7 2 2 INVALID

✅ Tối ưu: Sử dụng elif thay vì if lồng nhiều cấp

✅ Phù hợp mọi test: Kiểm tra đầy đủ tam giác

✅ Tối ưu: Sử dụng toán tử ba ngôi lồng

✅ Phù hợp mọi test: Không lỗi với số lẻ, số lớn

Tóm tắt cách tối ưu khi dùng if - else

✔ Dùng max() , min() , abs() nếu có thể thay thế if - else

✔ Dùng toán tử ba ngôi (a if condition else b ) để rút gọn.

✔ Viết gọn if - elif - else , tránh if lồng quá sâu.

✔ Kiểm tra đầy đủ đầu vào để tránh lỗi trên Themis

✅ Bạn cần thêm dạng bài nào không? ✅

4o

Trang 38

Bạn đã nói:

các dạng bài tập sử dụng cấu trúc rẽ nhánh như có khuyến mại hoặc thuế như những bài toán về điện, nước, bán hàng, taxi

ChatGPT đã nói:

Dưới đây là các dạng bài tập sử dụng cấu trúc rẽ nhánh ( if - else ) áp dụng cho các bài toán thực

tế như khuyến mãi, thuế, tính tiền điện, tiền nước, tiền taxi, bán hàng, đảm bảo tối ưu và phù hợp với mọi test trên Themis.

✅ Tối ưu: Tính theo từng bậc, tránh lỗi sai

✅ Phù hợp mọi test: Đúng với mọi x

2 Tính tiền nước sinh hoạt

Đề bài: Nhập số m³ nước x, tính tiền theo bảng giá:

Trang 39

print(10 * 5973 + (x - 10) * 7052)

else:

print(10 * 5973 + 10 * 7052 + (x - 20) * 8699)

✅ Tối ưu: Tính theo từng bậc giá

✅ Phù hợp mọi test: Xử lý đúng cho mọi x

print(10000 if x == 1 else x * 9000 if x <= 5 else x * 8000)

✅ Tối ưu: Sử dụng toán tử ba ngôi (if - else)

✅ Phù hợp mọi test: Xử lý đúng mọi trường hợp x

4 Tính thuế thu nhập cá nhân

Đề bài: Nhập mức thu nhập x (triệu VNĐ), tính thuế theo bảng:

≤ 5 triệu: Không tính thuế

✅ Tối ưu: Tránh lồng quá nhiều if

✅ Phù hợp mọi test: Không lỗi với số lớn

Trang 40

5 Tính tiền sau khuyến mãi

Đề bài: Nhập giá trị hóa đơn x, áp dụng khuyến mãi:

print(int(x * 0.9) if x >= 500000 else int(x * 0.95) if x >= 200000 else x)

✅ Tối ưu: Dùng toán tử ba ngôi để viết gọn

✅ Phù hợp mọi test: Xử lý đúng mọi giá trị x

6 Kiểm tra phí giao hàng

Đề bài: Nhập tổng giá trị đơn hàng x, tính phí vận chuyển:

print(0 if x >= 1000000 else 30000 if x >= 500000 else 50000)

✅ Tối ưu: Dùng toán tử ba ngôi để viết gọn

✅ Phù hợp mọi test: Đúng với mọi x

7 Tính tiền vé xem phim

Đề bài: Nhập độ tuổi age, tính giá vé:

Trẻ em (≤ 12 tuổi): 50.000 VNĐ

Người lớn (> 12 tuổi): 100.000 VNĐ

Người cao tuổi (≥ 60 tuổi): Giảm 30%

Mã nguồn tối ưu:

Ngày đăng: 17/04/2025, 14:39

HÌNH ẢNH LIÊN QUAN

Lặp lồng nhau &#34;Bảng&#34;, &#34;Hàng cột&#34; Bảng cửu chương for i in range(): for j in - Luyện Đề từ đơn giản tới nâng cao trong Python 9
p lồng nhau &#34;Bảng&#34;, &#34;Hàng cột&#34; Bảng cửu chương for i in range(): for j in (Trang 51)

🧩 Sản phẩm bạn có thể quan tâm

w