Python THPT

Python THPT

Comments

Giúp e bài 17 vs ạ
Chia sẻ thầy cô link lập trình Python trực tuyến không cần cài đặt phần mềm máy tính, thuận tiện giảng dạy
Khi mở trang web ra sẽ có code mẫu Python... Thầy cô xóa code mẫu, sau đó viết code và chạy chương trình..

Cùng nhau học Python

Operating as usual

22/11/2021

1. Lập mảng đường đi của Baoma để biết thời gian Baoma đi đường đó tại thời gian nào và kết thúc lúc nào
2. Dijsktra, không xét điểm tới của Ben nếu thời gian Ben tới nhỏ hơn thời gian Baoma đã tới, nghĩa là dù có là MIN ta cũng bỏ qua, lấy Min là nút nhỏ thứ 2
3. Bổ sung: nếu cho phép Ben dừng lại chờ Baoma đi qua thì ta tính nút đó là thời gian của Baoma, nghĩa là ta vẫn xét thời gian đó MIN nếu nó là nhỏ nhất

04/05/2021

Mảng list 2 chiều
Có rất nhiều cách tạo mảng 2 chiều trong Python. Ta xét thử thế này:
1. A = [[0]*100]*100
2. A = list([0]*100 for i in range(100))
Cách 1 rất nhanh và gọn, cách 2 luộm thuộm hơn. Mình đã dùng cách 1 khi code và nhận ra nó chỉ tạo ra 1 list 1 chiều với các phần tử là 1 list 1 chiều. Đơn giản là Python không có khái niệm mảng 2 chiều như Pascal hay C++. Cách 2 cũng vậy nhưng nó append 100 lần, mỗi lần là 1 list 1 chiều và ta đã thực sự có list 2 chiều như C++ hay Pascal rồi :-)

22/04/2021

Đánh dấu bằng phương pháp bitset
Ta giải thử bài toán sau: Cho mảng A gồm 1.000.000 phần tử nguyên dương trong phạm vi 0->10^9, hãy liệt kê các phần tử có số lần xuất hiện lẻ. Ví dụ 1 2 1 2 1 3 thì kết quả 1,3. Ta cần vài kiến thức nhỏ như sau:
Phép toán bit (bitwise):
AND:
1 & 1 = 1
1 & 0 = 0
0 & 0 = 0
OR:
1 | 1 = 1
1 | 0 = 1
0 | 0 = 0
XOR:
1 ^ 1 = 0
1 ^ 0 = 1
0 ^ 0 = 0
Không như các ngôn ngữ có kiểu dữ liệu giới hạn độ dài bit như Pascal hay C++, Python không giới hạn độ dài bít nên ta cân đối giữa giới hạn độ dài mảng đánh dấu và độ dài bit của phần tử mảng. Mình test thử vài bộ số để mảng đánh dấu hoạt động nhanh nhất và nhận thấy độ dài bit khoảng 1000 là hoạt động tốt nhất
Dưới đây là code

20/04/2021

Đếm phân phối trong Python
Đếm phân phối là phương pháp giải nhanh bài toán như sau:
Cho mảng A, N phần tử nguyên trong phạm vi [s..e] và xuất ra số lần xuất hiện các số trong A, các số cùng giá trị chỉ xuất 1 lần
Giải: trong Pascal ta dùng mảng đếm P có kích thước s->e và duyệt i để tăng P[A[i]]: inc(P[A[i]]) nhưng nếu phạm vi quá lớn thì sao...??? Pascal sẽ phải dùng kỹ thuật HASH hay đơn giản là dùng 1 HEAP để lưu trữ chỉ mục. Với Python, cực kỳ đơn giản là sử dụng DICTIONARY
Ta giải như hình dưới

18/04/2021

Bài tập ví dụ 1
Viết chương trình giải phương trình bậc 2
1. Hàm input(): nhận giá trị biến từ console, giống cin của C++ hay read của Pascal nhưng Python đồng thời đưa ra dòng text ở console (như vừa write vừa read của Pascal, hay cout, cin của C++)
2. input trả về kiểu xâu nên ta ép kiểu thành số thực bằng hàm float
3. Có thể dùng map để tạo 1 list và gán a,b,c. input là string, ta tách input bằng dấu cách thành 1 list và hàm ép kiểu float cho a,b,c
4. Giải bình thường như những gì ta đã dạy trên lớp, nếu-nếu-thì-thì

17/04/2021

Cấu trúc rẽ nhánh - lặp và chương trình đầu tiên
1. Cấu trúc rẽ nhánh:
cú pháp:
if :

else:

2. Cấu trúc lặp For:
cú pháp:
for in :

3. Cấu trúc lặp While:
cú pháp:
while :

