Hướng dẫn format list output python - định dạng danh sách đầu ra python
Như các câu trả lời khác đã đề cập, 0 là một mô -đun tuyệt vời sẽ làm những gì bạn muốn. Tuy nhiên, nếu bạn không muốn nhập nó và chỉ muốn in đầu ra gỡ lỗi trong quá trình phát triển, bạn có thể xấp xỉ đầu ra của nó. Show
Một số câu trả lời khác hoạt động tốt cho các chuỗi, nhưng nếu bạn thử chúng với một đối tượng lớp, nó sẽ cung cấp cho bạn lỗi 1.Đối với các đối tượng phức tạp hơn, hãy đảm bảo lớp có phương thức 2 in thông tin thuộc tính bạn muốn:
Và sau đó khi bạn muốn in đầu ra, chỉ cần ánh xạ danh sách của bạn vào chức năng 3 như thế này:
outputs:
Bạn cũng có thể làm những việc như ghi đè phương thức 2 của 5 để có được một hình thức in đẹp được lồng nhau:
cho
Thật không may, không có vết lõm cấp hai nhưng để gỡ lỗi nhanh, nó có thể hữu ích. Nếu bạn thấy bạn cần sử dụng cùng một loại dấu ngoặc kép ở cả bên trong và bên ngoài chuỗi, thì bạn có thể thoát với >>> first_name = "Eric" >>> last_name = "Idle" >>> age = 74 >>> profession = "comedian" >>> affiliation = "Monty Python" >>> print(("Hello, {first_name} {last_name}. You are {age}. " + >>> "You are a {profession}. You were a member of {affiliation}.") \ >>> .format(first_name=first_name, last_name=last_name, age=age, \ >>> profession=profession, affiliation=affiliation)) 'Hello, Eric Idle. You are 74. You are a comedian. You were a member of Monty Python.' 5: 5.Từ điểnShow
Định dạng chuỗi ()Phương thức 5 cho phép bạn định dạng các phần đã chọn của chuỗi.Đôi khi có những phần của một văn bản mà bạn không kiểm soát, có thể chúng đến từ cơ sở dữ liệu hoặc đầu vào của người dùng? Để kiểm soát các giá trị như vậy, hãy thêm trình giữ chỗ (dấu ngoặc xoăn 7) vào văn bản và chạy các giá trị thông qua phương thức 5:Thí dụThêm một trình giữ chỗ nơi bạn muốn hiển thị giá: Giá = 49TXT = "Giá là {} đô la" in (txt.format (giá))txt = "The price is {} dollars"print(txt.format(price)) Hãy tự mình thử » Bạn có thể thêm các tham số bên trong dấu ngoặc xoăn để chỉ định cách chuyển đổi giá trị: Thí dụThêm một trình giữ chỗ nơi bạn muốn hiển thị giá: Giá = 49TXT = "Giá là {} đô la" in (txt.format (giá))txt = "The price is {} dollars"print(txt.format(price)) Hãy tự mình thử » Bạn có thể thêm các tham số bên trong dấu ngoặc xoăn để chỉ định cách chuyển đổi giá trị: Giá = 49TXT = "Giá là {} đô la" in (txt.format (giá))Định dạng giá được hiển thị dưới dạng một số với hai số thập phân: txt = "giá là {: .2f} đô la" Kiểm tra tất cả các loại định dạng trong tham chiếu String () của chúng tôi. Thí dụThêm một trình giữ chỗ nơi bạn muốn hiển thị giá: Hãy tự mình thử » Bạn có thể thêm các tham số bên trong dấu ngoặc xoăn để chỉ định cách chuyển đổi giá trị:Giá = 49TXT = "Giá là {} đô la" in (txt.format (giá)) Thí dụThêm một trình giữ chỗ nơi bạn muốn hiển thị giá: Hãy tự mình thử » Bạn có thể thêm các tham số bên trong dấu ngoặc xoăn để chỉ định cách chuyển đổi giá trị: Thí dụThêm một trình giữ chỗ nơi bạn muốn hiển thị giá: Hãy tự mình thử » Bạn có thể thêm các tham số bên trong dấu ngoặc xoăn để chỉ định cách chuyển đổi giá trị:Giá = 49TXT = "Giá là {} đô la" in (txt.format (giá)) Thí dụThêm một trình giữ chỗ nơi bạn muốn hiển thị giá: Hãy tự mình thử » Bạn có thể thêm các tham số bên trong dấu ngoặc xoăn để chỉ định cách chuyển đổi giá trị:Giá = 49TXT = "Giá là {} đô la" in (txt.format (giá)) Nhưng chúng ta có thể kết hợp các chuỗi và số bằng cách sử dụng phương pháp 5!Phương pháp 5 lấy các đối số được thông qua, định dạng chúng và đặt chúng vào chuỗi nơi các giữ chỗ 7 là:Thí dụSử dụng phương thức 5 để chèn số vào chuỗi: AGE = 36TXT = "Tên tôi là John và tôi là {}" in (txt.format (tuổi))txt = "My name is John, and I am {}"print(txt.format(age)) Hãy tự mình thử » Phương thức định dạng () có số lượng đối số không giới hạn và được đặt vào các khoản giữ chỗ tương ứng: Thí dụSử dụng phương thức 5 để chèn số vào chuỗi:itemno = 567 price = 49.95 myorder = "I want {} pieces of item {} for {} dollars." print(myorder.format(quantity, itemno, price)) Hãy tự mình thử » Phương thức định dạng () có số lượng đối số không giới hạn và được đặt vào các khoản giữ chỗ tương ứng: Thí dụSử dụng phương thức 5 để chèn số vào chuỗi:itemno = 567 price = 49.95 myorder = "I want to pay {2} dollars for {0} pieces of item {1}." print(myorder.format(quantity, itemno, price)) Hãy tự mình thử » Phương thức định dạng () có số lượng đối số không giới hạn và được đặt vào các khoản giữ chỗ tương ứng: 5 để chèn số vào chuỗi:itemno = 567price = 49.95myorder = "I want {} pieces of item {} for {} dollars."print(myorder.format(quantity, itemno, price)) 5 để chèn số vào chuỗi:itemno = 567price = 49.95myorder = "I want to pay {2} dollars for {0} pieces of item {1}."print(myorder.format(quantity, itemno, price)) Show
Theo Zen of Python, khi bạn cần quyết định cách làm một cái gì đó, thì ở đây, ở đây sẽ là một cách và tốt nhất là chỉ có một cách để làm điều đó. Mặc dù các chuỗi F không phải là cách duy nhất có thể để bạn định dạng chuỗi, nhưng chúng ở một vị trí tuyệt vời để trở thành một cách rõ ràng để hoàn thành công việc.Đọc thêmShow Nếu bạn muốn đọc một cuộc thảo luận mở rộng về nội suy chuỗi, hãy xem PEP 502. Ngoài ra, bản nháp PEP 536 có thêm một số suy nghĩ về tương lai của F-String. Để có thêm niềm vui với chuỗi, hãy xem các bài viết sau:Chuỗi Python định dạng các thực tiễn tốt nhất của Dan Bader Đọc thêmShow
Định nghĩa và cách sử dụngThí dụGiá trị tham số Nhiều ví dụ hơn Hãy tự mình thử » Giới thiệu thực tế về việc quét web trong Python của Colin Okeefe Happy Pythoning! Thí dụGiá trị tham số Nhiều ví dụ hơn Hãy tự mình thử » print(x) Hãy tự mình thử » Giới thiệu thực tế về việc quét web trong Python của Colin OkeefeHappy Pythoning! ❮ Chức năng tích hợp sẵnNội phân Chính show Định nghĩa và cách sử dụng
Nhiều ví dụ hơnThí dụIn hai tin nhắn và chỉ định dấu phân cách: in ("Xin chào", "Bạn khỏe không?", sep = "---") Hãy tự mình thử » ❮ Chức năng tích hợp sẵn Hãy tự mình thử » Thí dụIn hai tin nhắn và chỉ định dấu phân cách: in ("Xin chào", "Bạn khỏe không?", sep = "---") Hãy tự mình thử » ❮ Chức năng tích hợp sẵn Hãy tự mình thử » ❮ Chức năng tích hợp sẵn Phương thức chuỗiKiểm tra xem chuỗi kết thúc bằng dấu chấm câu (.): TXT = "Xin chào, Chào mừng bạn đến với thế giới của tôi." x = txt.endswith (".")Định nghĩa và cách sử dụng Phương thứcThí dụIn hai tin nhắn và chỉ định dấu phân cách: in ("Xin chào", "Bạn khỏe không?", sep = "---") Hãy tự mình thử » random.shuffle(arr) print(arr) Hãy tự mình thử » ❮ Chức năng tích hợp sẵn ❮ Chức năng tích hợp sẵnThí dụIn hai tin nhắn và chỉ định dấu phân cách: in ("Xin chào", "Bạn khỏe không?", sep = "---") Hãy tự mình thử » ❮ Chức năng tích hợp sẵn Hãy tự mình thử » ❮ Chức năng tích hợp sẵn ❮ Chức năng tích hợp sẵnPhương thức chuỗi Kiểm tra xem chuỗi kết thúc bằng dấu chấm câu (.):
Kiểm tra xem chuỗi kết thúc bằng dấu chấm câu (.):
Phương thức chuỗiKiểm tra xem chuỗi kết thúc bằng dấu chấm câu (.): TXT = "Xin chào, Chào mừng bạn đến với thế giới của tôi." x = txt.endswith (".") Kiểm tra xem chuỗi kết thúc bằng dấu chấm câu (.):TXT = "Xin chào, Chào mừng bạn đến với thế giới của tôi." Thí dụx = txt.endswith (".") Hãy tự mình thử » ❮ Chức năng tích hợp sẵn TXT = "Xin chào, Chào mừng bạn đến với thế giới của tôi."x = txt.endswith (".") TXT = "Xin chào, Chào mừng bạn đến với thế giới của tôi." x = txt.endswith (".")Định nghĩa và cách sử dụng Phương thứcCú pháp String.endswith (giá trị, bắt đầu, kết thúc) Phương thức >>> "Hello, {}. You are {}.".format(name, age) 'Hello, Eric. You are 74.' 8 trả về true nếu chuỗi kết thúc bằng giá trị được chỉ định, nếu không thì sai.Cú phápExercise:String.endswith (giá trị, bắt đầu, kết thúc) 6Phương thức >>> "Hello, {}. You are {}.".format(name, age) 'Hello, Eric. You are 74.' 8 trả về true nếu chuỗi kết thúc bằng giá trị được chỉ định, nếu không thì sai. Giá trị tham sốVí dụ về Python Tìm hiểu bằng ví dụ! Hướng dẫn này bổ sung tất cả các giải thích với các ví dụ làm rõ. Xem tất cả các ví dụ PythonCâu đố Python Xem tất cả các ví dụ Python Câu đố PythonKiểm tra kỹ năng Python của bạn với một bài kiểm tra. Việc học của tôi Theo dõi tiến trình của bạn với chương trình "Học tập" miễn phí tại đây tại W3Schools. Đăng nhập vào tài khoản của bạn và bắt đầu kiếm điểm!Đây là một tính năng tùy chọn, bạn có thể học W3Schools mà không cần sử dụng việc học của tôi. Tham khảo Python Bạn cũng sẽ tìm thấy các tài liệu tham khảo chức năng và phương thức hoàn chỉnh: Tổng quan tham khảo Chức năng tích hợp sẵn Phương thức chuỗi Phương pháp danh sách/mảng Phương pháp từ điển Phương pháp tuple Đặt phương pháp Phương pháp tập tin Từ khóa Python Ngoại lệ Python Thuật ngữ Python Mô -đun ngẫu nhiên Mô -đun yêu cầu Mô -đun toán họcMô -đun CMATH Tải xuống PythonTải xuống Python từ trang web Python chính thức: https://python.orgthe course Khởi động sự nghiệp của bạnthe course Được chứng nhận bằng cách hoàn thành khóa họcĐược chứng nhận W3SchoolScertified.2022❮ nhà tiếp theo ❯ XPath là gì?
XPath là một yếu tố chính trong tiêu chuẩn XSLTXPath là một khuyến nghị của W3C Biểu thức đường dẫn XPath XPath sử dụng các biểu thức đường dẫn để chọn các nút hoặc bộ nút trong tài liệu XML.Các biểu thức đường dẫn này trông rất giống các biểu thức đường dẫn bạn sử dụng với các hệ thống tệp máy tính truyền thống: Chức năng tiêu chuẩn XPath XPath bao gồm hơn 200 chức năng tích hợp. Có các hàm cho các giá trị chuỗi, giá trị số, booleans, so sánh ngày và thời gian, thao tác nút, thao tác trình tự, và nhiều hơn nữa.❮ nhà tiếp theo ❯ XPath là gì? XPath là một yếu tố chính trong tiêu chuẩn XSLT.XPath có thể được sử dụng để điều hướng qua các phần tử và thuộc tính trong tài liệu XML. XPath là viết tắt của ngôn ngữ đường dẫn XML XPath sử dụng cú pháp "đường dẫn như" để xác định và điều hướng các nút trong tài liệu XML XPath chứa hơn 200 chức năng tích hợp XPath là một yếu tố chính trong tiêu chuẩn XSLT XPath là một khuyến nghị của W3C Biểu thức đường dẫn XPathXPath sử dụng các biểu thức đường dẫn để chọn các nút hoặc bộ nút trong tài liệu XML. Các biểu thức đường dẫn này trông rất giống các biểu thức đường dẫn bạn sử dụng với các hệ thống tệp máy tính truyền thống:Chức năng tiêu chuẩn XPath
Ngày nay, các biểu thức XPath cũng có thể được sử dụng trong JavaScript, Java, Lược đồ XML, PHP, Python, C và C ++ và rất nhiều ngôn ngữ khác.XPath được sử dụng trong XSLT XPath là một yếu tố chính trong tiêu chuẩn XSLT 7XPath là một khuyến nghị của W3C XPath là một yếu tố chính trong tiêu chuẩn XSLT 8XPath là một khuyến nghị của W3CBiểu thức đường dẫn XPath XPath là một yếu tố chính trong tiêu chuẩn XSLT
XPath là một khuyến nghị của W3C Biểu thức đường dẫn XPathXPath sử dụng các biểu thức đường dẫn để chọn các nút hoặc bộ nút trong tài liệu XML. Các biểu thức đường dẫn này trông rất giống các biểu thức đường dẫn bạn sử dụng với các hệ thống tệp máy tính truyền thống:Chức năng tiêu chuẩn XPath XPath bao gồm hơn 200 chức năng tích hợp. Có các hàm cho các giá trị chuỗi, giá trị số, booleans, so sánh ngày và thời gian, thao tác nút, thao tác trình tự, và nhiều hơn nữa.Ngày nay, các biểu thức XPath cũng có thể được sử dụng trong JavaScript, Java, Lược đồ XML, PHP, Python, C và C ++ và rất nhiều ngôn ngữ khác. 5XPath được sử dụng trong XSLT Ngày nay, các biểu thức XPath cũng có thể được sử dụng trong JavaScript, Java, Lược đồ XML, PHP, Python, C và C ++ và rất nhiều ngôn ngữ khác. 9XPath được sử dụng trong XSLT >>> 3Bạn có thể tham chiếu các biến theo bất kỳ thứ tự nào bằng cách tham chiếu chỉ mục của họ: >>> 4Bạn có thể tham chiếu các biến theo bất kỳ thứ tự nào bằng cách tham chiếu chỉ mục của họ: Nhưng nếu bạn chèn các tên biến, bạn sẽ có thêm perk về việc có thể truyền các đối tượng và sau đó tham chiếu tham chiếu và phương thức ở giữa niềng răng:Bạn cũng có thể sử dụng 99 để thực hiện thủ thuật gọn gàng này với từ điển:>>> 6Bạn có thể tham chiếu các biến theo bất kỳ thứ tự nào bằng cách tham chiếu chỉ mục của họ: Nhưng nếu bạn chèn các tên biến, bạn sẽ có thêm perk về việc có thể truyền các đối tượng và sau đó tham chiếu tham chiếu và phương thức ở giữa niềng răng:Bạn cũng có thể sử dụng 99 để thực hiện thủ thuật gọn gàng này với từ điển: 9 9 để thực hiện thủ thuật gọn gàng này với từ điển: 93 chắc chắn là một bản nâng cấp khi so sánh với %hình thức, nhưng nó không phải là tất cả hoa hồng và ánh nắng mặt trời.Tại sao str.format () isn tuyệt vờiMã sử dụng >>> "Hello, {1}. You are {0}.".format(age, name) 'Hello, Eric. You are 74.' 3 dễ đọc hơn nhiều so với mã sử dụng %-formatting, nhưng >>> "Hello, {1}. You are {0}.".format(age, name) 'Hello, Eric. You are 74.' 3 vẫn có thể khá dài dòng khi bạn đang xử lý nhiều tham số và chuỗi dài hơn. Hãy xem này: Nếu bạn có các biến bạn muốn chuyển sang>>> 1 33 trong từ điển, thì bạn có thể giải nén nó bằng 34 và tham chiếu các giá trị bằng khóa trong chuỗi, nhưng phải có một cách tốt hơn để làm điều này.>>> 70F-Strings: Một cách mới và được cải tiến để định dạng chuỗi trong Python Tin tốt là F-Strings ở đây để cứu ngày. Họ cắt lát! Họ xúc xắc! Họ làm khoai tây chiên Julienne! Được rồi, họ không làm những điều đó, nhưng họ làm cho định dạng dễ dàng hơn. Họ tham gia bữa tiệc trong Python 3.6. Bạn có thể đọc tất cả về nó trong PEP 498, được viết bởi Eric V. Smith vào tháng 8 năm 2015.Cũng được gọi là các chuỗi chữ được định dạng của các chuỗi, các chuỗi F là các chữ cái có chữ >>> person = {'name': 'Eric', 'age': 74} >>> "Hello, {name}. You are {age}.".format(name=person['name'], age=person['age']) 'Hello, Eric. You are 74.' 5 ở đầu và niềng răng xoăn có chứa các biểu thức sẽ được thay thế bằng các giá trị của chúng. Các biểu thức được đánh giá trong thời gian chạy và sau đó được định dạng bằng giao thức >>> person = {'name': 'Eric', 'age': 74} >>> "Hello, {name}. You are {age}.".format(name=person['name'], age=person['age']) 'Hello, Eric. You are 74.' 6. Như mọi khi, các tài liệu Python là bạn của bạn khi bạn muốn tìm hiểu thêm. Dưới đây là một số cách mà F-String có thể làm cho cuộc sống của bạn dễ dàng hơn. Cú pháp đơn giản Cú pháp tương tự như cái bạn đã sử dụng với>>> 71 93 nhưng ít dài dòng hơn. Nhìn vào cách dễ đọc này: 38:>>> 72Nó cũng sẽ có giá trị khi sử dụng một chữ cái viết hoa 39. 73Bạn có yêu F-String chưa? Tôi hy vọng rằng, vào cuối bài viết này, bạn sẽ trả lời >>> 74Biểu thức tùy ý Bởi vì các chuỗi F được đánh giá trong thời gian chạy, bạn có thể đặt bất kỳ và tất cả các biểu thức python hợp lệ trong chúng. Điều này cho phép bạn làm một số điều tiện lợi. Bạn có thể làm một cái gì đó khá đơn giản, như thế này: >>> 75Nhưng bạn cũng có thể gọi các chức năng. Đây là một ví dụ: Bạn cũng có tùy chọn gọi trực tiếp một phương thức:Bạn thậm chí có thể sử dụng các đối tượng được tạo từ các lớp có chuỗi F. Hãy tưởng tượng bạn đã có lớp học sau: >>> 76Bạn có thể làm điều này: Các phương thức>>> 77
40 và 41 xử lý cách các đối tượng được trình bày dưới dạng chuỗi, do đó, bạn sẽ cần đảm bảo rằng bạn bao gồm ít nhất một trong các phương thức đó trong định nghĩa lớp của bạn. Nếu bạn phải chọn một, hãy đi với 41 vì nó có thể được sử dụng thay cho 40.Chuỗi được trả về bởi 40 là biểu diễn chuỗi không chính thức của một đối tượng và có thể đọc được. Chuỗi được trả về bởi 41 là đại diện chính thức và nên không rõ ràng. Gọi 46 và 47 tốt hơn là sử dụng trực tiếp 40 và 41.Theo mặc định, các chuỗi F sẽ sử dụng >>> 78 40, nhưng bạn có thể đảm bảo rằng họ sử dụng 41 nếu bạn bao gồm cờ chuyển đổi 62:>>> 79Nếu bạn muốn đọc một số cuộc trò chuyện dẫn đến các chuỗi F hỗ trợ các biểu thức python đầy đủ, bạn có thể làm như vậy ở đây. Multiline F-StringBạn có thể có chuỗi đa dòng: Nhưng hãy nhớ rằng bạn cần đặt mộtNếu bạn không đặt một 35 trước mỗi dòng riêng lẻ, thì bạn sẽ có các chuỗi thường xuyên, cũ, trong vườn và không sáng bóng, mới, ưa thích.
Trong thời gian chạy, biểu thức bên trong niềng răng xoăn được đánh giá trong phạm vi riêng của nó và sau đó đặt cùng với phần theo nghĩa đen của chuỗi F. Chuỗi kết quả sau đó được trả về. Đó là tất cả những gì nó cần. Ở đây, một so sánh tốc độ: >>> 80>>> 81>>> 82Như bạn có thể thấy, F-String xuất hiện trên đầu. Tuy nhiên, đó không phải là trường hợp luôn như vậy. Khi chúng được thực hiện lần đầu tiên, họ có một số vấn đề về tốc độ và cần được thực hiện nhanh hơn 93. Một opcode 11 đặc biệt đã được giới thiệu.Python F-Strings: Các chi tiết phiền phứcBây giờ bạn đã học được tất cả về lý do tại sao F-String lại tuyệt vời, tôi chắc chắn bạn muốn ra khỏi đó và bắt đầu sử dụng chúng. Dưới đây là một vài chi tiết cần ghi nhớ khi bạn mạo hiểm vào thế giới mới dũng cảm này. Dấu ngoặc képBạn có thể sử dụng các loại dấu ngoặc kép khác nhau bên trong các biểu thức. Chỉ cần đảm bảo rằng bạn không sử dụng cùng một loại dấu ngoặc kép ở bên ngoài chuỗi F như bạn đang sử dụng trong biểu thức. Mã này sẽ hoạt động: >>> 83Như bạn có thể thấy, F-String xuất hiện trên đầu. >>> 84Như bạn có thể thấy, F-String xuất hiện trên đầu. >>> Như bạn có thể thấy, F-String xuất hiện trên đầu.>>> 86Như bạn có thể thấy, F-String xuất hiện trên đầu. >>> 87Như bạn có thể thấy, F-String xuất hiện trên đầu.Tuy nhiên, đó không phải là trường hợp luôn như vậy. Khi chúng được thực hiện lần đầu tiên, họ có một số vấn đề về tốc độ và cần được thực hiện nhanh hơn 93. Một opcode 11 đặc biệt đã được giới thiệu.Python F-Strings: Các chi tiết phiền phức >>> 88Bây giờ bạn đã học được tất cả về lý do tại sao F-String lại tuyệt vời, tôi chắc chắn bạn muốn ra khỏi đó và bắt đầu sử dụng chúng. Dưới đây là một vài chi tiết cần ghi nhớ khi bạn mạo hiểm vào thế giới mới dũng cảm này. >>> 89Dấu ngoặc kép Bạn có thể sử dụng các loại dấu ngoặc kép khác nhau bên trong các biểu thức. Chỉ cần đảm bảo rằng bạn không sử dụng cùng một loại dấu ngoặc kép ở bên ngoài chuỗi F như bạn đang sử dụng trong biểu thức.Mã này sẽ hoạt động: >>> 0Như bạn có thể thấy, F-String xuất hiện trên đầu. >>> 1Như bạn có thể thấy, F-String xuất hiện trên đầu. >>> 2Như bạn có thể thấy, F-String xuất hiện trên đầu.Tuy nhiên, đó không phải là trường hợp luôn như vậy. Khi chúng được thực hiện lần đầu tiên, họ có một số vấn đề về tốc độ và cần được thực hiện nhanh hơn >>> 3Như bạn có thể thấy, F-String xuất hiện trên đầu. >>> 4Như bạn có thể thấy, F-String xuất hiện trên đầu.Tuy nhiên, đó không phải là trường hợp luôn như vậy. Khi chúng được thực hiện lần đầu tiên, họ có một số vấn đề về tốc độ và cần được thực hiện nhanh hơn 93. Một opcode 11 đặc biệt đã được giới thiệu.Python F-Strings: Các chi tiết phiền phứcBây giờ bạn đã học được tất cả về lý do tại sao F-String lại tuyệt vời, tôi chắc chắn bạn muốn ra khỏi đó và bắt đầu sử dụng chúng. Dưới đây là một vài chi tiết cần ghi nhớ khi bạn mạo hiểm vào thế giới mới dũng cảm này. Dấu ngoặc kép
8 5 |