Tìm kiếm Blog này

Thứ Tư, 21 tháng 12, 2016

Think Python


TreeofLifesm1


Day 1


Vô tình được một bạn trên group pythonvietnam chia sẽ đường link của tài liệu Think Python: How to think like a compter scientist Allen B. Downey. Thấy cũng rất hay, đang đọc tài liệu python và làm các bài test trên hackerrank và thehackerearth nhưng có những bài thấy khó hiểu (có thể do khả năng đọc hiểu tiếng anh chuyên ngành còn gà mờ quá) nên cùng một yêu cầu input và output vẫn đúng như yêu cầu, nhưng câu lệnh chương trình thì bài toán trên hệ thống không chấp nhận...... :Surrender: 


Vô tình được tài liệu này, bản dịch tiếng Việt thấy dễ đọc, dễ vào nên vừa đọc vừa viết lại những nội dung sường để sau này đọc lại cho đỡ bị "trôi".:


Thôi không nói dài dòng nữa, viết vài phần rồi ngủ thôi... 21h45p ngày 20/12/2016 - Thủ Đức - Sài Gòn không em




Một trong những thứ mà tôi có nhưng ko cần phải mất tiền mua đó là ngôn ngữ, akk tôi chỉ giỏi nhất ngôn ngữ là tiếng Việt thôi, tiếng Anh chém miếng nào ra miếng đó. Ơ nhưng có liên quan gì đến ngôn ngữ lập trình Python ??. Ta có 2 ngôn ngữ:




  1. Ngôn ngữ tự nhiên: đó là ngôn ngữ nói của con người, nó tùy thuộc vào lịch sử, vị trí địa lí cũng như dân cư nơi sử dụng ngôn ngữ đó mà có những quy luật "ngữ pháp - ngữ âm khác nhau".

  2. Ngôn ngữ hình thức: là loại ngôn ngữ mà con người tạo ra dựa trên những quy định, định dạng, quy luật, ký hiệu riêng - Nó có tính:

    1. Chính xác: những câu lệnh "câu từ mã lệnh - theo cách gọi của tôi" chỉ thực hiện đúng chức năng và cho ra kết quả đúng nhất vs từng câu lệnh được viết, và chúng chỉ được thực thi khi chương trình - "thông dịch {1}" "chạy tới" câu lệnh đó.

    2. Gọn gàng: do ngôn ngữ tự nhiên có tính ẩn dụ, ngữ cảnh, đa nghĩa nên để hiểu chính xác thì cần thêm vào nhiều thông tin ==> làm "phình to" độ lớn - Ngôn ngữ hình thức thì khác, chúng có nội dung gọn gàng tối thiểu. VD a = 1 khác với a = "1".

    3. Văn phong: ngôn ngữ tự nhiên thường ẩn dụ, nhiều thành ngữ, ngữ cảnh nên tùy theo hoàng cảnh mà có cách hiểu một vấn đề khác nhau- Ngược lại, ngôn ngữ hình thức luôn luôn có nghĩa xác với những gì được viết (viết như thế nào thì cho kết quả như thế đó : "Đồng xu rơi" nghĩa là đồng xu đang bắt đầu rơi, rơi, và dừng lại).





Máy tính thì :


  • Chính xác : nhận 2 giá trị true | false hoặc 0 vs 1

  • Nhanh : tốc độ tính toán của máy tính nhanh hơn con ng rất nhiều.



Máy tính không:


  • Thể hiểu được ẩn dụ, không suy luận xã hội như con người.

  • Tự hiểu vấn đề nếu không đưa ra các lệnh và dữ liệu có trước.



Nên chúng ta phải:


  • Làm cầu nối để chuyển yêu cầu, dữ liệu, điều kiện đến may tính.

  • Thiết lập các vấn đề trên thành các dòng lệnh mà máy tính hiểu được với cú pháp đúng.



Xem thêm một số Thuật ngữ tại đây



Day 2 : 21/12/2016:

Uhmmm.... chương trình hay nói cách khác, ngôn ngữ python sẽ chạy từng câu lệnh  - từ trên xuống dưới - từ trái sang phải 

 ====>> vì vậy phải khai báo biến rồi mới thực thi vs biến | 

====>> phải khai báo hàm (def ...) rồi ms gọi hàm.

 ===>>> khi code để khai báo hàm thì khi chạy chương trình, trình thông dịch chỉ chạy câu lệnh khai báo hàm chứ chưa thực thi hàm, nghĩa là hàm chưa nhận kết quả.

                     ===>>> hàm chỉ thực thi khi trình thông dịch chạy đến code gọi hàm, và từ đó trình thông dịch sẽ chạy từng lệnh bên trong hàm.

                               ===>>> Nếu gặp một hàm trong hàm thì tiếp trình thông dịch sẽ nhảy vào "jump" chạy lệnh bên trong hàm, khi kết thúc sẽ nhảy ra vị trí ban đầu lúc chưa "jump" vào

Ví dụ về một def..

VD 1

def exam(a):

    a += 1

   return a

gọi hàm:

exam(10)   | với a(tham số) <==> 10

kết quả:

11

VD2:

def exam2(b,c):                                       def exam2(b,c):

a = b + c                                             <===>          a = b + c

print(lyosen1(a))  {lyosen1(a):                           lyosen(a)     ===> với lyosen(a):

                                         a += 1                                                                          a += 1

                                         return a                                                                     print(a)

gọi hàm:

exam2(1,2)           | ứng với a , b = 1, 2

kết quả:

4                             |  a = 1 + 2

|  lyosen(3) = 4




Day 3 : 22/12/2016

Tiếp tục với hàm, có một số điểm như sau:

trong hàm nếu ta return giá trị cho hàm thì việc gán biến cho hàm sẽ đc nhận giá trị cho biến vd: với lyosen1(a).

nếu là print ( lyosen(a) ) thì biến sẽ không có giá trị, None


vậy lí do nên tạo hàm trong chương trình lớn:

• Việc tạo ra một hàm mới sẽ giúp bạn có khả năng đặt tên cho một nhóm các câu lệnh, từ đó làm cho chương trình dễ đọc và gỡ lỗi hơn.

• Các hàm có thể thu gọn một chương trình bằng cách loại bỏ những đoạn mã lệnh trùng lặp. Sau này, nếu bạn sửa đổi chương trình, thì chỉ cần thực hiện sửa ở một chỗ.

• Việc chia một chương trình dài thành những hàm cho phép ta gỡ lỗi từng phần một và sau đó kết hợp lại để được một chương trình tổng thể hoạt động được.

• Các hàm được thiết kế tốt sẽ hữu dụng với nhiều chương trình. Một khi bạn viết ra một hàm và gỡ lỗi xong xuôi, bạn có dùng lại nó.    

 


Day 4 - 27/12/2016 pass: lyosen

Day 5 - 28/12/2016 pass: lyosen

 

 

Không có nhận xét nào:

Đăng nhận xét