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

Quyển 1. Lý Thuyết và bài tập lập trình Python.pdf

25 19 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

Định dạng
Số trang 25
Dung lượng 608,43 KB

Nội dung

Tài liệu lý thuyết và bài tập Python gồm 25 trang, định dạng PDF, được xếp theo mức độ dễ đến khó để học sinh làm quen với lý thuyết va bài tập lập trình Python ôn thi Tin học trẻ bảng B.

Trang 1

TIN HỌC BÌNH PHƯƠNG

LÝ THUYẾT VÀ BÀI TẬP

TIN HỌC LẬP TRÌNH PHỔ THÔNG

Giáo viên: NGUYỄN THẾ PHƯƠNG

Bình Tân, tháng 06 năm 2023

Tài liệu lưu hành nội bộ

Trang 2

LỜI NÓI ĐẦU

Trước khi bắt đầu bước vào học ngôn ngữ lập trình Python, bạn cần biết những từ khóa và quy ước quan trọng của ngôn ngữ này:

1 * Từ khoá trong Python (có phân biệt chữ hoa và chữ thường) and

as assert break class continue

def del elif else except

exec finally

for from global

if import

in is lambda

not or pass print raise return

try while

with yield

2 * Lệnh và cú pháp trong Python:

- Sử dụng # để chú thích 1 dòng trong chương trình # comment - Sử dụng ''' để chú thích 1 đoạn '''

- Dấu ' và " word = 'word'

cau_van = "Chào mừng bạn đến với ngôn ngữ lập trình Python." doan_van = """Ngày đầu tiên đi học, mẹ dắt em

một mình em đến lớp """

- Sử dụng canh lề (bắt buộc) để bao khối lệnh của hàm, lớp hoặc luồng điều khiển - Số khoảng trắng dùng để canh lề có thể nhiều ít tuỳ ý nhưng tất cả lệnh trong một khối

phải được canh lề như nhau

- Lệnh được viết trên nhiều dòng sử dụng ký tự \

total = item_one +\ item_two + \

import sys; x = 'foo'; sys.stdout.write(x + '\n')

- Nhóm nhiều câu lệnh đơn tạo nên một khối lệnh và cũng được gọi là bộ (suites) - Các lệnh phức như if, while, def và class cần một dòng header và một bộ

- Dòng header bắt đầu câu lệnh (bằng một từ khoá tương ứng ví dụ như if, def,…) và

kết thúc bằng dấu hai chấm : theo sau là một tập hợp các câu lệnh (suite)

def hi(name):

print 'Hello ' + name print 'Have a good day!' hi('nghi')

Giờ chúng ta bắt đầu làm quen với Pythong nhé!

(suite) tập hợp các câu lệnh

Trang 3

NGÔN NGỮ LẬP TRÌNH PYTHON I TOÁN TỬ:

− Toán tử số học: +, -, *, /, % (chia lấy dư), ** (lũy thừa)

− Toán tử so sánh: == (bằng), != (không bằng), > (lớn hơn), < (nhỏ hơn), >= (lớn hơn hoặc bằng), <= (nhỏ hơn hoặc bằng)

− Toán tử logic: and (và), or (hoặc), not (phủ định)

II KIỂU DỮ LIỆU:

1 Kiểu dữ liệu số nguyên (int):

7 Kiểu dữ liệu từ điển (dictionary):

person = {"name": "Alice", "age": 25}

8 Kiểu dữ liệu tập hợp (set):

c) Thay đổi giá trị của một phần tử trong danh sách:

fruits[2] = "grape"

print(fruits) # Output: ["apple", "banana", "grape"]

d) Thêm phần tử vào danh sách:

fruits.append("kiwi")

print(fruits) # Output: ["apple", "banana", "grape", "kiwi"]

e) Xóa phần tử khỏi danh sách:

del numbers[2]

print(numbers) # Output: [1, 2, 4, 5]

Trang 4

f) Duyệt qua danh sách sử dụng vòng lặp:

for fruit in fruits: print(fruit)

g) Sử dụng các phương thức có sẵn của danh sách:

numbers.sort() # Sắp xếp danh sách theo thứ tự tăng dần print(numbers)

Để sắp xếp danh sách theo thứ tự giảm dần trong Python, bạn có thể sử dụng tham số reverse=True trong phương thức sort():