*Ngôn ngữ Python đóng khối các lệnh cùng mức bằng tab, các lệnh cùng trong một khối lệnh sẽ cùng tab với nhau. Nếu sử dụng IDE PyCharm bạn không phải lo lắng điều này, nó sẽ tự căn lề tab cho các bạn
Dưới hình là chương trình xuất các số nguyên tố từ 2 tới 100. Mình có sử dụng vài hàm và cấu trúc sau:
1. def: là chương trình con, tương tự function của Pascal
2. lambda là hàm gọi nhanh
3. list: tạo 1 mảng không chỉ mục (list)
4. filter: lọc thường trong 1 list thỏa mãn điều kiện gì đó
5. range: tạo 1 list trong phạm vi 2->100 và các bước nhảy mặc đinh là 1. range rất hay được dùng khi thực hiện lệnh for
*Khi soạn code các bạn sẽ thấy IDE sẽ tự căn lề cho mình, chỉ khi nào hết khối lệnh thì ta bấm phím backspace nó sẽ tự lùi tab

16/04/2021

Dictionary
Mình bắt đầu chú ý tới Python khi đọc về kiểu dữ liệu này, đây chính là kiểu JSON trong các ngôn ngữ PHP-JS mà mình có thời gian gắn bó. Có thể hiểu nó là kiểu dữ liệu hướng đối tượng, mô tả rất người
Dưới đây là ví dụ minh họa. Nó hơi khác với PHP-JS là vẫn truy cập như 1 mảng chứ không đặt dấu chấm của OPP

16/04/2021

Xử lý kiểu Tệp
Các cuộc thi code thường sẽ cho tệp input và output và chúng ta đọc dữ liệu từ tệp input, xử lý và đưa kết quả ra tệp output. Vậy Python phải làm thế nào
1. Python đọc file text sẽ ra kiểu mảng các phần tử xâu
2. Xử lý các xâu này thành mảng hay dữ liệu phù hợp bài toán
Trong ví dụ dưới đây mình gọi tệp dulieu.inp và xử lý dòng đầu tiên thành các số nguyên cho dù có xen lẫn nhiều phần tử xâu. Các bạn có thể lược đi vài dòng lệnh để có ngay kết quả, ví dụ không cần lọc các phần tử rỗng chẳng hạn, coi đây là bài tập nhé

16/04/2021

Mảng - Mảng không chỉ mục
Mảng của Python có nhiều loại, trong phần cơ bản mình trình bày dạng mảng quen thuộc vẫn gặp trong chương trinh THPT
1. Mảng thường tạo sẵn không giới hạn độ dài, giống Vector của C++. Bạn có thể khởi tạo mảng rỗng: arr=[] hoặc cho trước vài giá trị như ví dụ trong hình
2. Mảng trong Python có rất nhiều phương thức làm việc, mình trình bày vài ví dụ như hình
3. Python cung cấp sẵn việc tìm kiếm nhị phân và sắp xếp (không rõ sắp xếp gì nhưng rất nhanh, có lẽ là MergeSort)
4. Trong phần nâng cao mình sẽ trình bày vài loại mảng khác, mảng của Python là một điểm mạnh, ứng dụng để giải các bài toán mảng mà NNLT khác khá vất vả thì Python giải quyết nhẹ nhàng

15/04/2021

Kiểu Xâu - STRING
Kiểu xâu ít dùng trong các cuộc thi nhưng thực tế dữ liệu của máy tính hầu hết là kiểu xâu. Nếu các bạn từng học PHP thì nhận thấy có đến khoảng 200 function làm việc với xâu. Kiểu xâu của Python sử dụng bảng mã Unicode 2byte :-) viết tiếng Việt thoải mái nha các bạn. Mình vắn tắt kiểu xâu của Python, đủ dùng cho các bài tiếp theo
Các bạn có thể quan sát kết quả như hình và mình sẽ post tiếp trong comment vài vấn đề cần xử lý của xâu

15/04/2021

Danh mục bài viết:
1. Cài đặt Python và PyCharm. Thầy cô chưa thể cài được có thể nhắn tin mình giúp
https://www.facebook.com/104587358422334/posts/104831485064588/
2. Tạo project mới
https://www.facebook.com/104587358422334/posts/105417828339287/
3. Các kiểu dữ liệu số học https://www.facebook.com/104587358422334/posts/106325791581824/
4. Kiểu xâu
https://www.facebook.com/104587358422334/posts/106508694896867/
5. Kiểu mảng
https://www.facebook.com/104587358422334/posts/106670024880734/
6. Kiểu tệp
https://m.facebook.com/story.php?story_fbid=106798131534590&id=104587358422334
7. Cấu trúc rẽ nhánh - lặp và cách viết một chương trình
https://www.facebook.com/104587358422334/posts/107061118174958/

15/04/2021

