Tải bản đầy đủ (.pptx) (32 trang)

Giáo án powerpoint python 11_Bài 14, 15: Kiểu dữ liệu tệp

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.32 MB, 32 trang )

Bài 14, 15
KIỂU DỮ LIỆU TỆP
THAO TÁC VỚI TỆP
(1 tiết)


I. Vai trò của kiểu tệp

Tất cả các dữ liệu thuộc các kiểu dữ liệu đã học đều
được lưu trữ ở bộ nhớ RAM và do đó dữ liệu sẽ bị mất
khi tắt máy
=> Với bài tốn có khối lượng dữ liệu lớn, có u cầu
lưu trữ để xử lí nhiều lần, cần có kiểu tệp


Đặc điểm của kiểu tệp:
• Dữ liệu được lưu trữ lâu dài ở bộ nhớ ngồi và khơng bị
mất khi tắt nguồn điện
• Lượng dữ liệu lưu trữ trên tệp có thể rất lớn và chỉ phụ
thuộc vào dung lượng đĩa


2) Phân loại tệp

Trong Python, file có 2 loại:
• Text File
 Được cấu trúc như một dãy các dòng, mỗi dịng bao
gồm một dãy các kí tự và một dịng tối thiểu là một kí tự
dù cho dịng đó là dòng trống.
 Các dòng trong text file được ngăn cách bởi một kí tự
newline và mặc định trong Python chính là kí tự escape


sequence newline \n.


• Binary File
 Các file này chỉ có thể được xử lí bởi một ứng dụng
biết và có thể hiểu được cấu trúc của file này.
 Và chúng ta ở đây với mức độ cơ bản chỉ xử lí text
file.


II) Thao tác với tệp

1) Mở tệp để đọc
Cú pháp:
<biến tệp> = open(tên_tệp, mode=’r’)
2) Mở tệp để ghi
Cú pháp:
<biến tệp> = open(tên_tệp, mode=’w’)
Ví dụ:
f = open(‘vd.inp’, ‘r’)
g = open(‘vd.out’, ‘w’)


Một số mode cơ bản liên quan đến text file
MODE
r
r+
w
w+
a

a+

USAGE
Mở để đọc. Đây là mode mặc định
Mở để đọc và ghi
Mở để ghi
Mở để ghi và đọc
Mở để ghi
Mở để ghi và đọc


3) Đọc và ghi tệp
a) Phương thức readline
Cú pháp:

<File>.readline()

Công dụng:
 Chỉ đọc một dịng có nghĩa là đọc tới khi nào gặp newline
hoặc hết file thì ngừng.
 Con trỏ file cũng sẽ đi từ dòng này qua dòng khác.
 Kết quả đọc được trả về dưới dạng một chuỗi.
 Nếu khơng đọc được gì, phương thức sẽ trả về một chuỗi có
độ dài bằng 0


Ví dụ

f = open(‘vd.inp’, ‘r’)
s = f.readline()

Chú ý: muốn đọc 1 số nguyên làm như sau
s = int(f.readline())


b) Phương thức write
Cú pháp:
<File>.write(text)
Công dụng: Phương thức này sẽ trả về số kí tự mà chúng ta ghi vào.
Ví dụ:
g = open(‘vd.out’, ‘w’)
g.write(s)
Lưu ý: Mỗi lần sử dụng write. Con trỏ file sẽ được đặt ngay sau kí tự
cuối cùng được ghi
• Để ghi dữ liệu trên nhiều dịng, ta có thể xuống dịng bằng câu lệnh
• <File>.write(t”\n”)


c) Đóng tệp

• Cú pháp:
<File>.close()

• Ví dụ:
f.close()
g.close()


Ví dụ

Đọc từ tệp text vd.inp một mảng a gồm các số nguyên dương.

Tính tổng các phần tử trong mảng và ghi kết quả ra tệp văn bản
vd.out

Hướng dẫn:
- Đọc chuỗi trong tệp ra
- Tách chuỗi thành các số nguyên
- Tính tổng
- Ghi vào tệp



BÀI TẬP

Bài 1: Cho 3 số nguyên dương p, q, r
Yêu cầu: Kiểm tra 3 số này, theo thứ tự có tạo thành một cấp số
nhân hay khơng. Nếu có thì in ra “YES”, ngược lại thì in ra “NO”
Dữ liệu vào: Từ file văn bản MULSEQ.INP:
- Gồm một dòng chứa 3 số nguyên dương p, q, r (p, q ≤ 10 9). Các
số viết cách nhau một dấu cách
Dữ liệu ra: Ghi ra file văn bản MULSEQ.OUT
- Gồm 1 dòng ghi YES hoặc NO tương ứng với kết quả của bài
tốn dãy số là cấp số nhân hay khơng là cấp số nhân



Với u cầu của đề, hãy hồn thành chương trình sau


Cách 1



Cách 2


Bài 2

Cho một số nguyên dương n
Yêu cầu: Phân tích n thành tích các thừa số nguyên tố. In ra
tích các thừa số nguyên tố theo thứ tự từ bé đến lớn
Dữ liệu vào: Từ file văn bản FPRIME.INP:
- Gồm một số nguyên dương n (2 ≤ n ≤ 106).
Dữ liệu ra: Ghi ra file văn bản FPRIME.OUT
- Gồm 1 dòng ghi ra số theo yêu cầu của đề bài, mỗi số
cách nhau một dấu cách




Hoặc: viết như này sẽ thuận hơn


Bài 3

Cho một dãy số nguyên dương có n phần tử
Yêu cầu: Tìm ước chung lớn nhất của dãy số đó
Dữ liệu vào: Từ file văn bản GCDSEQ.INP gồm:
- Dịng 1: gồm một số nguyên dương n (n ≤ 1000).
- Dòng 2: gồm n số nguyên dương là các phần tử của dãy số. (Các
số có giá trị khơng vượt quá 106 và các số cách nhau 1 dấu cách)
Dữ liệu ra: Ghi ra file văn bản GCDSEQ.OUT

- Gồm 1 số nguyên duy nhất là ước chung lớn nhất của dãy số




×