numbers.sort(reverse=True) # Sắp xếp danh sách theo thứ tự giảm dần print(numbers)

III CÁC CÂU LỆNH VÀ CẤU TRÚC ĐIỀU KHIỂN: 1 Cấu trúc rẽ nhánh (if-else):

Kiểm tra một điều kiện và thực hiện các hành động khác nhau dựa trên kết quả của điều kiện

a) Cấu trúc điều khiển dạng thiếu:

Ví dụ: Cấu trúc điều khiển if

x = 10 if x > 5:

print("x lớn hơn 5")  Kết quả: x lớn hơn 5

b) Cấu trúc điều khiển dạng đủ:

Ví dụ : Cấu trúc điều khiển if-else

x = 10 if x > 5:

print("x lớn hơn 5") else:

print("x nhỏ hơn hoặc bằng 5")  Kết quả: x lớn hơn 5

2 Câu lệnh lặp: a) Vòng lặp for:

Ví dụ 1: In các phần tử trong danh sách danh_sach = [1, 2, 3, 4, 5]

for phan_tu in danh_sach:

Ví dụ 3: Cấu trúc điều khiển + vòng lặp for

danh_sach = [1, 2, 3, 4, 5] for phan_tu in danh_sach: if phan_tu % 2 == 0: print(phan_tu, "là số chẵn")

Kết quả: Nếu nhập 2 hoặc 4  là số chẵn;

Trang 5

b) Vòng lặp while:

Ví dụ 1: In các số từ 1 đến 5 bằng vòng lặp while

i = 1

while i <= 5: print(i) i += 1

 Kết quả: Các phần tử được in ra từ 1 đến 5 và mỗi phần tử trên 1 dòng

Ví dụ 2: Tính tổng các số từ 1 đến 10 bằng vòng lặp while

tong = 0 i = 1

while i <= 10: tong += i i += 1

print("Tổng các số từ 1 đến 10 là:", tong)  Kết quả: Tổng các số từ 1 đến 10 là: 55

Ví dụ 3: Cấu trúc điều khiển + vòng lặp while

i = 1

while i <= 5: if i % 2 == 0:

print(i, "là số chẵn") else:

print(i, "là số lẻ") i += 1

 Kết quả: 1 là số lẻ; 2 là số chẵn; 3 là số lẻ; 4 là số chẵn; 5 là số lẻ

IV CÁC CÂU LỆNH CƠ BẢN:

− Câu lệnh gán giá trị: gán giá trị cho một biến Ví dụ: x = 5 + Phép gán giá trị biến:

x = 5 y = 10 tong = x + y

print("Tổng của x và y là:", tong) + Phép gán giá trị hằng số:

PI = 3.14 ban_kinh = 5

dien_tich = PI * ban_kinh * ban_kinh print("Diện tích hình tròn là:", dien_tich)

− Câu lệnh in (print): in một giá trị ra màn hình Ví dụ: print("Hello World")

− Câu lệnh nhập (input): nhận giá trị từ người dùng Ví dụ: name = input("Enter your name: ")

Trang 6

V HÀM VÀ CÁCH DÙNG HÀM: 1 Hàm về số học và logic:

• print(): Hàm này được sử dụng để in ra màn hình các đối tượng được truyền vào

print("Hello, world!")

• input(): Hàm này được sử dụng để nhận đầu vào từ người dùng thông qua bàn phím name = input("Nhập tên của bạn: ")

• sum(): Hàm này được sử dụng để tính tổng các phần tử trong một iterable (như danh

sách, tuple, hoặc dãy số) numbers = [1, 2, 3, 4, 5] total = sum(numbers)

• sorted(): Hàm này được sử dụng để sắp xếp một iterable và trả về một danh sách các

phần tử đã được sắp xếp

numbers = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5] sorted_numbers = sorted(numbers)

• max(): Hàm này được sử dụng để trả về phần tử lớn nhất trong một iterable hoặc

length = len(s) # length = 13

• lower(): Hàm này chuyển tất cả các ký tự trong chuỗi thành chữ thường

s = "Hello, World!"

lower_s = s.lower() # lower_s = "hello, world!"

