Tìm kiếm Blog này

Thứ Năm, 29 tháng 12, 2016

Think Python - Day 5

28/12/2016

Hôm nay đến phần đệ quy:

def coutdown(n):

if n >= 0:

print (n)

coutdown(n-1)                        <====> việc gọi lại chính hàm coutdown nhưng với                                                                                     tham số là n - 1 được gọi là hàm đệ quy


Vd về một hàm đệ quy vô hạng:

def overload():

overload()

Thông thường nếu một hàm đệ quy bị vô hạng, python sẽ thông báo lỗi khi số lần thực thi hàm đạt 1000 lần

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

Think Python - Day 4

27/12/2016

Mấy ngày cuối tuần về nhà toàn nhậu nên k lếch lên máy tính đc, hôm nay tiếp tục vs hàm, có một số lưu ý nhỏ như sau:

Truyền tham số cho hàm thì ta làm như sau:

s = input("Input something here: ")

def pass_parameters(s):

print(s)


Truyền tham số cho hàm vs tham số là một hàm khác:

def pass_def(f):

f()                                # f() co the la a,b,c,d

def sub_def():

print("Say something")

pass_def(sub_def)         <==> gọi hàm


Truyền nhiều tham số kết hợp:

def pass_def(f,a,b,c,d):

f()

print(a)

print(b+c)

print(d)

pass_def(sub_def,1,2,3,4)     <===> gọi hàm


 

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

Một số dữ liệu liên quan đến Think Python: How to think like a compter scientist Allen B. Downey.

Thuật ngữ




Giải quyết vấn đề:




Quá trình thiết lập bài toán, tìm lời giải, và biểu diễn lời giải.



Ngôn ngữ bậc cao:

Ngôn ngữ lập trình như Python được thiết kế nhằm mục đích để con người dễ đọc và viết.

Ngôn ngữ bậc thấp:

Ngôn ngữ lập trình được thiết kế nhằm mục đích để máy tính dễ thực hiện; còn gọi là “ngôn ngữ máy” hoặc “hợp ngữ”.

Tính khả chuyển:

Đặc tính của chương trình mà có thể chạy trên nhiều loại máy tính khác nhau.

Thông dịch:

Thực hiện chương trình được viết bằng ngôn ngữ bậc cao bằng cách dịch nó theo từng dòng một.

Biên dịch:

Dịch một lượt toàn bộ chương trình viết bằng ngôn ngữ bậc cao sang ngôn ngữ bậc thấp, để chuẩn bị thực hiện sau này.

Mã nguồn:

Chương trình ở dạng ngôn ngữ bậc cao trước khi được biên dịch.

Mã đối tượng:

Sản phẩm đầu ra của trình biên dịch sau khi nó đã dịch chương trình.

Chương trình chạy:

Tên khác đặt cho mã đối tượng đã sẵn sàng được thực hiện.

Dấu nhắc:

Các kí tự được hiển thị bởi trình thông dịch nhằm thể hiện rằng nó đã sẵn sàng nhận đầu vào từ phía người dùng.

Văn lệnh:

Chương trình được lưu trong file (thường chính là chương trình sẽ được thông dịch).

Chế độ tương tác:

Cách dùng trình thông dịch Python thông qua việc gõ các câu lệnh và biểu thức vào chỗ dấu nhắc.

Chế độ văn lệnh:

Cách dùng trình thông dịch Python để đọc và thực hiện các câu lệnh có trong một văn lệnh.

Chương trình:

Danh sách những chỉ dẫn thực hiện tính toán.

Thuật toán:

Quá trình tổng quát để giải một lớp các bài toán.

Lỗi:

Lỗi trong chương trình.

Gỡ lỗi:

Quá trình dò tìm và gỡ bỏ cả ba kiểu lỗi trong lập trình.

Cú pháp:

Cấu trúc của một chương trình.

Lỗi cú pháp:

Lỗi trong chương trình mà làm cho quá trình phân tách không thể thực hiện được (và hệ quả là không thể biên dịch được).

Biệt lệ:

Lỗi được phát hiện khi chương trình đang chạy.

Ngữ nghĩa:

Ý nghĩa của chương trình.

Lỗi ngữ nghĩa:

Lỗi có trong chương trình mà khiến cho chương trình thực hiện công việc ngoài ý định của người viết.

Ngôn ngữ tự nhiên:

Ngôn ngữ bất kì được con người dùng, được trải qua sự tiến hóa tự nhiên.

Ngôn ngữ hình thức:

Ngôn ngữ bất kì được con người thiết kế nhằm mục đích cụ thể, như việc biểu diễn các ý tưởng toán học hoặc các chương trình máy tính; tất cả các ngôn ngữ lập trình đều là ngôn ngữ hình thức.

Nguyên tố:

Một trong những thành phần cơ bản trong cấu trúc cú pháp của một chương trình, tương đương với một từ trong ngôn ngữ tự nhiên.

Phân tách:

Việc kiểm tra một chương trình và phân tích cấu trúc cú pháp.

Lệnh print:


Chỉ thị để khiến trình thông dịch Python hiển thị một giá trị lên màn hình.







giá trị:Một trong những đơn vị cơ bản của dữ liệu, cũng như số hoặc chuỗi, mà chương trình thao tác với.



kiểu:Loại riêng của các giá trị. Những kiểu mà ta đã gặp bao gồm kiểu số nguyên (int), số có phần thập phân (float), và chuỗi (str).



số nguyên:Kiểu dùng để biểu diễn loại số tương ứng.số có phần thập phân:Kiểu dùng để biểu diễn loại số tương ứng.



chuỗi:Kiểu dùng để biểu diễn một danh sách các kí tự.biến:Tên được tham chiếu đến một giá trị.



câu lệnh:Đoạn mã biểu diễn một lệnh hoặc một hành động. Cho đến giờ, các câu lệnh mà ta đã gặp gồm có lệnh gán và lệnh print.



lệnh gán:Lệnh để gán một giá trị cho một biến.sơ đồ trạng thái:Đồ thị biểu diễn một tập hợp các biến và các giá trị mà chúng tham chiếu tới.



từ khoá:Từ dành riêng cho trình biên dịch để phân tách một chương trình; bạn không thể dùng những từ khoá như if, def, và while để đặt tên biến.



toán tử:Kí hiệu đặc biệt để biểu diễn một phép tính đơn nhất như cộng, nhân, hoặc nối chuỗi.



toán hạng:Một trong những giá trị mà toán tử thực hiện với.



phép chia làm tròn xuống:Phép toán chia hai số và cắt bỏ phần thập phân.



biểu thức:Tập hợp các biến, toán tử, và giá trị nhằm biểu diễn một giá trị kết quả duy nhất.



định lượng:Giản hoá một biểu thức bằng cách thực hiện các phép tính nhằm thu được một giá trị duy nhất.



quy tắc ưu tiên:Tập hợp các quy tắc chi phối thứ tự mà những biểu thức bao gồm nhiều toán tử và toán hạng được định lượng.



nối:Ghép nối tiếp hai toán hạng.



chú thích:Thông tin trong một chương trình; thông tin này có ích đối với các lập trình viên khác (hoặc người khác đọc mã nguồn) nhưng không làm ảnh hưởng đến việc thực hiện chương trình.

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