Một thời gian ngắn, tôi đã được giới thiệu với những gì đã trở thành ngôn ngữ lập trình / kịch bản yêu thích số 1 của tôi: Python. Thật khó cho một nhà phát triển ngôn ngữ để tìm ra thứ gì đó vừa mạnh mẽ vừa dễ viết, cái gì đó tự nhiên chảy và cho phép bạn tập trung vào những gì quan trọng trong mã của bạn. Python làm điều này thật đẹp. Nó chỉ làm cho các loại giả định phù hợp, cho phép bạn tập trung hơn vào những gì chương trình của bạn nên làm thay vì chính xác làm thế nào nó nên được thực hiện. Không có gì đáng lo ngại về quản lý bộ nhớ, đánh máy biến đổi, hoặc những dấu chấm phẩy bị thổi phồng, bạn chỉ cần lưu ý đến logic của ứng dụng của bạn.

Python có một số khởi hành khá lớn từ một số ngôn ngữ truyền thống hơn như C / C ++, phù hợp tốt hơn với các ngôn ngữ động như Ruby, Smalltalk, và thậm chí cả Javascript. Khả năng hoàn thành nhanh chóng và dễ dàng các tác vụ phức tạp trong Python thậm chí còn là chủ đề của một số truyện tranh web tuyệt vời.

Lưu ý - Python là một ngôn ngữ thông dịch, trình thông dịch có thể được tải xuống tại đây. Tất cả các ví dụ trong hướng dẫn này được viết cho Python 3.0 không hoàn toàn tương thích ngược với các phiên bản trước. Nếu bạn gặp sự cố khi chạy các ví dụ, hãy kiểm tra phiên bản Python của bạn.

Chạy các ví dụ

Tôi sẽ bao gồm các ví dụ khác nhau trong suốt hướng dẫn này. Một khi bạn đã cài đặt trình thông dịch Python 3 (đảm bảo nó là Python 3), mã có thể được chạy theo hai cách:

Tập kịch bản

Bạn có thể sao chép / dán văn bản hoàn chỉnh của mã ví dụ vào một tệp văn bản. Các tệp Python thường kết thúc bằng .py. Mở dấu nhắc lệnh của bạn và chạy tệp thực thi Python theo sau là tên của tệp. Trên máy Linux của tôi, tôi chạy:

 python3.0 myfile.py 

Điều này cũng giống nhau trên Windows và Mac, mặc dù bạn có thể phải chỉ định đường dẫn đầy đủ tới trình thông dịch Python, chẳng hạn như

 C: \ Python30 \ python.exe myfile.py 

Phiên dịch tương tác

Python cũng có thể được chạy trong chế độ tương tác, nơi bạn có thể nhập vào từng lệnh một để xem cách nó phản hồi như thế nào. Điều này có thể rất hữu ích trong xử lý sự cố, hoặc trong việc thử những điều mới. Chạy Python thực thi, không có bất kỳ tệp kịch bản nào và nó sẽ mở ra dấu nhắc tương tác.

Ctrl-D sẽ thoát khỏi trình thông dịch.

Khoảng trắng

Một trong những khía cạnh khác thường nhất của Python là việc sử dụng khoảng trắng để chỉ ra các khối mã. Thay vì bắt đầukết thúc, hoặc nhóm theo dấu ngoặc đơn, Python sử dụng số lượng thụt đầu dòng để biết cách xử lý các khối mã cho vòng lặp và như vậy. Đối với nhiều người đến từ các ngôn ngữ lập trình khác, điều này có vẻ như điên rồ. Tuy nhiên, khi bạn quen với ý tưởng, nó trở nên khá tự nhiên và buộc mã của bạn phải rõ ràng và dễ đọc. Chúng tôi tất cả các khối indent mã anyway (hoặc ít nhất là nên) vì vậy nó chỉ có ý nghĩa cho ngôn ngữ để hiểu rằng tất cả các tuyên bố xếp hàng với nhau là một phần của cùng một khối.