• upper(): Hàm này chuyển tất cả các ký tự trong chuỗi thành chữ hoa

s = "Hello, World!"

upper_s = s.upper() # upper_s = "HELLO, WORLD!"

• strip(): Hàm này loại bỏ khoảng trắng ở đầu và cuối chuỗi

s = " Hello, World! "

stripped_s = s.strip() # stripped_s = "Hello, World!"

• split(): Hàm này tách chuỗi thành một danh sách các chuỗi con dựa trên một ký tự

phân tách

s = "apple,banana,orange"

fruits = s.split(",") # fruits = ["apple", "banana", "orange"]

• join(): Hàm này nối các phần tử của một iterable thành một chuỗi, sử dụng chuỗi gọi

phương thức như ký tự phân tách

fruits = ["apple", "banana", "orange"]

s = ",".join(fruits) # s = "apple,banana,orange"

• replace(): Hàm này thay thế tất cả các xuất hiện của một chuỗi con trong chuỗi bằng

một chuỗi khác

s = "I like programming in Python"

new_s = s.replace("Python", "JavaScript") # new_s = "I like programming in JavaScript"

Trang 7

3 Hàm tự định nghĩa: def ten_ham(tham_so): return gia_tri

− Hàm là một khối mã có thể được gọi và thực hiện một tác vụ cụ thể

− Hàm có thể nhận đầu vào (tham số) và trả về một giá trị (nếu cần) Ví dụ: def square(x): return x ** 2

• Hàm tìm giá trị lớn nhất:

def tim_gia_tri_lon_nhat(arr):

max_value = arr[0] for num in arr:

if num > max_value: max_value = num

for _ in range(n): result *= x return result

# Sử dụng hàm

base = 2 exponent = 3

power = tinh_luy_thua(base, exponent) print(f"{base} mũ {exponent} = {power}")

# Sử dụng hàm

number = 17

if nguyen_to(number):

print(f"{number} là số nguyên tố") else:

print(f"{number} không phải là số nguyên tố")

Trang 8

VI CHƯƠNG TRÌNH CON

Ví dụ 1: Viết một thủ tục tìm căn bậc 2 của N trong Python, bạn có thể sử dụng cú pháp

sau:

def tinh_can_bac_hai(N): can_bac_hai = N ** 0.5 return can_bac_hai

so = int(input("Nhập số nguyên: ")) ket_qua = tinh_can_bac_hai(so)

print("Căn bậc hai của", so, "là", ket_qua)

 Thủ tục có tên là tinh_can_bac_hai nhận một tham số N Thủ tục này tính căn bậc hai

của N bằng cách sử dụng toán tử ** với mũ là 0.5 thủ tục trả về kết quả căn bậc hai

Ví dụ 2: Viết chương trình nhập vào số nguyên n, liệt kê các ước là số nguyên tố Sử

dụng thủ tục tìm số nguyên tố def nguyen_to(n):

def liet_ke_uoc_nguyen_to(n):

uoc_nguyen_to = [i for i in range(1, n + 1) if n % i == 0 and nguyen_to(i)] return uoc_nguyen_to

# Nhập số nguyên n từ người dùng n = int(input("Nhập số nguyên n: ")) # Liệt kê các ước là số nguyên tố của n

uoc_nguyen_to = liet_ke_uoc_nguyen_to(n)

print(f"Các ước nguyên tố của {n} là: {uoc_nguyen_to}")

Trang 9

VII MỘT SỐ THUẬT TOÁN TRONG PYTHON: 1 Thuật toán Sắp xếp nổi bọt (Bubble Sort):

def bubble_sort(arr): n = len(arr) for i in range(n-1): for j in range(0, n-i-1): if arr[j] > arr[j+1]:

arr[j], arr[j+1] = arr[j+1], arr[j] arr = [64, 34, 25, 12, 22, 11, 90]

bubble_sort(arr)

print("Mảng đã được sắp xếp theo thứ tự tăng dần:") for i in range(len(arr)):

print(arr[i])

2 Thuật toán Tìm kiếm nhị phân (Binary Search):

def binary_search(arr, low, high, x): if high >= low:

mid = (high + low) // 2 if arr[mid] == x: return mid elif arr[mid] > x:

return binary_search(arr, low, mid - 1, x) else:

