6 - Kiểu dữ liệu (lớp) chuỗi trong Python

#Nội dung

  • Chuỗi là gì?
  • Sự khác nhau giữa ‘’ và “”.
  • Chuỗi nhiều dòng với ‘’’ và “”". Khái niệm Docstring.
  • Escape Sequence là gì?
    #Chuỗi là gì?

Trong Python, chuỗi là những thứ được đặt trong cặp dấu ’ ‘, hoặc " ", có thể cũng là trong cặp ‘’’ ‘’’, “”" “”". Nhưng cơ bản và thường đường sử dụng nhất là cặp ’ ’ và “”.

>>> 'Yui Hatano'
'Yui Hatano'
>>> s = 'Akiho Yoshizawa'   # gán cho biến s với giá trị là một chuỗi
>>> s
'Akiho Yoshizawa'
>>> player  = "Romessi"     # gán cho biến player với một chuỗi có giá trị là 'Romessi'
>>> player
'Romessi'
>>> '# day la comment'  # không đâu,  nó là chuỗi. Đây mới là comment
'# day la comment'
>>> s = "String"
>>> type(s)   # và kiểu dữ liệu chuỗi sẽ thuộc lớp 'str'
<class 'str'>

#Sự khác nhau giữa ‘’ và “”
Nói về công dụng, thì hai cặp dấu trên là tương đương. Những thứ nằm bên trong nó là một chuỗi.
Nhưng không có thứ gì sinh ra là để cho có

>>> 'I'm Python'    # đặt nội dung vào trong  cặp dấu ''
  File "<stdin>", line 1
    'I'm Beginner'
       ^
SyntaxError: invalid syntax

Hãy nhìn lại và phân tích tại sao lại có lỗi xảy ra.
Khi bạn gõ 'I'm Beginner'. Python sẽ đọc từ trái qua phải và lấy từng kí tự trong chuỗi của bạn và việc này sẽ dừng lại khi nó gặp được dấu ’ còn lại.
Có nghĩa là nó sẽ đọc được chuỗi 'I' sau đó kết thúc. Nhưng ta lại còn có một đoạn ở phía sau m Beginner'. Thứ này với Python hoàn toàn vô nghĩa. Nó không hiểu được ý của bạn. Do đó một SyntaxError được thông báo lên.
Vậy, làm cách nào để ta có thể có được chuỗi với nội dung ta mong muốn?

Ta có 3 cách cơ bản để giải quyết vấn đề này. Và ngay sau đây, mình sẽ giới thiệu cách đơn giản nhất.

Ta sẽ lựa chọn cặp dấu ngoặc " " khi nội dung chuỗi của chúng ta có những kí tự ', và sẽ chọn cặp dấu ngoặc ’ ’ nếu nội dung chuỗi của chúng ta có những kí tự ".

>>> "I'm Beginner"   # nội dung có kí tự ', chọn cặp dấu " "
"I'm Beginner"
>>> s = "It's good"
>>> s
"It's good"
>>> s2 = 'this is "special" word'   # nội dung có kí tự ", chọn cặp ' '
>>> s
'this is "special"  word'

Bạn có thể có câu hỏi rằng: “Nếu nội dung trong chuỗi vừa có kí tự “, lại vừa có kí tự ‘, thì ta phải chọn cặp dấu ngoặc nào?”.
Tí rồi mình nói cho :wink:
#Chuỗi nhiều dòng với ‘’’ và “””. Khái niệm Docstring
###Chuỗi nhiều dòng với ‘’’ và “”"
Thường khi nhắc đến chuỗi, ta hay nghĩ tới một dòng. Và khi đó, ta sử dụng cặp dấu ‘’ hoặc “”. Nếu là nhiều dòng chuỗi kết nối với nhau, như những câu chữ bạn hay viết trong những cuốn vở thì đó cũng là một chuỗi, nhưng chuỗi đó sẽ được đặt trong cặp dấu ‘’’ và “”".

>>> s = '''dong 1
…     dong 2
…     dong 3'''
>>> s
'dong 1\ndong2\ndong3'
>>> print(s)  # kết quả mong muốn  sẽ xuất hiện khi bạn sử dụng hàm print
dong 1
dong 2
dong 3

Hãy khoan nói về việc tại sao kết quả chúng ta mong muốn phải qua tay hàm print. Nếu để ý, những lần chúng ta nhấn phím enter để xuống dòng nhập tiếp dòng tiếp theo. Ở đó sẽ được thêm vào 2 kí tự \ và n.

Sự thật, \n được coi là một kí tự. Và đây chính là một escape sequence. Để hiểu rõ nó ra sao, thì tẹo nữa nói cho nghe :wink:

Quay trở lại, chúng ta đã biết muốn có nhiều dòng chuỗi kết hợp với nhau, ta sử dụng cặp dấu “”" hoặc ‘’’. Và đương nhiên, những thứ đặt trong cặp dấu ‘’’ hoặc “”" cũng là một chuỗi. Do đó, ta cũng có thể tạo ra chuỗi chỉ một dòng và chứa những kí tự ’ và " khác.