Như một lợi ích bổ sung, Python không phải là cầu kỳ về số lượng bạn muốn thụt lề, hoặc thậm chí bạn thích các tab hay không gian. Bạn có thể sử dụng một tab, một không gian, hai không gian, 137 không gian, Python không quan tâm. Tất cả những gì bạn cần làm là nhất quán. Nó sẽ kiểm tra mã của bạn và xem "Khối mã đầu tiên được thụt vào bởi 4 dấu cách, vì vậy tôi giả sử mỗi khối khác được thụt vào bởi 4 dấu cách khác" hoặc bất kỳ trường hợp nào có thể. Miễn là bạn nhất quán trong cách bạn thụt lề mã của bạn, Python đủ linh hoạt để hiểu. Ví dụ sau có thể giúp mọi thứ rõ ràng.

 1 2 3 4 5 
 x = 0 trong khi x <10: in (x) x + = 1 in ("Đã xong") 

Phân tích mã: Vòng lặp while cho Python biết chạy khối mã sau miễn là điều kiện nhất định là đúng. Trong trường hợp này, điều kiện là x nhỏ hơn 10. Nó sẽ tiếp tục lặp lại khối đó cho đến khi x hits 10. "x + = 1" dịch thành "x = x + 1" hoặc "làm x lớn hơn 1 ". Lưu ý dòng cuối cùng không được chạy cho đến khi vòng lặp while kết thúc. Python thấy các dòng thụt lề, và xử lý những dòng đó như là nhóm mã được chạy trên mỗi chuyến đi qua vòng lặp while. Dòng cuối cùng không được thụt lề với những người khác, vì vậy Python không hành động trên nó cho đến khi vòng lặp while kết thúc.

Nhập động

Python không yêu cầu bạn phải xác định loại dữ liệu nào sẽ có trong một biến. Bạn có thể đặt một số nguyên, một chuỗi, một số thập phân, bất cứ điều gì bạn muốn vào một biến mà không cần phải nói với Python nó là gì. Python sẽ tìm ra, dựa trên những gì bạn gán, loại dữ liệu mà biến sẽ giữ. Ví dụ sau đây sẽ chứng minh:

 1 2 3 4 5 6 7 8 
 x = 0 in ("x là a:", gõ (x)) x = 3, 14 in ("x là a:", gõ (x)) x = "Xin chào" in ("x là một:", loại ( x)) x = [1, 2, 3, 4] in ("x là một:", gõ (x)) 

Điều này cho chúng ta kết quả dưới đây

Cấu trúc dữ liệu

Ba cấu trúc dữ liệu bạn thường sử dụng nhất trong python là

  • Danh sách
  • Tuples
  • Từ điển

Danh sách

rất giống các mảng trong một số ngôn ngữ khác. Chúng là một chuỗi các mục một chiều (mặc dù về mặt kỹ thuật bạn có thể cung cấp cho chúng nhiều kích thước tùy thích). Mỗi mục trong danh sách đó có thể được thay đổi, di chuyển và xóa theo ý muốn mà không phải tạo lại danh sách và không gây ra bất kỳ thay đổi nào cho các mục khác. Danh sách có thể chứa bất kỳ đối tượng Python nào, cho dù đó là một số, một chuỗi, thậm chí cả các danh sách khác. Các mã sau đây cho thấy một số cách sử dụng cơ bản của danh sách.

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 
 # tạo một danh sách với một vài mục mẫu myList = [1, 2, 3, 4, 5] #len () cho biết số lượng các mục mà danh sách của chúng tôi giữ lại ("myList has", len (myList), "items . ") #Các mục trong danh sách không phải thuộc cùng một loại myList.append (" sáu ") myList.append (" bảy ") myList.append (8) # Chúng tôi đã thêm ba mục mới vào cuối danh sách in ("myList now has", len (myList), "items.") #Now hãy xem mục số 0 (mục đầu tiên) print ("mục đầu tiên:", myList [0]) #and now mục thứ tư in ("mục thứ tư:", danh sách của tôi [3]) # Sau đó bật mục cuối cùng ra khỏi danh sách in ("và kết thúc bằng", myList.pop ()) in ("myList now has", len ( myList), "items.") #Và xem những gì chúng tôi đã thực hiện in ("Nội dung đầy đủ là:", myList) 

Tuples