return binary_search(arr, mid + 1, high, x) else:

return -1

arr = [2, 3, 4, 10, 40] x = 10

result = binary_search(arr, 0, len(arr)-1, x) if result != -1:

print("Phần tử", x, "được tìm thấy tại vị trí", result) else:

print("Phần tử", x, "không có trong mảng")

3 Thuật toán Quicksort:

def quicksort(arr): if len(arr) <= 1: return arr

pivot = arr[len(arr) // 2]

left = [x for x in arr if x < pivot] middle = [x for x in arr if x == pivot] right = [x for x in arr if x > pivot]

return quicksort(left) + middle + quicksort(right) arr = [64, 34, 25, 12, 22, 11, 90]

sorted_arr = quicksort(arr)

print("Mảng đã được sắp xếp theo thứ tự tăng dần:") for i in range(len(sorted_arr)):

print(sorted_arr[i])

Trang 10

VIII NHẬP, XUẤT TỆP TRONG PYTHON

Trong Python, để nhập và xuất dữ liệu từ tệp, chúng ta có thể sử dụng các hàm như open(), read(), write(), và close()

Đầu tiên, chúng ta cần mở tệp bằng cách sử dụng hàm open() với các tham số như tên tệp và chế độ (ví dụ: "r" để đọc, "w" để ghi, "a" để ghi thêm)

with open("tep_vao.txt", "r") as f: f.read ("Doc noi dung tu tep vao")

Sau đó, chúng ta có thể sử dụng các phương thức như read() để đọc dữ liệu từ tệp, write() để ghi dữ liệu vào tệp, và close() để đóng tệp sau khi hoàn thành công việc

Để ghi dữ liệu vào tệp, chúng ta có thể sử dụng code sau: with open("tep_ra.txt", "w") as f: f.write("Noi dung can ghi ra tep")

Ví dụ 1 Nhập hai số nguyên từ tệp và xuất ra tệp ra số nào là số lớn nhất

with open('input.txt', 'r') as f: numbers = f.readlines() num1 = int(numbers[0]) num2 = int(numbers[1])

max_num = max(num1, num2) with open('output.txt', 'w') as f: f.write(str(max_num))

Ví dụ 2 Nhập một chuỗi từ tệp và xuất ra chuỗi đảo ngược, ghi vào tệp

with open('input.txt', 'r') as f: string = f.read().strip() reversed_string = string[::-1] with open('output.txt', 'w') as f: f.write(reversed_string)

Ví dụ 3 Nhập một mảng số nguyên từ tệp, sắp xếp lại mảng tăng dần

with open('input.txt', 'r') as f: numbers = f.readlines()

numbers = [int(x) for x in numbers] numbers.sort()

with open('output.txt', 'w') as f: for num in numbers:

f.write(str(num) + '\n')

IX BÀI TẬP VẬN DỤNG

SỬ DỤNG TOÁN TỬ

Bài 1 Viết một chương trình tính tổng của hai số nguyên

# Nhập hai số nguyên từ người dùng

so1 = int(input("Nhập số thứ nhất: ")) so2 = int(input("Nhập số thứ hai: "))

Trang 11

Bài 2 Viết một chương trình tính tổng của hai số thực

# Nhập hai số thực từ người dùng so1 = float(input("Nhập số thứ nhất: ")) so2 = float(input("Nhập số thứ hai: ")) # Tính tổng hai số

tong = so1 + so2 # In kết quả

print("Tổng của hai số là:", tong)

Bài 3 Viết một chương trình tính tổng của ba số nguyên

# Nhập ba số nguyên từ người dùng so1 = int(input("Nhập số thứ nhất: ")) so2 = int(input("Nhập số thứ hai: ")) so3 = int(input("Nhập số thứ ba: ")) # Tính tổng ba số

tong = so1 + so2 + so3 # In kết quả

print("Tổng của ba số là:", tong)

Bài 4 Viết một chương trình tính hiệu của hai số nguyên

# Nhập hai số nguyên từ người dùng so1 = int(input("Nhập số thứ nhất: ")) so2 = int(input("Nhập số thứ hai: ")) # Tính hiệu hai số

hieu = so1 - so2 # In kết quả

print("Hiệu của hai số là:", hieu)

Bài 5 Viết một chương trình tính tích của hai số nguyên

# Nhập hai số nguyên từ người dùng so1 = int(input("Nhập số thứ nhất: ")) so2 = int(input("Nhập số thứ hai: ")) # Tính tích hai số

tich = so1 * so2 # In kết quả

print("Tích của hai số là:", tich)

Bài 6 Viết một chương trình tính thương của hai số nguyên

# Nhập hai số nguyên từ người dùng so1 = int(input("Nhập số thứ nhất: ")) so2 = int(input("Nhập số thứ hai: ")) # Kiểm tra nếu số thứ hai bằng 0 if so2 == 0:

print("Không thể chia cho 0") else:

# Tính thương hai số thuong = so1 / so2 # In kết quả

print("Thương của hai số là:", thuong)

Bài 7 Viết một chương trình tính phần dư của hai số nguyên

# Nhập hai số nguyên từ người dùng

Trang 12

so1 = int(input("Nhập số thứ nhất: ")) so2 = int(input("Nhập số thứ hai: ")) # Kiểm tra nếu số thứ hai bằng 0 if so2 == 0:

print("Không thể chia cho 0") else:

# Tính phần dư hai số phan_du = so1 % so2 # In kết quả

print("Phần dư của hai số là:", phan_du)

Bài 8 Viết một chương trình tính lũy thừa của một số nguyên

# Nhập số nguyên từ người dùng so = int(input("Nhập số nguyên: ")) # Nhập số mũ từ người dùng

mu = int(input("Nhập số mũ: ")) # Tính lũy thừa

ket_qua = so ** mu # In kết quả

print("Kết quả lũy thừa là:", ket_qua)

Bài 9 Viết một chương trình tính căn bậc hai của một số thực

import math

# Nhập số thực từ người dùng so = float(input("Nhập số thực: ")) # Tính căn bậc hai

ket_qua = math.sqrt(so) # In kết quả

print("Căn bậc hai của số thực là:", ket_qua)

Bài 10 Viết một chương trình tính tổng của các phần tử trong một danh sách

# In kết quả

print("Tổng của các phần tử trong danh sách là:", tong)

Trang 13

BÀI TẬP SỬ DỤNG KIỂU DỮ LIỆU

Bài 1 Viết một chương trình để tính để kiểm tra xem một số nguyên có phải là số chẵn hay

không

# Nhập số nguyên từ người dùng so = int(input("Nhập số nguyên: ")) # Kiểm tra số chẵn

if so % 2 == 0:

print("Số", so, "là số chẵn") else:

print("Số", so, "không phải là số chẵn")

Bài 2 Viết một chương trình để tính để kiểm tra xem một số nguyên có phải là số nguyên tố

hay không

def kiem_tra_so_nguyen_to(n): if n < 2:

return False

for i in range(2, int(n**0.5) + 1): if n % i == 0:

return False return True

so_nguyen = int(input("Nhập một số nguyên: ")) if kiem_tra_so_nguyen_to(so_nguyen):

print(so_nguyen, "là số nguyên tố") else:

print(so_nguyen, "không là số nguyên tố")

Bài 3 Viết một chương trình tính tổng của các phần tử trong một danh sách số nguyên

def tinh_tong(danh_sach): tong = 0

for so in danh_sach: tong += so

return tong

danh_sach_so = [1, 2, 3, 4, 5] tong = tinh_tong(danh_sach_so)

print("Tổng của các phần tử trong danh sách là:", tong)

Bài 4 Viết một chương trình để tính để tìm giá trị lớn nhất trong một danh sách số nguyên

def tim_gia_tri_lon_nhat(danh_sach): gia_tri_lon_nhat = danh_sach[0] for so in danh_sach:

if so > gia_tri_lon_nhat: gia_tri_lon_nhat = so return gia_tri_lon_nhat danh_sach_so = [1, 2, 3, 4, 5]

gia_tri_lon_nhat = tim_gia_tri_lon_nhat(danh_sach_so) print("Giá trị lớn nhất trong danh sách là:", gia_tri_lon_nhat)

Bài 5 Viết một chương trình tính tổng các chữ số của một số nguyên

def tinh_tong_chu_so(so_nguyen): tong = 0

Ngày đăng: 01/06/2024, 17:53

w