>>> """chuoi vua co ki tu ' va ki tu ", that vi dai""" # aaaawesome
'chuoi vua co ki tu \' va ki tu ", that vi dai'

Có thể, một trong số các bạn sẽ bất ngờ với kết quả. Vì sao lại vậy nhỉ? Lại một lần nữa, vấn đề này liên quan tới escape sequence. Mà mình nói rồi, tẹo nữa đã.
###Khái niệm Docstring
Thêm một nội dung liên quan đến cặp dấu ‘’’ và “”" nữa mình muốn giới thiệu với các bạn. Hai cặp dấu này thường không được sử dụng để tạo ra một chuỗi nhiều dòng, mà dùng để làm docstring. Một dạng chú thích nhiều dòng. Hay xuất hiện ở đầu một file Python, sau một dòng định nghĩa lớp, hàm. Và đây cũng là một trong những chuẩn quy ước về định dạng, trình bày code Python. Muốn biết thêm, hãy tham khảo PEP8 :heart:

'''
Đây là những dòng chú thích  đầu file
Về việc import các thư viên, module
'''
import lungtung
import taolao

def ham_vo_dung():
    '''
    Còn đây là docstring
    Cho một function
     Đó là ham_vo_dung
    '''
    pass


class vo_van:
    '''
    Class khong co gi dau
    That day
    '''
    pass

#Escape Sequence là gì?
Escape Sequence là một chuỗi (chính xác là kí tự) đặc biệt trong Python. Bắt đầu với một dấu .Python có rất nhiều các escape sequence.

Tuy nhiên, mình sẽ chỉ giới thiệu một số escape sequence mình hay sử dụng. Muốn tìm hiểu thêm hãy tham khảo Escape Sequence in Python :heart_decoration:

+----------------+---------+-------------------------------------+
|      Tên       | Kí hiệu | Giải thích                          |
+----------------+---------+-------------------------------------+
| Alert          |   \a    | Phát ra một tiếng bíp               |
+----------------+---------+-------------------------------------+
| Backspace      |   \b    | Đưa con trỏ về lại một khoảng trắng |
+----------------+---------+-------------------------------------+
| Newline        |   \n    | Đưa con trỏ xuống dòng tiếp theo    |
+----------------+---------+-------------------------------------+
| Horizontal tab |   \t    | In một horizontal tab               |
+----------------+---------+-------------------------------------+
| Single quote   |   \'    | In ra kí tự '                       |
+----------------+---------+-------------------------------------+
| Double quote   |   \"    | In ra kí tự "                       |
+----------------+---------+-------------------------------------+
| Blackslash     |   \\    | In ra kí tự \                       |
+----------------+---------+-------------------------------------+

Để múa vài chiêu với Escape Sequence cho các bạn xem. Nhớ là, nó phải được qua tay hàm print và hàm này chắc mai mốt mới có cơ hội giới thiệu.

>>> print('\a')  # bạn sẽ nghe thấy một tiếng bíp

>>> print('\a\a') # nhớ bật âm lượng cho máy tính của mình

>>> print('abcd\be')  # lùi con trỏ về trước 1 space, đè lên chữ d
abce
>>> print('dong 1\ndong 2')
dong 1
dong 2
>>> print('xuong dong\ndong moi\nthem mot dong moi')
xuong dong
dong moi
them mot dong moi
>>> print('abc\txyz')
abc    xyz
>>> print('\t\thello')
        hello
>>> print('I\'m Beginner')
I'm Beginner
>>> print("one thing \"special\", that’s it")
one thing "special", that's it
>>> print('Muon in dau \nay')   # bạn cũng nên cẩn thận, kết quả sẽ không như đợi đâu
Muon in dau 
ay
>>> print('Muon in dau \\nay') # đây mới ok nàh
Muon in dau \nay

#Câu hỏi

1, Những chuỗi nào sau đây là hợp lệ?

'nasdfiuqwnerp', "234a'adadf", """asd34'asdfjoaisdfadf"""", "\", """\""", ''

2, Sự khác nhau giữa hai biến a và b dưới đây là gì?

>>> a = 69
>>> b = '69'

3, Chỉ ra các Escape Sequence trong những giá trị sau đây

Chuỗi 1: '35\53ni34'
Chuỗi 2: '\\n'
Chuỗi 3: "\/\/\/\\/\/"

Đáp án
1, Các chuỗi hợp lệ là

'nasdfiuqwnerp', "234a'adadf",  ''

2,

>>> type(a)   # biến a thuộc lớp int vì là một số
<class 'int'>
>>> type(b)  # biến b thuộc lớp str vì là một chuỗi
<class 'str'>

3, Các Escape Sequence là

Chuỗi 1: không có
Chuỗi 2: '\\'
Chuỗi 3: '\\'

Link Video của HowKteam


#NEXT
7 - KIỂU DỮ LIỆU (LỚP) CHUỖI TRONG PYTHON - TIẾP THEO
#PREVIOUS
5 - KIỂU DỮ LIỆU (LỚP) SỐ TRONG PYTHON

5 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?