Python Tutorial |
3. Giới thiệu không chính thức về Python
Trong các ví dụ sau, đầu vào và đầu ra được phân biệt bằng sự hiện diện hoặc vắng mặt của lời nhắc ( >>> và … ): để lặp lại ví dụ, bạn phải nhập mọi thứ sau dấu nhắc, khi lời nhắc xuất hiện; các dòng không bắt đầu bằng dấu nhắc là đầu ra từ trình thông dịch. Lưu ý rằng một dấu nhắc phụ trên một dòng của chính nó trong một ví dụ có nghĩa là bạn phải gõ một dòng trống; điều này được sử dụng để kết thúc một lệnh nhiều dòng.
Nhiều ví dụ trong sách hướng dẫn này, ngay cả những ví dụ được nhập tại dấu nhắc tương tác, bao gồm các bình luận. Các chú thích trong Python bắt đầu bằng ký tự băm
#
, và mở rộng đến cuối dòng vật lý. Nhận xét có thể xuất hiện ở đầu dòng hoặc sau khoảng trắng hoặc mã, nhưng không xuất hiện trong chuỗi ký tự. Một ký tự băm trong một chuỗi ký tự chỉ là một ký tự băm. Vì các chú thích phải làm rõ mã và không được Python giải thích, chúng có thể bị bỏ qua khi gõ vào các ví dụ.
Vài ví dụ:
3.1. Sử dụng Python như một Máy tính
Hãy thử một số lệnh Python đơn giản. Khởi động trình thông dịch và đợi lời nhắc chính
>>>
,. (Không nên lâu đâu.)3.1.1. Số
Trình thông dịch hoạt động như một máy tính đơn giản: bạn có thể nhập một biểu thức vào nó và nó sẽ viết giá trị. Cú pháp biểu hiện rất đơn giản: các nhà khai thác
+
, -
, *
và /
công việc cũng giống như trong hầu hết các ngôn ngữ khác (ví dụ, Pascal hoặc C); dấu ngoặc đơn ( ()
) có thể được sử dụng để nhóm. Ví dụ:
Các số nguyên (ví dụ
2
, 4
, 20
) có loại int
, là những người có một phần phân đoạn (ví dụ 5.0
, 1.6
) có loạifloat
. Chúng ta sẽ xem thêm về các kiểu số sau trong hướng dẫn này.
Division (
/
) luôn trả về một float. Để thực hiện phân chia sàn và nhận được kết quả nguyên (loại bỏ bất kỳ kết quả phân số nào), bạn có thể sử dụng //
toán tử; để tính phần còn lại bạn có thể sử dụng %
:
Dấu bằng (
=
) được sử dụng để gán một giá trị cho một biến. Sau đó, không có kết quả nào được hiển thị trước dấu nhắc tương tác tiếp theo:
Nếu một biến không phải là “được định nghĩa” (gán một giá trị), cố gắng sử dụng nó sẽ cho bạn một lỗi:
Có hỗ trợ đầy đủ cho điểm nổi; toán tử với toán hạng kiểu hỗn hợp chuyển đổi toán hạng số nguyên thành dấu phẩy động:
Trong chế độ tương tác, biểu thức được in cuối cùng được gán cho biến
_
. Điều này có nghĩa rằng khi bạn đang sử dụng Python như một máy tính bàn, nó sẽ dễ dàng hơn để tiếp tục tính toán, ví dụ:
Biến này sẽ được người dùng coi là chỉ đọc. Không chỉ định giá trị cho nó một cách rõ ràng - bạn sẽ tạo một biến cục bộ độc lập với cùng tên che dấu biến tích hợp với hành vi ma thuật của nó.
Ngoài
int
và float
, Python hỗ trợ các loại số khác, chẳng hạn như Decimal
và Fraction
. Python cũng có hỗ trợ dựng sẵn cho các số phức và sử dụng hậu tố j
hoặc J
hậu tố để chỉ phần ảo (ví dụ 3+5j
).3.1.2. Chuỗi
Bên cạnh các số, Python cũng có thể thao tác các chuỗi, có thể được biểu diễn theo nhiều cách. Chúng có thể được đặt trong dấu nháy đơn (
'...'
) hoặc dấu ngoặc kép ( "..."
) với cùng một kết quả [2] . \
có thể được sử dụng để thoát khỏi dấu ngoặc kép:
Trong trình thông dịch tương tác, chuỗi đầu ra được đặt trong dấu ngoặc kép và các ký tự đặc biệt được thoát bằng dấu gạch chéo ngược. Trong khi điều này đôi khi có thể trông khác với đầu vào (dấu ngoặc đơn kèm theo có thể thay đổi), hai chuỗi là tương đương nhau. Chuỗi được đặt trong dấu ngoặc kép nếu chuỗi chứa một dấu trích dẫn duy nhất và không có dấu ngoặc kép, nếu không nó sẽ được bao trong dấu nháy đơn. Các
print()
chức năng sản xuất ra một sản lượng dễ đọc hơn, bằng cách bỏ qua các dấu ngoặc kép bao quanh và in ấn thoát và ký tự đặc biệt:
Nếu bạn không muốn các ký tự được mở đầu bằng cách
\
được hiểu là các ký tự đặc biệt, bạn có thể sử dụng các chuỗi thô bằng cách thêm một dấu r
trước trích dẫn đầu tiên:
Chuỗi chữ có thể kéo dài nhiều dòng. Một cách là sử dụng dấu ngoặc kép:
"""..."""
hoặc '''...'''
. Kết thúc dòng được tự động bao gồm trong chuỗi, nhưng nó có thể ngăn chặn điều này bằng cách thêm một \
ở cuối dòng. Ví dụ sau:
tạo đầu ra sau (lưu ý rằng dòng mới ban đầu không được bao gồm):
Các chuỗi có thể được nối (dán lại với nhau) với
+
toán tử và lặp lại với *
:
Hai hoặc nhiều chuỗi ký tự (tức là những chữ cái nằm giữa dấu ngoặc kép) cạnh nhau được tự động nối.
Tính năng này đặc biệt hữu ích khi bạn muốn ngắt chuỗi dài:
Điều này chỉ hoạt động với hai chữ cái, không phải với các biến hoặc biểu thức:
Nếu bạn muốn nối các biến hoặc một biến và một chữ, hãy sử dụng
+
:
Các chuỗi có thể được lập chỉ mục (chỉ số con), với ký tự đầu tiên có chỉ mục 0. Không có loại ký tự riêng biệt; một ký tự đơn giản chỉ là một chuỗi có kích thước:
Chỉ mục cũng có thể là số âm, để bắt đầu đếm từ bên phải:
Lưu ý rằng vì -0 giống với 0, chỉ số âm tính bắt đầu từ -1.
Ngoài việc lập chỉ mục, việc cắt cũng được hỗ trợ. Trong khi lập chỉ mục được sử dụng để lấy các ký tự riêng lẻ, việc cắt cho phép bạn lấy chuỗi con:
Lưu ý cách bắt đầu luôn được bao gồm và kết thúc luôn bị loại trừ. Điều này đảm bảo rằng luôn luôn bằng :
s[:i] + s[i:]
s
Các chỉ mục slice có các giá trị mặc định hữu ích; một chỉ mục đầu tiên bị bỏ qua mặc định là 0, chỉ mục thứ hai bị bỏ qua mặc định là kích thước của chuỗi bị cắt.
Một cách để nhớ cách các slice hoạt động như thế nào khi nghĩ đến các chỉ mục như chỉ giữa các ký tự, với cạnh trái của ký tự đầu tiên được đánh số 0. Sau đó, cạnh phải của ký tự cuối cùng của một chuỗi ký tự n có chỉ mục n , ví dụ:
Hàng đầu tiên của số cho vị trí của các chỉ số 0… 6 trong chuỗi; hàng thứ hai cung cấp cho các chỉ số tiêu cực tương ứng. Slice từ i đến j bao gồm tất cả các ký tự giữa các cạnh có nhãn i và j , tương ứng.
Đối với các chỉ số không âm, chiều dài của một lát là sự khác biệt của các chỉ số, nếu cả hai đều nằm trong giới hạn. Ví dụ, chiều dài
word[1:3]
là 2.
Cố gắng sử dụng chỉ mục quá lớn sẽ dẫn đến lỗi:
Tuy nhiên, trong số các chỉ mục slice được xử lý một cách duyên dáng khi được sử dụng để cắt:
Không thể thay đổi chuỗi Python - chúng không thay đổi được . Do đó, việc gán cho một vị trí được lập chỉ mục trong chuỗi sẽ dẫn đến một lỗi:
Nếu bạn cần một chuỗi khác, bạn nên tạo một chuỗi mới:
Xem thêm
- Loại chuỗi văn bản - đường
- Các chuỗi là các ví dụ về các loại trình tự và hỗ trợ các hoạt động phổ biến được hỗ trợ bởi các loại đó.
- Phương thức chuỗi
- Các chuỗi hỗ trợ một số lượng lớn các phương thức để biến đổi và tìm kiếm cơ bản.
- Các chuỗi ký tự được định dạng
- Chuỗi ký tự có các biểu thức nhúng.
- Cú pháp chuỗi định dạng
- Thông tin về định dạng chuỗi với
str.format()
. - định dạng chuỗi kiểu printf
- Các hoạt động định dạng cũ được gọi khi chuỗi là toán hạng bên trái của
%
toán tử được mô tả chi tiết hơn tại đây.
3.1.3. Danh sách
Python biết một số kiểu dữ liệu phức hợp , được sử dụng để nhóm các giá trị khác lại với nhau. Linh hoạt nhất làdanh sách , có thể được viết dưới dạng danh sách các giá trị được phân cách bằng dấu phẩy (các mục) giữa các dấu ngoặc vuông. Danh sách có thể chứa các mục thuộc nhiều loại khác nhau, nhưng thường tất cả các mục đều có cùng loại.
Giống như chuỗi (và tất cả các loại trình tự tích hợp khác), danh sách có thể được lập chỉ mục và cắt lát:
Tất cả các thao tác slice trả về một danh sách mới chứa các phần tử được yêu cầu. Điều này có nghĩa là slice sau trả về một bản sao mới (nông) của danh sách:
Danh sách cũng hỗ trợ các hoạt động như nối:
Không giống như các chuỗi, đó là bất biến , danh sách là một loại có thể thay đổi , tức là có thể thay đổi nội dung của chúng:
Bạn cũng có thể thêm các mục mới vào cuối danh sách, bằng cách sử dụng
append()
phương thức (chúng ta sẽ xem thêm về các phương thức sau):
Chuyển nhượng cho lát cũng có thể, và điều này thậm chí có thể thay đổi kích thước của danh sách hoặc xóa nó hoàn toàn:
Có thể lồng danh sách (tạo danh sách chứa danh sách khác), ví dụ:
3.2. Các bước đầu tiên hướng tới lập trình
Tất nhiên, chúng ta có thể sử dụng Python cho các nhiệm vụ phức tạp hơn là thêm hai và hai với nhau. Ví dụ, chúng ta có thể viết một chuỗi con đầu tiên của dãy Fibonacci như sau:
Ví dụ này giới thiệu một số tính năng mới.
- Dòng đầu tiên chứa nhiều phép gán : các biến
a
vàb
đồng thời lấy giá trị mới 0 và 1. Trên dòng cuối cùng, nó được sử dụng một lần nữa, chứng minh rằng các biểu thức ở phía bên tay phải đều được đánh giá đầu tiên trước khi bất kỳ bài tập nào diễn ra . Các biểu thức bên phải được đánh giá từ trái sang phải. - Các
while
vòng lặp thực hiện chừng nào điều kiện (ở đây: ) vẫn còn đúng. Trong Python, giống như trong C, bất kỳ giá trị số nguyên khác không là đúng; số không là sai. Các điều kiện cũng có thể là một chuỗi hoặc danh sách giá trị, trên thực tế bất kỳ trình tự; bất kỳ điều gì có độ dài khác 0 là đúng, các chuỗi rỗng là sai. Thử nghiệm được sử dụng trong ví dụ này là so sánh đơn giản. Các toán tử so sánh chuẩn được viết giống như trong C: (nhỏ hơn), (lớn hơn), (bằng), (nhỏ hơn hoặc bằng), (lớn hơn hoặc bằng) và (không bằng).b < 10
<
>
==
<=
>=
!=
- Phần thân của vòng lặp được thụt lề : thụt đầu dòng là cách thức phân nhóm của Python. Tại dấu nhắc tương tác, bạn phải nhập một tab hoặc (các) khoảng trống cho mỗi dòng thụt vào. Trong thực tế, bạn sẽ chuẩn bị đầu vào phức tạp hơn cho Python với một trình soạn thảo văn bản; tất cả các trình soạn thảo văn bản đều có cơ sở thụt lề tự động. Khi một câu lệnh ghép được nhập tương tác, nó phải được theo sau bởi một dòng trống để biểu thị hoàn thành (vì trình phân tích cú pháp không thể đoán được khi bạn đã gõ dòng cuối cùng). Lưu ý rằng mỗi dòng trong một khối cơ bản phải được thụt vào bởi cùng một lượng.
- Các
print()
chức năng ghi giá trị của đối số (s) nó được đưa ra. Nó khác với việc viết biểu thức bạn muốn viết (như chúng ta đã làm trước đó trong ví dụ về máy tính) theo cách nó xử lý nhiều đối số, số lượng dấu chấm động và chuỗi. Các chuỗi được in không có dấu ngoặc kép và khoảng trắng được chèn vào giữa các mục, vì vậy bạn có thể định dạng mọi thứ một cách độc đáo, như sau:
Kết thúc đối số từ khóa có thể được sử dụng để tránh dòng mới sau đầu ra hoặc kết thúc đầu ra bằng một chuỗi khác:
Chú thích
[1] | Vì ** có ưu tiên cao hơn - , -3**2 sẽ được hiểu là -(3**2) do đó dẫn đến -9 . Để tránh điều này và nhận được 9 , bạn có thể sử dụng (-3)**2 . |
[2] | Không giống như các ngôn ngữ khác, các ký tự đặc biệt như \n có cùng ý nghĩa với cả dấu ngoặc đơn ('...' ) và double ( "..." ). Sự khác biệt duy nhất giữa hai điều đó là trong một dấu nháy đơn bạn không cần phải trốn thoát " (nhưng bạn phải trốn thoát \' ) và ngược lại. |
No comments