Tôi sẽ không bao gồm nhiều tuples, vì họ sẽ không được sử dụng nó chương trình ví dụ của chúng tôi và họ đang tương tự như danh sách theo nhiều cách. Tuples, giống như danh sách, là một loạt các mục được nhóm lại với nhau. Sự khác biệt là các bộ dữ liệu không thể thay đổi được. Bạn không thể thực hiện thay đổi tại chỗ đối với các mục trong một bộ dữ liệu, bạn phải tạo lại bộ tuple. Điều này có nghĩa là không "nối thêm" hoặc "pop" hoặc những thứ khác trực tiếp thay đổi nội dung của bộ dữ liệu. Nếu nó giúp, bạn có thể coi các bộ dữ liệu là một danh sách chỉ đọc (mặc dù điều đó thực sự không chính xác lắm).

Từ điển

Đây, tôi yêu. Khi tôi lần đầu tiên được dạy về từ điển, tôi nhớ đã suy nghĩ một điều gì đó dọc theo dòng chữ "Vâng .. Tôi GUESS có thể hữu ích ... đôi khi". Trong vòng một tuần, tôi đã sử dụng chúng mọi cơ hội tôi có.

Trong Python, các từ điển là các cặp khóa: giá trị. Nó giống như một danh sách ngoại trừ mỗi mục có hai phần, một khóa và một giá trị. Trong ví dụ sau, tôi sẽ tạo một từ điển để giữ thông tin về bản thân mình.

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 
 myDict = {} # Giá trị khóa myDict ["Tên"] = "Josh" myDict ["Nghề nghiệp"] = "Máy tính Geek" myDict ["FavFood"] = "Hani đặc biệt (không có rau diếp)" myDict ["FavBand"] = "Bất cứ điều gì trừ B-52" myDict ["Heroes"] = "Tom Waits, Kurt Vonnegut, SpaceBat" myDict ["FavNumber"] = 3.141592 myDict [42] = "Nó cũng là một số tốt" in ("Tên tôi: ", myDict [" Name "]) print (" My heroes: ", myDict [" Heroes "]) in (" Số yêu thích của tôi: ", myDict [" FavNumber "]) in (" Tôi nghĩ gì về 42? ", myDict [42]) print () # Bây giờ tôi sẽ thay đổi số yêu thích của mình mà không cần tạo một từ điển hoàn toàn mới myDict [" FavNumber "] + = 100 in (" Số yêu thích MỚI của tôi: ", myDict [" FavNumber " ]) 

Một vài điều nên được rõ ràng từ ví dụ. Đầu tiên, từ điển có thể trộn và kết hợp dữ liệu của bất kỳ loại nào. Chìa khóa và giá trị của bạn có thể là bất cứ thứ gì. Bạn thậm chí có thể trở nên thực sự điên rồ và đặt những thứ như chức năng bên trong từ điển, nhưng đó là cách vượt ra ngoài phạm vi của hướng dẫn này.

Thứ hai, từ điển có thể thay đổi. Bạn có thể thêm và xóa các mục khi đang di chuyển mà không cần tạo lại từ điển hoặc ảnh hưởng đến các mục khác.

Nếu bạn vẫn không chắc chắn về tính hữu dụng của từ điển, hãy xem xét sử dụng chúng để theo dõi cài đặt của người dùng. Bạn có thể có một từ điển được gọi là cài đặt và lưu trữ những thứ như tên người dùng, địa chỉ ip và độ phân giải màn hình. Bất cứ khi nào bạn cần tham chiếu dữ liệu đó, bạn chỉ có thể kéo dữ liệu từ cài đặt ["tên người dùng"] hoặc bất kỳ khóa nào khác mà bạn đã chỉ định.

Mang nó về nhà

Bây giờ chúng ta sẽ đi đến hành động thực sự, tạo ra một chương trình Python 3.0 hữu ích. Những gì chương trình này sẽ làm là lấy một số đại diện cho tiền, và cho bạn biết bao nhiêu thay đổi túi sẽ làm cho số tiền đó. Đó là một bài tập mã hóa khá phổ biến và là một cách hay để chứng minh các khái niệm mà chúng tôi đã trình bày cho đến nay.

