Bài giảng Nhập môn Tư duy tính toán: Bài 6 - Trương Xuân Nam

23 33 0
Bài giảng Nhập môn Tư duy tính toán: Bài 6 - Trương Xuân Nam

Đ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

Bài giảng Nhập môn Tư duy tính toán: Bài 6 Ngoại lệ và xử lý file trong python cung cấp cho người học những kiến thức như: Ngoại lệ và xử lý ngoại lệ; Làm việc với tập tin văn bản; Bài tập. Mời các bạn cùng tham khảo!

NHẬP MƠN TƯ DUY TÍNH TỐN Bài 6: Ngoại lệ xử lý file python Nội dung Ngoại lệ xử lý ngoại lệ Làm việc với tập tin văn Bài tập TRƯƠNG XUÂN NAM Phần Ngoại lệ xử lý ngoại lệ TRƯƠNG XUÂN NAM Ngoại lệ gì? ▪ Ngoại lệ = lỗi, đúng, không hẳn ▪ Thường người ta chia lỗi thành nhóm Lỗi viết chương trình: hệ chương trình khơng chạy thông dịch (hoặc không dịch được, biên dịch) Lỗi chương trình chạy: hệ phải thực lại • Chẳng hạn nhập liệu khơng đúng, phải nhập lại Ngoại lệ: lỗi, xảy có bất thường khiến chức thực • Chẳng hạn ghi liệu file, file lại bị tiến trình khác xóa TRƯƠNG XN NAM Ngoại lệ gì? ▪ Ranh giới ngoại lệ lỗi mong manh, chí khó phân biệt nhiều tình ▪ Cách chia lỗi thành nhóm có khuynh hướng cho mơi trường thực thi chương trình thân thiện hồn hảo ▪ Python có xu hướng chia lỗi thành loại ▪ Syntax error: viết sai cú pháp, khiến chương trình thơng dịch khơng dịch ▪ Exception: xảy bất thường không thiết kế • Như xử lý exception khiến chương trình ổn định hoạt động tốt tình TRƯƠNG XN NAM Ngoại lệ gì? ▪ Ví dụ syntax error: >>> while True print('Hello world') File "", line while True print('Hello world') ^ SyntaxError: invalid syntax ▪ Ví dụ exception: >>> 10 * (1/0) Traceback (most recent call last): File "", line 1, in ZeroDivisionError: division by zero ▪ Có vẻ syntax error exception!!! TRƯƠNG XUÂN NAM “xử lý” ngoại lệ Vòng lặp nhập X người dùng nhập vào giá trị số while True: try: x = int(input("Nhập số X: ")) break Khối nhập X (có thể nhập lỗi) except ValueError: print("Lỗi, nhập lại.") Xử lý lỗi xảy print("X =", x) TRƯƠNG XUÂN NAM Cú pháp try-except-else-finally ▪ Cú pháp: try: except: else: finally: ▪ Công việc khối: ▪ Khối “try”: đoạn mã có khả gây lỗi, lỗi xảy ra, khối bị dừng dòng gây lỗi ▪ Khối “except”: đoạn mã xử lý lỗi, thực có lỗi xảy ▪ Khối “else”: xuất sau khối except cuối cùng, đoạn mã thực khơng có except thực (đoạn try khơng có lỗi) ▪ Khối “finally”: cịn gọi khối clean-up, ln thực dù có xảy lỗi hay không TRƯƠNG XUÂN NAM Cú pháp try-except-finally ▪ Chú ý: ▪ Khối try có khối nhất, phải viết ▪ Khối finally có hay khơng, có khối phải viết cuối ▪ Khối except khơng viết, có khối, nhiều khối except (để xử lý nhiều tình lỗi khác nhau) ▪ Một khối except xử lý loại lỗi, nhiều loại lỗi tất loại lỗi ▪ Nếu không xử lý triệt để lỗi “ném” trả lại lỗi lệnh “raise” ▪ Có thể phát sinh ngoại lệ lệnh “raise ” TRƯƠNG XUÂN NAM Cú pháp try-except-finally except (NameError, TypeError): # xử lý loại lỗi print("Name or Type error") except IOError as e: # lấy đối tượng lỗi, đặt tên e print(e) raise # trả lại lỗi except ValueError: # xử lý lỗi Value print("Value error") except: # xử lý tất lỗi lại print("An error occurred") raise NameError("Ko bit") else: # tạo lỗi “Ko bit” # thực khơng có lỗi print("OK") TRƯƠNG XN NAM 10 Một số loại exception thường gặp Exception Miêu tả Exception Lớp sở (base class) tất ngoại lệ StopIteration Được tạo phương thức next() iterator không trỏ tới đối tượng StandardError Lớp sở tất exception có sẵn ngoại trừ StopIteration SystemExit ArithmeticError Lớp sở tất lỗi xảy cho phép tính số học OverflowError Được tạo phép tính vượt giới hạn tối đa cho kiểu số FloatingPointError Được tạo phép tính số thực thất bại ZeroDivisonError Được tạo thực phép chia cho số với tất kiểu số AssertionError Được tạo trường hợp lệnh assert thất bại TRƯƠNG XUÂN NAM 11 Một số loại exception thường gặp Exception Miêu tả AttributeError Được tạo trường hợp tham chiếu gán thuộc tính thất bại EOFError Được tạo khơng có input từ hàm raw_input() hàm input() tới EOF (viết tắt end of file) ImportError Được tạo lệnh import thất bại KeyboardInterrupt Được tạo người dùng ngắt việc thực thi chương trình, thường nhấn Ctrl+c LookupError Lớp sở cho tất lỗi truy cứu IndexError Được tạo mục không tìm thấy dãy (sequence) KeyError Được tạo key cho khơng tìm thấy Dictionary NameError Được tạo định danh khơng tìm thấy local global namespace TRƯƠNG XUÂN NAM 12 Một số loại exception thường gặp Exception Miêu tả UnboundLocalError Được tạo cố gắng truy cập biến cục từ hàm phương thức mà giá trị gán cho EnvironmentError Lớp sở cho tất ngoại lệ mà xuất ngồi mơi trường Python IOError Được tạo hoạt động i/o thất bại, chẳng hạn lệnh print hàm open() cố gắng mở file không tồn OSError Được lỗi liên quan tới hệ điều hành SyntaxError Được tạo có lỗi liên quan tới cú pháp IndentationError Được tạo độ thụt dịng code khơng xác định hợp lý SystemError Được tạo trình thơng dịch tìm thấy vấn đề nội tại, lỗi bắt gặp trình thơng dịch khơng TRƯƠNG XN NAM 13 Một số loại exception thường gặp Exception Miêu tả SystemExit Được tạo trình thơng dịch sử dụng hàm sys.exit() Nếu không xử lý code, làm cho trình thơng dịch TypeError Được tạo hoạt động hàm sử dụng kiểu liệu không hợp lệ ValueError Được tạo hàm xây dựng sẵn có kiểu tham số hợp lệ giá trị xác định cho tham số khơng hợp lệ RuntimeError Được tạo lỗi tạo không loại NotImplementedError Được tạo phương thức abstract, mà cần triển khai lớp kế thừa, không triển khai thực TRƯƠNG XUÂN NAM 14 Phần Làm việc với tập tin văn TRƯƠNG XUÂN NAM 15 Làm việc với tập tin ▪ Làm việc với tập tin python gồm bước: Mở file Đọc/ghi/xử lý liệu file Đóng file ▪ Các bước phát sinh ngoại lệ IOError ▪ Thay đặt toàn bước khối try, ta mở file với phát biểu with đây: with open("myfile.txt") as f: ▪ Ưu điểm: file ln đóng, dù có lỗi hay khơng TRƯƠNG XN NAM 16 Mở file đóng file ▪ Mở file: f = open(filename, mode) ▪ Các mode (chế độ) file hay sử dụng: ▪ ▪ ▪ ▪ ▪ ▪ ‘r’: đọc ‘w’: ghi ‘a’: ghi vào cuối file ‘r+’: đọc ghi ‘t’: mở file văn (mặc định) ‘b’: mở file nhị phân ▪ Đóng file: f.close() ▪ File khơng sử dụng nên đóng TRƯƠNG XN NAM 17 Đọc file ▪ Có hàm đọc file bản: ▪ read(x): đọc x byte tiếp theo, khơng viết x đọc đến cuối file ▪ readline(x): đọc dòng từ file, tối đa x byte, không viết x đọc tới gặp kí tự hết dịng hết file ▪ readlines(x): sử dụng readline đọc dòng hết file trả danh sách string, viết x đọc tối đa x byte TRƯƠNG XUÂN NAM 18 Đọc file, ghi file ▪ Nếu muốn duyệt hết file từ đầu đến cuối theo dịng sử dụng đoạn mã sau hiệu with open('workfile') as f: for line in f: print(line, end='') ▪ Ghi liệu file: ▪ write(x): ghi x file, trả số byte ghi ▪ writelines(x): ghi toàn nội dung x theo dòng, x list of string TRƯƠNG XUÂN NAM 19 Một số hàm khác file ▪ flush(): ép đẩy liệu nhớ tạm file ▪ tell(): trả vị trí trỏ file ▪ seek(n): dịch trỏ file đến vị trí byte thứ n ▪ Hàm có thêm tham số thứ 2, cho phép diễn giải cách hiểu tham số n ▪ Nếu không viết, =0: vị trí n tính từ đầu file ▪ =1: vị trí n tính từ vị trí ▪ =2: vị trí n tính từ cuối file ▪ truncate(n): cắt file vị trí byte thứ n, vị trí (nếu khơng viết giá trị n) TRƯƠNG XUÂN NAM 20 Phần Bài tập TRƯƠNG XUÂN NAM 21 Bài tập Viết chương trình nhập số ngun a b, sau tính in giá trị phân số a/b Chú ý xử lý ngoại lệ tình đây: ▪ Người dùng nhập a b số nguyên ▪ Người dùng nhập b = 2.Viết chương trình yêu cầu người dùng nhập a, b c độ dài cạnh tam giác Xử lý ngoại lệ tình sau: ▪ Người dùng nhập a, b c kiểu số ▪ Người dùng nhập giá trị số âm cho a, b c ▪ Người dùng nhập a, b, c dương cạnh tam giác TRƯƠNG XUÂN NAM 22 Bài tập 3.Đọc file in hình dịng đầu tiên, file khơng đủ dịng in tồn nội dung file 4.Đọc file in hình dịng cuối cùng, file khơng đủ dịng in tồn nội dung file 5.Đọc file, tìm in nội dung dịng dài file 6.Đọc file, tìm in từ dài file 7.Đọc file, thống kê in tất chữ có file số lần xuất chữ 8.Đọc file, thống kê tần xuất xuất tất từ file, in theo thứ tự giảm dần số lần xuất TRƯƠNG XUÂN NAM 23 ... error exception!!! TRƯƠNG XUÂN NAM “xử lý” ngoại lệ Vòng lặp nhập X người dùng nhập vào giá trị số while True: try: x = int(input( "Nhập số X: ")) break Khối nhập X (có thể nhập lỗi) except ValueError:... lệ lệnh “raise ” TRƯƠNG XUÂN NAM Cú pháp try-except-finally except (NameError, TypeError): # xử lý loại lỗi print("Name or Type error") except IOError as e: # lấy đối tư? ??ng lỗi, đặt tên e... n tính từ đầu file ▪ =1: vị trí n tính từ vị trí ▪ =2: vị trí n tính từ cuối file ▪ truncate(n): cắt file vị trí byte thứ n, vị trí (nếu khơng viết giá trị n) TRƯƠNG XUÂN NAM 20 Phần Bài tập TRƯƠNG

Ngày đăng: 09/08/2021, 18:33

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan