Sự khác biệt giữa %d và %s trong python là gì?

Hướng dẫn giải thích sự khác biệt giữa %s%d trong định dạng chuỗi Python. Trước tiên, chúng tôi sẽ mô tả cách sử dụng riêng biệt của %s%d, sau đó so sánh cách sử dụng của cả hai toán tử. Hướng dẫn cung cấp các ví dụ chi tiết kèm theo mã để nêu rõ cách sử dụng và sự khác biệt giữa %s%d trong Python

Toán tử %d được sử dụng làm chuỗi định dạng trong Python. Nó là một trình giữ chỗ cho một số nguyên. Giá trị được liên kết với %d được cung cấp trong một bộ sử dụng

area = 24.6
print("The area of this plot is %d sq meter." %area)
3 hoặc toán tử modulo. Cần duy trì thứ tự của các giá trị được in. Tuy nhiên, nếu phiên bản Python là 3, thì câu lệnh in sẽ được đặt trong ngoặc đơn;

Một mã ví dụ được đưa ra bên dưới để minh họa thêm cách sử dụng %d trong Python

age = 10
print ("John Doe is %d years old" %age)

đầu ra

Tuy nhiên, trong trường hợp số dấu phẩy động, toán tử %d sẽ tự động chuyển đổi chúng thành giá trị thập phân. Một mã ví dụ được đưa ra dưới đây

area = 24.6
print("The area of this plot is %d sq meter." %area)

đầu ra

The area of this plot is 24 sq meter.

%s trong định dạng chuỗi Python

Trong Python,

area = 24.6
print("The area of this plot is %d sq meter." %area)
3 được sử dụng với các loại dữ liệu khác nhau cho các mục đích khác nhau. %s được sử dụng làm trình giữ chỗ cho các giá trị chuỗi. Tuy nhiên, nó được sử dụng đặc biệt cho mục đích nối chuỗi. Trình định dạng chuỗi có thể lấy bất kỳ giá trị nào và đặt nó bên trong chuỗi với chuyển đổi kiểu tự động. Nó có thể được sử dụng để nối nhiều giá trị vào một chuỗi. Một mã ví dụ được đưa ra dưới đây để làm sáng tỏ việc sử dụng %s trong Python

Python sử dụng định dạng chuỗi kiểu C để tạo các chuỗi mới, được định dạng. Toán tử "%" được sử dụng để định dạng một tập hợp các biến được đặt trong một "tuple" (danh sách kích thước cố định), cùng với một chuỗi định dạng, chứa văn bản bình thường cùng với "chỉ định đối số", các ký hiệu đặc biệt như "%s"

Giả sử bạn có một biến gọi là "tên" với tên người dùng của bạn trong đó, và sau đó bạn muốn in (ra một lời chào tới người dùng đó. )

# This prints out "Hello, John!"
name = "John"
print("Hello, %s!" % name)

Để sử dụng hai hoặc nhiều trình xác định đối số, hãy sử dụng một bộ (dấu ngoặc đơn)

# This prints out "John is 23 years old."
name = "John"
age = 23
print("%s is %d years old." % (name, age))

Bất kỳ đối tượng nào không phải là chuỗi cũng có thể được định dạng bằng toán tử %s. Chuỗi trả về từ phương thức "repr" của đối tượng đó được định dạng là chuỗi. Ví dụ

# This prints out: A list: [1, 2, 3]
mylist = [1,2,3]
print("A list: %s" % mylist)

Dưới đây là một số thông số đối số cơ bản bạn nên biết

%s - String (or any object with a string representation, like numbers)

%d - Integers

%f - Floating point numbers

%.f - Floating point numbers with a fixed amount of digits to the right of the dot.

%x/%X - Integers in hex representation (lowercase/uppercase)

Bài tập

Bạn sẽ cần viết một chuỗi định dạng in ra dữ liệu bằng cú pháp sau. Hello John Doe. Your current balance is $53.44.

In ra một chuỗi cố định như “Xin chào thế giới” rất đơn giản, nhưng thường không có giá trị lắm. Các chương trình Python hữu ích sử dụng phép nội suy chuỗi — nghĩa là chúng bao gồm các giá trị của một hoặc nhiều biến trong đầu ra của chúng

Định dạng chuỗi là cách tiếp cận tiêu chuẩn để in ra các chuỗi chứa các giá trị từ một chương trình một cách an toàn và thuận tiện. Trong bài viết này, chúng tôi khám phá định dạng chuỗi Python và hiển thị các ví dụ về cách nó được thực hiện trong các chương trình Python

Định dạng chuỗi là gì?

Định dạng chuỗi liên quan đến việc lấy một tập hợp các biến và sử dụng một biểu thức, định dạng chúng thành một chuỗi được cung cấp có chứa các trình giữ chỗ cho các biến đó. Python sử dụng hai kiểu định dạng chuỗi khác nhau. kiểu Python 2 cũ hơn dựa trên toán tử modulo (%) và kiểu Python 3 mới hơn sử dụng dấu ngoặc nhọn và dấu hai chấm

Định dạng chuỗi tiêu chuẩn của Python sử dụng toán tử modulo (dấu phần trăm) làm ký hiệu đặc biệt để biểu thị các loại định dạng khác nhau. Có mức độ tương đồng cao giữa toán tử % và hàm chuỗi định dạng printf trong ngôn ngữ lập trình C

Đây là một ví dụ về định dạng chuỗi Python

Sự khác biệt giữa %d và %s trong python là gì?
Sự khác biệt giữa %d và %s trong python là gì?

Các giá trị %d và %s ở đây đóng vai trò là từ khóa để chỉ ra vị trí cần đặt các biến sau toán tử %

Bây giờ chúng ta sẽ đề cập đến cách sử dụng các từ xác định đối số, chẳng hạn như %s và %d từ ví dụ trên. Mặc dù chúng tôi sẽ đặc biệt tập trung vào việc chuyển đổi chuỗi và số, nhưng bạn sẽ cần đọc phần định dạng để có thêm thông tin chuyên sâu về các toán tử modulo chuỗi và các loại chuyển đổi

Các phương pháp hay nhất để sử dụng %s và %d trong Python

Các chỉ định chuyển đổi như %s và %d xuất hiện trong chuỗi định dạng dưới dạng "phần giữ chỗ" cùng với văn bản thông thường. Các chỉ định này chỉ ra cách hoạt động sẽ định dạng các giá trị được chèn.  

Bây giờ, hãy xem lại ví dụ đầu tiên mà chúng ta đã xem xét, lần này tập trung vào các chỉ định chuyển đổi trong chuỗi định dạng — trong trường hợp này là %d và %s

Sự khác biệt giữa %d và %s trong python là gì?
Sự khác biệt giữa %d và %s trong python là gì?

Khi kiểm tra dòng đầu tiên, bạn sẽ nhận thấy rằng %d trong chuỗi định dạng tương ứng với một số trong bộ dữ liệu, trong khi các từ xác định %s sau đây tương ứng với các giá trị chuỗi trong bộ dữ liệu. Các câu lệnh như %s và %d được gọi là các loại chuyển đổi hoặc các dấu hiệu cho phép toán tử biết loại giá trị mong đợi trong bộ dữ liệu.  

While a conversion specifier’s basic structure looks like %, it can also contain any of the components referred to as flags, width and precision:

Sự khác biệt giữa %d và %s trong python là gì?
Sự khác biệt giữa %d và %s trong python là gì?

Các thành phần này cho phép kiểm soát tốt hơn việc hiển thị các loại chuyển đổi nhất định, nhưng vẫn là tùy chọn. Chỉ ký hiệu modulo và loại chuyển đổi là bắt buộc. Mặc dù có thể tìm thấy chi tiết về nhiều loại chuyển đổi khác nhau trong phần này, nhưng chúng tôi sẽ chỉ tập trung vào hai loại chuyển đổi phổ biến. %s và %d

Cách sử dụng %s

Có ba loại định dạng trong Python liên quan đến chuỗi. Trong khi s, r và a tạo đầu ra chuỗi bằng cách sử dụng các hàm tích hợp và tương ứng, s cho đến nay được gọi nhiều nhất. Trên thực tế, hầu như bạn sẽ luôn sử dụng python s khi chèn một chuỗi

Sự khác biệt giữa %d và %s trong python là gì?
Sự khác biệt giữa %d và %s trong python là gì?

Về cơ bản, %s yêu cầu trình định dạng gọi hàm str() trên đối số để thực hiện str(arg) về cơ bản

Khi sử dụng nhiều thay thế — chuỗi hoặc cách khác — trong một bộ, điều quan trọng cần nhớ là vị trí của các chuỗi trong bộ sẽ ảnh hưởng đến vị trí chúng sẽ được chèn vào. Ví dụ: nếu chúng ta chuyển đổi xung quanh các chuỗi trong bộ mẫu của mình, chúng ta sẽ nhận được đầu ra không có ý nghĩa

Sự khác biệt giữa %d và %s trong python là gì?
Sự khác biệt giữa %d và %s trong python là gì?

Bạn cũng có thể lưu một chuỗi vào một biến và sử dụng tên biến đó trong bộ

Sự khác biệt giữa %d và %s trong python là gì?
Sự khác biệt giữa %d và %s trong python là gì?

Lưu ý cách không có tuple trong ví dụ trên; . Nhớ lại rằng toán tử modulo chỉ nhận một đối số. Nó thường ở dạng một bộ, nhưng nếu bạn chỉ có một phép thay thế, thì biến đơn lẻ đó có thể đóng vai trò là đối số

Cách sử dụng %d

Khi bạn cần chuyển đổi một số, rất có thể bạn sẽ sử dụng %d. Chữ thập phân. Cũng như chuỗi, có một số loại biểu thị số. d, i và u có chức năng tương đương. Tất cả chúng đều chuyển đổi đối số đã chỉ định thành biểu diễn chuỗi của giá trị số hoặc thập phân, giúp bạn không phải truyền str(int(arg))

Sự khác biệt giữa %d và %s trong python là gì?
Sự khác biệt giữa %d và %s trong python là gì?

Trong ba loại, hầu như bạn sẽ luôn sử dụng %d để truyền số dưới dạng chuỗi trong định dạng chuỗi Python. Sự khác biệt kỹ thuật giữa %s và %d đơn giản là %d gọi int() trên đối số trước khi gọi str()

Tất nhiên, bạn không thể gọi int()  trên một chuỗi hoặc bất kỳ thứ gì khác ngoài một số. Vì vậy, nếu bạn sử dụng nhiều loại trong hoạt động của mình nhưng trộn lẫn thứ tự của bộ dữ liệu, thì bạn sẽ tạo ra một ngoại lệ

Sự khác biệt giữa %d và %s trong python là gì?
Sự khác biệt giữa %d và %s trong python là gì?

Điều này sẽ không in 'Hawaii đã đi đến 7 con dê', nhưng thay vào đó sẽ dẫn đến lỗi. Điều này là do Python nhận ra rằng 'Hawaii' không phải là một số

Các kịch bản sử dụng khác cho %s và %d

Bây giờ, hãy xem xét các chuyển đổi phức tạp hơn cho cả %s và %d bằng cách sử dụng từ điển

Hãy nhớ thứ tự trong bộ quan trọng như thế nào khi chuyển một số giá trị vào chuỗi định dạng của bạn? . Nếu muốn sử dụng từ điển để theo dõi các biến, bạn có thể chuyển ánh xạ tới toán tử làm đối số của nó và sử dụng thay thế biến theo tên trong chuỗi định dạng của bạn

Sự khác biệt giữa %d và %s trong python là gì?
Sự khác biệt giữa %d và %s trong python là gì?

Lưu ý cách ký hiệu modulo đứng trước một trình xác định chuyển đổi là một trong các khóa từ điển trong ngoặc đơn. Tên khóa này lần lượt theo sau là loại chuyển đổi. Sử dụng kỹ thuật này, bạn có thể chỉ định các giá trị được chèn theo thứ tự bất kỳ

Sự khác biệt giữa %d và %s trong python là gì?
Sự khác biệt giữa %d và %s trong python là gì?

Bây giờ chúng ta đã hiểu rõ về các định dạng chuỗi Python bằng cách sử dụng toán tử modulo, hãy cùng xem xét một số lỗi phổ biến và cách chúng ta có thể tránh chúng

Các lỗi thường gặp khi sử dụng %s và %d

Một loạt lỗi phổ biến có thể xảy ra khi sử dụng %s. Chúng ta đã xem xét việc xáo trộn thứ tự các giá trị trong các bộ dữ liệu có thể gây ra các ngoại lệ do sự không tương thích về kiểu dữ liệu như thế nào, nhưng có những sự kết hợp khác liên quan đến bộ dữ liệu và từ điển có thể tạo ra lỗi. Chúng thường liên quan đến các vấn đề về độ dài trong bộ dữ liệu và các biến bị đặt tên sai trong từ điển

Những lỗi phổ biến này, cùng với các lựa chọn thay thế định dạng chuỗi mới hơn, đã khiến Python không chú trọng đến “kiểu cũ” của định dạng modulo, mặc dù nó vẫn được hỗ trợ bởi các phiên bản mới nhất của Python và đó sẽ là trường hợp trong tương lai gần.  

Ngay cả khi bạn thích toán tử modulo hơn, bạn nên biết về các tùy chọn khác theo ý của mình để tránh lỗi

F-String

Trăn 3. 6 đã giới thiệu một định dạng chuỗi Python mới được gọi là hoặc f-strings. Một chuỗi f giống như một chuỗi lưu thông thường cho hai tính năng. nó được thêm vào trước bởi ký tự f và sử dụng các biểu thức kèm theo — nghĩa là các biến trong dấu ngoặc nhọn sẽ được thay thế ở đầu ra

Sự khác biệt giữa %d và %s trong python là gì?
Sự khác biệt giữa %d và %s trong python là gì?

Khi chạy, biểu thức được chuyển đổi thành biểu diễn chuỗi và được chèn vào chuỗi gốc ở vị trí đó

str. định dạng()

Hàm này đại diện cho “kiểu mới” của định dạng chuỗi. Sử dụng phương pháp này, tạo định dạng mong muốn

Sự khác biệt giữa %d và %s trong python là gì?
Sự khác biệt giữa %d và %s trong python là gì?

Sử dụng chức năng định dạng trở nên phức tạp;

Sự khác biệt giữa %d và %s trong python là gì?
Sự khác biệt giữa %d và %s trong python là gì?

Có một số khác biệt giữa một số Python. format() các kiểu trình bày và các kiểu chuyển đổi toán tử modulo chuỗi, nhưng quá nhỏ so với phạm vi của bài viết này

Tìm hiểu thêm

Trong bài viết này, chúng ta đã xem xét tầm quan trọng của định dạng chuỗi, cũng như cách sử dụng toán tử modulo và các phương pháp hay nhất để sử dụng các loại chuyển đổi %s và %d. Chúng tôi cũng đề cập đến các phương pháp định dạng chuỗi mới hơn mà các nhà phát triển Python có sẵn.  

Định dạng chuỗi chỉ là một kỹ năng phức tạp nhưng bổ ích mà bạn cần thành thạo với tư cách là một lập trình viên Python. Với rất nhiều thông tin có giá trị và hướng dẫn đẳng cấp thế giới có sẵn trực tuyến, không có lý do gì để bạn tụt lại phía sau. Trong khóa học của chúng tôi về Giới thiệu về lập trình, chúng tôi đề cập đến định dạng chuỗi và nhiều công cụ khác mà bạn sẽ cần để phát triển trong thế giới Python

%d %s trong Python là gì?

%s được sử dụng làm trình giữ chỗ cho các giá trị chuỗi mà bạn muốn đưa vào một chuỗi được định dạng. %d được sử dụng làm trình giữ chỗ cho các giá trị số hoặc thập phân. Ví dụ (đối với python 3) print ('%s is %d years old' % ('Joe', 42)) Sẽ xuất ra Joe là 42 tuổi

Sự khác biệt giữa %d và %i trong Python là gì?

Đây là những gì con trăn. org phải nói về %i. Số thập phân có dấu. Và %d. Số thập phân có dấu. %d là số thập phân và %i là số nguyên. nhưng cả hai đều giống nhau, bạn có thể sử dụng cả hai

Sự khác biệt giữa %R và %S trong Python là gì?

Sự khác biệt giữa %s và %r là %s sử dụng hàm str và %r sử dụng hàm repr . Bạn có thể đọc về sự khác biệt giữa str và repr trong câu trả lời này, nhưng đối với các loại tích hợp sẵn, sự khác biệt lớn nhất trong thực tế là repr cho chuỗi bao gồm dấu ngoặc kép và tất cả các ký tự đặc biệt đều được thoát.

%f %d %s là gì?

%s đề cập đến kiểu dữ liệu chuỗi, %f đề cập đến kiểu dữ liệu float và %d đề cập đến kiểu dữ liệu kép .