Bây giờ tôi nên nói với bạn rằng chương trình này KHÔNG được viết theo cách "tốt nhất", mục tiêu của tôi là viết nó bằng cách sử dụng các khái niệm và hoạt động cơ bản nhất có thể. Có một số cách "tốt hơn" để viết điều này, như sử dụng các hàm và toán tử mô-đun, và bao gồm kiểm tra lỗi, nhưng phiên bản này nên khá dễ hiểu.

 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 
 #Nhận tổng số tiền mặt = đô la ("Nhập số tiền bằng đô la: $") #Reading từ nhập văn bản giả định văn bản, do đó, chuyển đổi thành thập phân và bội số của 100 để chúng tôi có thể đếm số xu (toán đơn giản theo cách đó) pennies = float (tổng cộng) * 100 #tạo từ điển để giữ giá trị thay đổi của chúng tôi thay đổi = {"quý": 0, "số lần": 0, "nickels": 0, "pennies": 0} #Loop cho đến khi tất cả tiền đã được tính trong khi đồng xu> 0: # Giảm mỗi đồng xu từ tổng cộng, thêm 1 để đếm # cho mỗi đồng xu, và khởi động lại vòng lặp sau khi đếm nếu đồng xu> = 25: thay đổi ["quý"] + = 1 đồng xu - = 25 tiếp tục elif pennies> = 10: thay đổi ["dimes"] + = 1 đồng xu - = 10 tiếp tục elif pennies> = 5: thay đổi ["nickels"] + = 1 đồng xu - = 5 tiếp tục khác: thay đổi ["pennies"] = int (pennies) pennies = 0 #Cuối cùng, in kết quả của chúng tôi in ("Q:", thay đổi ["quý"]) in ("D:", thay đổi ["dimes"]) in ("N:", thay đổi ["nickels"] ) print ("P:", thay đổi ["đồng xu"]) 

Mã phân tích: Chúng tôi đang sử dụng đầu vào để nhận được số tiền từ dòng lệnh. Python giả định rằng những gì đang được nhập vào là một chuỗi văn bản, trái ngược với một số, vì vậy chúng tôi phải nói với nó để chuyển đổi đầu vào đó thành một số có thể sử dụng được. Chúng tôi có thể để lại số một mình (tức là 15, 95) nhưng thay vào đó chúng tôi chuyển đổi nó thành đồng xu (nhân với 100) để làm cho toán học đơn giản hơn vì vậy chúng tôi sẽ không phải lo lắng về số thập phân.

Tiếp theo, chúng tôi tạo một từ điển để giữ kết quả của máy tính của chúng tôi. Nếu đây là một chương trình phức tạp hơn, chúng tôi có thể chuyển từ điển đó đến các chức năng, lớp học, vv mà không lo lắng về việc theo dõi các biến riêng biệt cho từng loại tiền xu.

Sau đó là công việc thực sự - hành động chia tổng số tiền của chúng tôi thành tiền riêng lẻ. Chương trình này sử dụng vòng lặp while để tiếp tục đạp xe cho đến khi chúng tôi không còn tiền từ đầu vào ban đầu của chúng tôi. Mỗi chuyến đi qua vòng lặp sẽ xem xét số tiền, trừ đi đồng xu lớn nhất có thể và khởi động lại vòng lặp. Thay vì làm phép trừ đi nhiều lần, chương trình này có thể sẽ hiệu quả hơn nhiều nếu chúng ta sử dụng toán tử mô đun, nhưng phép trừ dễ hiểu hơn.

Khi chúng tôi kết thúc vòng lặp, tất cả những gì còn lại cần làm là hiển thị kết quả của chúng tôi.

Python có khả năng FAR nhiều hơn tôi có thể bao gồm ở đây, nhưng tôi hy vọng tôi có thể chứng minh những điều cơ bản về cách nó hoạt động và cách nó có thể được sử dụng để tạo các công cụ phức tạp hơn một cách nhanh chóng và dễ dàng hơn ngôn ngữ ít trực quan hơn.

Trong trường hợp bất kỳ ai tò mò như tôi về cách phát âm đúng cách "tuple", tôi đã may mắn có cơ hội để tự hỏi Guido van Rossum nếu nó là "toople" hoặc "tupple", và anh đưa ra câu trả lời hơi không hài lòng "Đó là bất cứ điều gì bạn muốn."