Kiểu dữ liệu số học trong Python:
Python rất đơn giản là chỉ có 2 kiểu số học là số nguyên và số thực (có hỗ trợ phần số phức nhưng nói thực là mình quên mất cách tính toán nó rồi và từ ngày hết cấp 3 mình chưa từng gặp lại nó...!!!)
Python không bắt khai báo biến và kiểu dữ liệu, bạn sử dụng bất kỳ lúc nào khi cần mà chỉ cần gọi tên và gán giá trị ban đầu là được....
1. Số nguyên: Giống như các ngôn ngữ khác nhưng Python hỗ trợ BigNum.... Sướng thiệt nè và cả các hệ cơ số 8 và 16
2. Số thực: cái này khá rườm rà nha, Python giới hạn 16 số sau dấu chấm của số thực nhưng nó lại chỉ gần đúng. Điều này có thể giải thích bới giới hạn chính xác của máy tính không như toán học được. Cách giải quyết như mình tham khảo trên mạng thì người ta dùng Decimal để tăng độ chính xác rồi quay về kiểu float nó sẽ thành phép tính đúng. Điều này thực tế ít dùng nên mình chỉ trình bày tới đây
-------------------
Trong hình là code mình test thử kiểu số học, các bạn thấy như sau:
1. Python cho phép dùng BigNum
2. Giới hạn số thực ngắn 16 số sau phẩy, sau khi gọi Decimal nó đã tăng lên rất nhiều (cụ thể bao nhiêu thì mình chưa đếm)
3. Giống như C++, muốn thực hiện các hàm toán học thì import math và ta có thể sử dụng các hàm toán học. Python cực nhiều nhé các bạn
----Có gì thắc mắc hay bổ sung các bạn comment nhé--------

Photos from Python THPT's post 14/04/2021

Tạo mới Project
1. File/New Project - Chọn tên cho project và lưu trên máy tính (hình 1)
2. Project mới được tạo, ở đây mình chọn tên project là Basic. Trong project mới có sẵn file main.py (hình 2)
3. Để luyện viết code, theo kinh nghiệm hiện thời của mình thì ta tam thời chỉ dùng 1 file main.py này và tạo các file *.py khác được gọi từ main.py bằng lệnh import
4. Đây là 1 ví dụ mình viết thử, chương trình xác định 1 số có phải số nguyên tố hay không. Mình viết ở tệp songuyento.py và gọi nó ở tệp main.py. Với cách tạo project thế này theo mình là rất thích hợp với việc luyện viết code và tập làm quen với project lớn hơn sau này. Để tạo tệp mới bạn làm theo như hình 3

13/04/2021

Cài đặt Python và PyCharm
Giới thiệu:
Ngôn Ngữ Python: là một ngôn ngữ lập trình bậc cao cho các mục đích lập trình đa năng, do Guido van Rossum tạo ra và lần đầu ra mắt vào năm 1991. Python được thiết kế với ưu điểm mạnh là dễ đọc, dễ học và dễ nhớ. Python là ngôn ngữ có hình thức rất sáng sủa, cấu trúc rõ ràng, thuận tiện cho người mới học lập trình. Cấu trúc của Python còn cho phép người sử dụng viết mã lệnh với số lần gõ phím tối thiểu. Vào tháng 7 năm 2018, Van Rossum đã từ chức Leader trong cộng đồng ngôn ngữ Python sau 30 năm lãnh đạo.

Python hoàn toàn tạo kiểu động và dùng cơ chế cấp phát bộ nhớ tự động; do vậy nó tương tự như Perl, Ruby, Scheme, Smalltalk, và Tcl. Python được phát triển trong một dự án mã mở, do tổ chức phi lợi nhuận Python Software Foundation quản lý.

Ban đầu, Python được phát triển để chạy trên nền Unix. Nhưng rồi theo thời gian, Python dần mở rộng sang mọi hệ điều hành từ MS-DOS đến Mac OS, OS/2, Windows, Linux và các hệ điều hành khác thuộc họ Unix. Mặc dù sự phát triển của Python có sự đóng góp của rất nhiều cá nhân, nhưng Guido van Rossum hiện nay vẫn là tác giả chủ yếu của Python. Ông giữ vai trò chủ chốt trong việc quyết định hướng phát triển của Python.
----Đây là đoạn copy trên Wikipedia------------
Ta có mô hình quen thuộc của Ngôn Ngữ Lập Trình trong THPT như sau: Chương trình nguồn --->Trình biên dịch ----> Chương trình đích. Như vậy ta có thể hiểu tạm như sau:
1. Chương trình nguồn là văn bản text, có thể soạn thảo bằng bất kỳ công cụ nào. Tuy nhiên hầu hết mọi người dùng 1 trình soạn thảo nào đó hỗ trợ việc viết mã nguồn được tốt hơn, mình gọi là IDE, IDE viết tắt của cụm từ Integrated Development Environment là phần mềm cung cấp cho các lập trình viên một môi trường tích hợp bao gồm nhiều công cụ khác nhau như chương trình viết mã lệnh hay code editor. Trong bài này thì mình chọn PyCharm làm IDE vì nó khá thân thiện
2. Python là trình biên dịch giúp chuyển từ mã nguồn được viết bằng PyCharm về ngôn ngữ máy (BitCode). Sau khi chuyển về BitCode PyCharm cũng có thể thực hiện chương trình để kiểm tra
Với các thầy cô đã quen thuộc với việc cài đặt Pascal hay C++ thì việc cài đặt rất quen thuộc. Mình sẽ trình bày cách cài đặt 2 chương trình này trong comment

Want your school to be the top-listed School/college?

Website