Danh sách đối số định dạng python

Kiểu định dạng này sẽ rất quen thuộc nếu bạn từng tiếp xúc với ngôn ngữ lập trình C. Please to come with a number ví dụ

>>> ‘My name is %s.’ %(‘Lucario’)
‘My name is Lucario’
>>> ‘%d. That is %s problem.’ %(1, ‘That’)
‘1. That is the problem.’

cú pháp

(giá trị thứ 1, giá trị thứ 2,. , value thứ n – 1, value thứ n)

Lưu ý

Are not have a `,` `parse string and section value to định dạng

Để hiểu rõ hơn cách hoạt động của định dạng này, mời các bạn xem hình sau

Danh sách đối số định dạng python

Với hình vẽ trên, bạn có thể dễ dàng biết được nó hoạt động như thế nào. Đó là từng phần ký hiệu %s sẽ lần lượt được thay thế bởi các giá trị nằm trong đơn vị dấu ngoặc (Đây là kiểu dữ liệu . KIỂU DỮ LIỆU TUPLE).

Add a number ví dụ minh họa

>>> s = ‘%s %s’
>>> s %(‘one’, ‘two’)
‘one two’
>>> s %(‘a’, ‘b’)
‘a b’
>>> c = s %(‘c’, ‘cc’)
>>> c
‘c cc’
>>> s %(‘D’)  # không được, vì trong chuỗi của biến d có dư kí hiệu % để thay thế
Traceback (most recent call last):
  File "", line 1, in 
TypeError: not enough arguments for format string
>>> d %(‘a’, ‘b’) # không thể, vì trong chuỗi của biến d không có đủ kí hiệu % để thay thế
Traceback (most recent call last):
  File "", line 1, in 
TypeError: not all arguments converted during string formatting

Nếu các bạn để ý trong các ví dụ. Kteam không chỉ sử dụng mỗi ký hiệu %s , mà còn có %d. Sự khác nhau giữa %s và %d là gì?

Kteam sẽ giải đáp cho bạn ngay sau đây

Dưới đây là một số thuật toán % cơ bản trong Python

Có thể bạn sẽ cảm thấy khó hiểu ở hai toán tử %s%r< . Mọi thứ trong Python đều là các đối tượng của một lớp nào đó. Do đó nó đều có các phương kích thước, thuộc tính riêng. Các đối tượng trong Python luôn có hai phương thức đó là. Mọi thứ trong Python đều là các đối tượng của một lớp nào đó. Do đó nó đều có các phương  thước, thuộc tính riêng. Các đối tượng trong Python luôn luôn có hai phương thức đó là __str__ __repr__.

Tuy các bạn chưa xúc động với hướng đối tượng bao giờ để hiểu được khái niệm này. Nhưng Kteam sẽ viết một lớp đơn giản để giải thích cho bạn hiểu sự khác biệt giữa %r%s . .

>>> class SomeThing:
…         def __repr__(self):
…                 return ‘Đây là __repr__'
…         def __str__(self):
…              return 'Đây là __str__'
…
>>> 

Vừa rồi, mình đã tạo một lớp với tên là SomeThing, giờ mình sẽ tạo một đối tượng thuộc lớp đó

>>> sthing = SomeThing()

Don't DNS Rối loạn. thật ra nó cũng là một giá trị bình thường thôi. Cũng giống như một chuỗi, một con số

>>> type(sthing)  # và nó thuộc lớp SomeThing

Và giờ, hãy xem giá trị của các đối tượng nhé

>>> sthing
Đây là __repr__
>>> print(sthing)
Đây là __str__

Nó có sự khác biệt. Và giờ, ta sẽ thấy sự khác biệt giữa %s và %r

>>> ‘%r’ %(sthing)
‘Đây là __repr__’
>>> ‘%s’ %(sthing)
‘Đây là __str__’

Đó là sự khác biệt giữa %s%r.  Đây là một thứ mà nhiều bạn học Python nhầm lẫn.

Nếu bạn từng học ngôn ngữ C thì bối rối %s is instead for a string, not enough precision.

  • %s instead for value of the method __str__ create nên đối tượng đó.
  • Còn về %r thì là phương thức __repr__.

Làm như vậy, bạn có thể sử dụng %s or %r với mọi đối tượng trong Python.

>>> ‘%s’ %(1)  # số
‘1’
>>> ‘%r’ %(1)
‘1’
>>> ‘%s’ %([1, 2, 3])  # kiểu dữ liệu list
‘[1, 2, 3]’
>>> ‘%r’ %([1, 2, 3])
‘[1, 2, 3]’
>>> ‘%s’ %((1, 2, 3)) # kiểu dữ liệu tuple
‘(1, 2, 3)’
>>> ‘%r’ %((1, 2, 3))
‘(1, 2, 3)’

Ở ký hiệu %d , nó đơn giản dễ hiểu hơn với hai ký hiệu ta vừa biết ở trên. Kí hiệu này chỉ thay thế cho một số.

________số 8

Như bạn thấy, %d không phù hợp với số thực, đó là lí do ta có %f

>>> ‘%f’ %(3.9)
'3.900000'
>>> ‘%f’ %(‘a’)  # %f cũng yêu cầu một số, ngoài ra đều là lỗi
Traceback (most recent call last):
  File "", line 1, in 
TypeError: must be real number, not str
>>> ‘%f’ %(3)
‘3.000000’
>>> ‘%.2f’ %(3.563545)  # chỉ lấy 2 số ở phần thập phân
‘3.56’
>>> ‘%.3f’ %(3.9999) # %f cũng có khả năng làm tròn
‘4.000’

Định dạng bằng chuỗi f (chuỗi f)

Phương pháp định dạng này cho bạn khả năng thay thế một số vị trí trong một chuỗi bằng giá trị của các biến mà bạn đã khởi động và có. Và để có thể sử dụng cách này, bạn phải có một chuỗi f

A string f will have cú pháp

giá trị trong chuỗi

Ví dụ

>>> s = ‘%s %s’
>>> s %(‘one’, ‘two’)
‘one two’
>>> s %(‘a’, ‘b’)
‘a b’
>>> c = s %(‘c’, ‘cc’)
>>> c
‘c cc’
>>> s %(‘D’)  # không được, vì trong chuỗi của biến d có dư kí hiệu % để thay thế
Traceback (most recent call last):
  File "", line 1, in 
TypeError: not enough arguments for format string
>>> d %(‘a’, ‘b’) # không thể, vì trong chuỗi của biến d không có đủ kí hiệu % để thay thế
Traceback (most recent call last):
  File "", line 1, in 
TypeError: not all arguments converted during string formatting
0

Nhưng nó sẽ khác, nếu bạn có một f-string theo kiểu này

>>> s = ‘%s %s’
>>> s %(‘one’, ‘two’)
‘one two’
>>> s %(‘a’, ‘b’)
‘a b’
>>> c = s %(‘c’, ‘cc’)
>>> c
‘c cc’
>>> s %(‘D’)  # không được, vì trong chuỗi của biến d có dư kí hiệu % để thay thế
Traceback (most recent call last):
  File "", line 1, in 
TypeError: not enough arguments for format string
>>> d %(‘a’, ‘b’) # không thể, vì trong chuỗi của biến d không có đủ kí hiệu % để thay thế
Traceback (most recent call last):
  File "", line 1, in 
TypeError: not all arguments converted during string formatting
1

Đúng rồi đấy, giá trị của biến biến được thay thế trong cặp trích dẫn chứa tên của nó. Nếu bạn biết PHP, bạn sẽ thấy cách này tương ứng với việc bạn sử dụng cặp dấu “” để định dạng

Mời các bạn xem hình ảnh minh họa sau đây

Dựa vào, khi bạn sử dụng chuỗi f, đặt biến giá trị chưa được khai báo hoặc có trong chương trình thì sao?

>>> s = ‘%s %s’
>>> s %(‘one’, ‘two’)
‘one two’
>>> s %(‘a’, ‘b’)
‘a b’
>>> c = s %(‘c’, ‘cc’)
>>> c
‘c cc’
>>> s %(‘D’)  # không được, vì trong chuỗi của biến d có dư kí hiệu % để thay thế
Traceback (most recent call last):
  File "", line 1, in 
TypeError: not enough arguments for format string
>>> d %(‘a’, ‘b’) # không thể, vì trong chuỗi của biến d không có đủ kí hiệu % để thay thế
Traceback (most recent call last):
  File "", line 1, in 
TypeError: not all arguments converted during string formatting
2

Điều này đặt ra cho bạn một vấn đề, nếu như bạn muốn có chuỗi với nội dung như sau

1. {one} , 2. {hai} , 3. {biến}

Và chỉ muốn định dạng mỗi vị trí {variable} thôi thì phải làm sao?

Cách giải quyết là hãy đặt thêm một dấu { kế bên {, còn với } là một dấu }. Tương tự như cách chúng ta muốn có một dấu \ mà để Python hiểu không phải là một ký tự bắt đầu ký tự trình tự thoát thì sẽ thêm một dấu .

>>> s = ‘%s %s’
>>> s %(‘one’, ‘two’)
‘one two’
>>> s %(‘a’, ‘b’)
‘a b’
>>> c = s %(‘c’, ‘cc’)
>>> c
‘c cc’
>>> s %(‘D’)  # không được, vì trong chuỗi của biến d có dư kí hiệu % để thay thế
Traceback (most recent call last):
  File "", line 1, in 
TypeError: not enough arguments for format string
>>> d %(‘a’, ‘b’) # không thể, vì trong chuỗi của biến d không có đủ kí hiệu % để thay thế
Traceback (most recent call last):
  File "", line 1, in 
TypeError: not all arguments converted during string formatting
3

Chóng ra, chuỗi f còn hỗ trợ một cách trong giá trị khá đặc biệt, cũng như hỗ trợ toán tử . =.

>>> s = ‘%s %s’
>>> s %(‘one’, ‘two’)
‘one two’
>>> s %(‘a’, ‘b’)
‘a b’
>>> c = s %(‘c’, ‘cc’)
>>> c
‘c cc’
>>> s %(‘D’)  # không được, vì trong chuỗi của biến d có dư kí hiệu % để thay thế
Traceback (most recent call last):
  File "", line 1, in 
TypeError: not enough arguments for format string
>>> d %(‘a’, ‘b’) # không thể, vì trong chuỗi của biến d không có đủ kí hiệu % để thay thế
Traceback (most recent call last):
  File "", line 1, in 
TypeError: not all arguments converted during string formatting
4

Định dạng bằng định dạng phương thức

Định dạng định dạng này cho phép Python định dạng chuỗi một cách tuyệt vời, không chỉ tốt về mặt nội dung mà còn về thẩm mỹ. Định dạng bằng định dạng phương thức

Đầu tiên là đơn giản nhất

>>> s = ‘%s %s’
>>> s %(‘one’, ‘two’)
‘one two’
>>> s %(‘a’, ‘b’)
‘a b’
>>> c = s %(‘c’, ‘cc’)
>>> c
‘c cc’
>>> s %(‘D’)  # không được, vì trong chuỗi của biến d có dư kí hiệu % để thay thế
Traceback (most recent call last):
  File "", line 1, in 
TypeError: not enough arguments for format string
>>> d %(‘a’, ‘b’) # không thể, vì trong chuỗi của biến d không có đủ kí hiệu % để thay thế
Traceback (most recent call last):
  File "", line 1, in 
TypeError: not all arguments converted during string formatting
5

Nếu chỉ tương ứng với toán tử %, phương thức này sẽ không có gì nổi bật. Do đó, hãy đến với ví dụ tiếp theo

>>> s = ‘%s %s’
>>> s %(‘one’, ‘two’)
‘one two’
>>> s %(‘a’, ‘b’)
‘a b’
>>> c = s %(‘c’, ‘cc’)
>>> c
‘c cc’
>>> s %(‘D’)  # không được, vì trong chuỗi của biến d có dư kí hiệu % để thay thế
Traceback (most recent call last):
  File "", line 1, in 
TypeError: not enough arguments for format string
>>> d %(‘a’, ‘b’) # không thể, vì trong chuỗi của biến d không có đủ kí hiệu % để thay thế
Traceback (most recent call last):
  File "", line 1, in 
TypeError: not all arguments converted during string formatting
6

Nếu vẫn còn mơ hồ, bạn hãy xem hình ảnh minh họa sau đây

Giá trị ở vị trí thứ nhất sẽ thay thế cho vị trí thứ nhất ở trong chuỗi .

Và với phương thức này, cũng không quá khó khăn trong việc đánh giá các giá trị bằng số nơi cần định dạng trong chuỗi. Ta có thể cho dư giá trị

>>> s = ‘%s %s’
>>> s %(‘one’, ‘two’)
‘one two’
>>> s %(‘a’, ‘b’)
‘a b’
>>> c = s %(‘c’, ‘cc’)
>>> c
‘c cc’
>>> s %(‘D’)  # không được, vì trong chuỗi của biến d có dư kí hiệu % để thay thế
Traceback (most recent call last):
  File "", line 1, in 
TypeError: not enough arguments for format string
>>> d %(‘a’, ‘b’) # không thể, vì trong chuỗi của biến d không có đủ kí hiệu % để thay thế
Traceback (most recent call last):
  File "", line 1, in 
TypeError: not all arguments converted during string formatting
7

Vẫn chưa đủ điều kiện, vì các vị trí đánh số vẫn chưa đủ rõ ràng, và bạn có khả năng bị nhầm lẫn. The method format is your own

>>> s = ‘%s %s’
>>> s %(‘one’, ‘two’)
‘one two’
>>> s %(‘a’, ‘b’)
‘a b’
>>> c = s %(‘c’, ‘cc’)
>>> c
‘c cc’
>>> s %(‘D’)  # không được, vì trong chuỗi của biến d có dư kí hiệu % để thay thế
Traceback (most recent call last):
  File "", line 1, in 
TypeError: not enough arguments for format string
>>> d %(‘a’, ‘b’) # không thể, vì trong chuỗi của biến d không có đủ kí hiệu % để thay thế
Traceback (most recent call last):
  File "", line 1, in 
TypeError: not all arguments converted during string formatting
8

Như đã nói, không chỉ định dạng về nội dung, mà nó còn giúp tăng tính thẩm mỹ. Cụ thể là phương thức này giúp bạn định dạng căn lề một cách tuyệt vời. Cách này khá tương đồng với việc sử dụng f-string đúng sai nào?

Dưới đây là 3 cách căn lề cơ bản của định dạng phương thức

  • c là ký tự bạn muốn thay thế vào chỗ trống, nếu để trống thì sẽ là ký tự khoảng trống
  • n là số ký tự sử dụng để căn lề.

Để hiểu rõ hơn hãy đến với ví dụ

>>> s = ‘%s %s’
>>> s %(‘one’, ‘two’)
‘one two’
>>> s %(‘a’, ‘b’)
‘a b’
>>> c = s %(‘c’, ‘cc’)
>>> c
‘c cc’
>>> s %(‘D’)  # không được, vì trong chuỗi của biến d có dư kí hiệu % để thay thế
Traceback (most recent call last):
  File "", line 1, in 
TypeError: not enough arguments for format string
>>> d %(‘a’, ‘b’) # không thể, vì trong chuỗi của biến d không có đủ kí hiệu % để thay thế
Traceback (most recent call last):
  File "", line 1, in 
TypeError: not all arguments converted during string formatting
9

Nhờ công việc căn lề bằng phương thức này, bạn sẽ dễ dàng hơn để có thể cho kết quả đẹp mắt của bạn

Ví dụ*. Please create a Python file with after content.

>>> class SomeThing:
…         def __repr__(self):
…                 return ‘Đây là __repr__'
…         def __str__(self):
…              return 'Đây là __str__'
…
>>> 
0

Khi chạy file Python đó, bạn sẽ có kết quả là


Củng cố bài học

Giải thích cho bài viết trước

Bạn có thể tìm thấy câu hỏi của phần này tại CÂU HỎI CỦNG CỐ trong bài Kiển khai kiến ​​trúc CHUỔI TRONG PYTHON – Phần 2

  1. Có tổng cộng 6 chuỗi thoát. Và 6 chuỗi thoát này là `\\`
>>> class SomeThing:
…         def __repr__(self):
…                 return ‘Đây là __repr__'
…         def __str__(self):
…              return 'Đây là __str__'
…
>>> 
1
  1. Value is null string (`’’`)
  2. Các phép cắt có kết quả là một chuỗi rỗng là b, c, e

Câu hỏi củng cố

Bằng kiến ​​thức về chuỗi dữ liệu của bạn. Please doing compact code at ví dụ * hết mức có thể.

Giải thích của phần này sẽ được trình bày ở bài tiếp theo. Tuy nhiên, Kteam khuyến khích bạn tự trả lời các câu hỏi để củng cố kiến ​​thức cũng như thực hiện một cách tốt nhất.    


Kết luận

Sau khi kết thúc bài viết này, bạn đã biết phần nào liên quan đến ĐỊNH DẠNG CHUỖI TRÊN PYTHON. Và nhờ đó có thể tự định dạng nội dung của mình một cách đẹp nhất

Ở bài viết sau, Kteam sẽ giới thiệu cho bạn về CÁC PHƯƠNG THỨC CỦA KIỂU DẪN CHUỖI

Cảm ơn bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc đóng góp ý kiến ​​của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không sợ khó”


Thảo luận

Nếu bạn gặp bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngại đặt câu hỏi trong phần bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam. com to get the support from the community