Page 51 - Em Học Python
P. 51
khiến Python không hiểu, hoặc là Python đang cần gì đó mà em lại không viết ra. EOL là
viết tắt của hết dòng ⟨end-of-line⟩ , vậy toàn bộ lỗi nói rằng Python đã đọc hết dòng lệnh rồi
mà vẫn không tìm thấy dấu đóng ngoặc ở cuối chuỗi.
Để một chuỗi có thể chứa nhiều hơn một dòng chữ (còn gọi là chuỗi nhiều dòng
⟨multiline string⟩), em có thể dùng ba dấu ngoặc đơn ( '''), rồi nhấn ENTER để sang dòng như
thế này:
>>> fred = '''Why do birds fly?
It's faster than walking!'''
In nội dung của fred ra thử xem sao:
>>> print(fred)
Why do birds fly?
3
It's faster than walking!
CÁC VẤN ĐỀ THƯỜNG GẶP VỚI CHUỖI
Có một ví dụ này rất rối rắm, viết kiểu gì cũng bị bắn ra lỗi:
>>> silly_string = 'He said, "Aren't can't shouldn't wouldn't."'
SyntaxError: invalid syntax
Ở đây ta đang tạo ra một chuỗi (với biến silly_string), được bọc lại bởi hai dấu
ngoặc đơn ở hai đầu, nhưng bản thân chuỗi lại có mấy từ cũng có dấu ngoặc đơn là can't,
shouldn't, wouldn't, xong ở giữa lại còn có mấy dấu ngoặc kép nữa. Hỗn hết cả loạn!
Em phải hiểu Python không thông minh như người đâu, nên cái nó thấy chỉ là chuỗi
này thôi He said, "Aren, sau đó là một đống những ký tự thừa thãi gì đâu. Mỗi khi Python
nhìn thấy một dấu ngoặc (bất kể là ngoặc đơn hay ngoặc kép), là nó tự hiểu sau dấu ngoặc
đó sẽ là chuỗi, thế là nó cứ thế đi cho đến hết dòng để tìm dấu ngoặc còn lại (ngoặc đơn
hoặc ngoặc kép tương ứng). Trong trường hợp này, chuỗi được bắt đầu ở dấu ngoặc đơn
nằm trước từ He, và kết thúc ở dấu ngoặc đơn ở sau chữ n trong Aren, Python chỉ biết có
vậy. IDLE có đánh dấu ngay tại điểm mà mọi thứ trở nên sai sai:
3 Câu đùa: “Vì sao chim lại bay? Vì bay nhanh hơn đi bộ chứ sao!”
Chuỗi, mảng, tuple và map 25