Phần này hơi lạc đề, nhưng khi bạn làm việc với dữ liệu, bạn thường muốn tạo đầu ra có cấu trúc [bảng, v.v. ]. Ví dụ
Name Shares Price
---------- ---------- -----------
AA 100 32.20
IBM 50 91.10
CAT 150 83.44
MSFT 200 51.23
GE 95 40.37
MSFT 50 65.10
IBM 100 70.44
- Định dạng chuỗi
- mã định dạng
- định dạng từ điển
- phương thức định dạng[]
- Định dạng kiểu C
- bài tập
- Bài tập 2. 8. Cách định dạng số
- Bài tập 2. 9. Thu thập dữ liệu
- Bài tập 2. 10. In bảng đã định dạng
- Bài tập 2. 11. Thêm một số tiêu đề
- Bài tập 2. 12. Thử thách định dạng
Định dạng chuỗi
Một cách để định dạng chuỗi trong Python 3. 6+ là với
print[f'{name:>10s} {shares:>10d} {price:>10.2f}']
1>>> name = 'IBM'
>>> shares = 100
>>> price = 91.1
>>> f'{name:>10s} {shares:>10d} {price:>10.2f}'
' IBM 100 91.10'
>>>
Phần
print[f'{name:>10s} {shares:>10d} {price:>10.2f}']
2 được thay thếNó thường được sử dụng với
print[f'{name:>10s} {shares:>10d} {price:>10.2f}']
3print[f'{name:>10s} {shares:>10d} {price:>10.2f}']
mã định dạng
Mã định dạng [sau
print[f'{name:>10s} {shares:>10d} {price:>10.2f}']
4 bên trong print[f'{name:>10s} {shares:>10d} {price:>10.2f}']
5] tương tự như C print[f'{name:>10s} {shares:>10d} {price:>10.2f}']
6. Các mã phổ biến bao gồmd Decimal integer
b Binary integer
x Hexadecimal integer
f Float as [-]m.dddddd
e Float as [-]m.dddddde+-xx
g Float, but selective use of E notation s String
c Character [from integer]
Công cụ sửa đổi phổ biến điều chỉnh độ rộng trường và độ chính xác thập phân. Đây là một phần danh sách
print[f'{name:>10s} {shares:>10d} {price:>10.2f}']
0định dạng từ điển
Bạn có thể sử dụng phương pháp
print[f'{name:>10s} {shares:>10d} {price:>10.2f}']
7 để áp dụng định dạng chuỗi cho từ điển giá trịprint[f'{name:>10s} {shares:>10d} {price:>10.2f}']
2Nó sử dụng các mã giống như
print[f'{name:>10s} {shares:>10d} {price:>10.2f}']
1 nhưng lấy các giá trị từ từ điển được cung cấpphương thức định dạng[]
Có một phương pháp
print[f'{name:>10s} {shares:>10d} {price:>10.2f}']
9 có thể áp dụng định dạng cho đối số hoặc đối số từ khóaprint[f'{name:>10s} {shares:>10d} {price:>10.2f}']
5Thành thật mà nói,
print[f'{name:>10s} {shares:>10d} {price:>10.2f}']
9 hơi dài dòng. Tôi thích f-string hơnĐịnh dạng kiểu C
Bạn cũng có thể sử dụng toán tử định dạng
d Decimal integer
b Binary integer
x Hexadecimal integer
f Float as [-]m.dddddd
e Float as [-]m.dddddde+-xx
g Float, but selective use of E notation s String
c Character [from integer]
1print[f'{name:>10s} {shares:>10d} {price:>10.2f}']
8Điều này yêu cầu một mục hoặc một bộ ở bên phải. Mã định dạng cũng được mô phỏng theo C
print[f'{name:>10s} {shares:>10d} {price:>10.2f}']
6Ghi chú. Đây là định dạng duy nhất có sẵn trên chuỗi byte
>>> name = 'IBM'
>>> shares = 100
>>> price = 91.1
>>> f'{name:>10s} {shares:>10d} {price:>10.2f}'
' IBM 100 91.10'
>>>
0bài tập
Bài tập 2. 8. Cách định dạng số
Một vấn đề phổ biến với việc in số là chỉ định số vị trí thập phân. Một cách để khắc phục điều này là sử dụng f-strings. Hãy thử những ví dụ này
>>> name = 'IBM'
>>> shares = 100
>>> price = 91.1
>>> f'{name:>10s} {shares:>10d} {price:>10.2f}'
' IBM 100 91.10'
>>>
1Có thể tìm thấy tài liệu đầy đủ về các mã định dạng được sử dụng chuỗi f tại đây. Định dạng đôi khi cũng được thực hiện bằng toán tử
d Decimal integer
b Binary integer
x Hexadecimal integer
f Float as [-]m.dddddd
e Float as [-]m.dddddde+-xx
g Float, but selective use of E notation s String
c Character [from integer]
1 của chuỗi>>> name = 'IBM'
>>> shares = 100
>>> price = 91.1
>>> f'{name:>10s} {shares:>10d} {price:>10.2f}'
' IBM 100 91.10'
>>>
0Tài liệu về các mã khác nhau được sử dụng với
d Decimal integer
b Binary integer
x Hexadecimal integer
f Float as [-]m.dddddd
e Float as [-]m.dddddde+-xx
g Float, but selective use of E notation s String
c Character [from integer]
1 có thể được tìm thấy tại đâyMặc dù nó thường được sử dụng với
print[f'{name:>10s} {shares:>10d} {price:>10.2f}']
3, nhưng định dạng chuỗi không liên quan đến in ấn. Nếu bạn muốn lưu một chuỗi đã định dạng. Chỉ cần gán nó cho một biến>>> name = 'IBM'
>>> shares = 100
>>> price = 91.1
>>> f'{name:>10s} {shares:>10d} {price:>10.2f}'
' IBM 100 91.10'
>>>
1Bài tập 2. 9. Thu thập dữ liệu
Trong bài tập 2. 7, bạn đã viết một chương trình tên là
d Decimal integer
b Binary integer
x Hexadecimal integer
f Float as [-]m.dddddd
e Float as [-]m.dddddde+-xx
g Float, but selective use of E notation s String
c Character [from integer]
6 để tính lãi/lỗ của một danh mục đầu tư chứng khoán. Trong bài tập này, bạn sẽ bắt đầu sửa đổi nó để tạo ra một bảng như thế này>>> name = 'IBM'
>>> shares = 100
>>> price = 91.1
>>> f'{name:>10s} {shares:>10d} {price:>10.2f}'
' IBM 100 91.10'
>>>
2Trong báo cáo này, "Giá" là giá cổ phiếu hiện tại của cổ phiếu và "Thay đổi" là sự thay đổi của giá cổ phiếu so với giá mua ban đầu
Để tạo báo cáo trên, trước tiên bạn sẽ muốn thu thập tất cả dữ liệu được hiển thị trong bảng. Viết hàm
d Decimal integer
b Binary integer
x Hexadecimal integer
f Float as [-]m.dddddd
e Float as [-]m.dddddde+-xx
g Float, but selective use of E notation s String
c Character [from integer]
7 lấy danh sách cổ phiếu và từ điển giá làm đầu vào và trả về danh sách các bộ chứa các hàng của bảng trênThêm chức năng này vào tệp
d Decimal integer
b Binary integer
x Hexadecimal integer
f Float as [-]m.dddddd
e Float as [-]m.dddddde+-xx
g Float, but selective use of E notation s String
c Character [from integer]
6 của bạn. Đây là cách nó sẽ hoạt động nếu bạn thử tương tác>>> name = 'IBM'
>>> shares = 100
>>> price = 91.1
>>> f'{name:>10s} {shares:>10d} {price:>10.2f}'
' IBM 100 91.10'
>>>
3Bài tập 2. 10. In bảng đã định dạng
Làm lại vòng lặp for ở bài tập 2. 9, nhưng thay đổi câu lệnh in để định dạng các bộ dữ liệu
>>> name = 'IBM'
>>> shares = 100
>>> price = 91.1
>>> f'{name:>10s} {shares:>10d} {price:>10.2f}'
' IBM 100 91.10'
>>>
4Bạn cũng có thể mở rộng các giá trị và sử dụng chuỗi f. Ví dụ
>>> name = 'IBM'
>>> shares = 100
>>> price = 91.1
>>> f'{name:>10s} {shares:>10d} {price:>10.2f}'
' IBM 100 91.10'
>>>
5Lấy các câu trên và thêm chúng vào chương trình
d Decimal integer
b Binary integer
x Hexadecimal integer
f Float as [-]m.dddddd
e Float as [-]m.dddddde+-xx
g Float, but selective use of E notation s String
c Character [from integer]
6 của bạn. Yêu cầu chương trình của bạn lấy đầu ra của hàm d Decimal integer
b Binary integer
x Hexadecimal integer
f Float as [-]m.dddddd
e Float as [-]m.dddddde+-xx
g Float, but selective use of E notation s String
c Character [from integer]
7 và in ra một bảng được định dạng đẹp mắt như hình minh họaBài tập 2. 11. Thêm một số tiêu đề
Giả sử bạn có một bộ tên tiêu đề như thế này
>>> name = 'IBM'
>>> shares = 100
>>> price = 91.1
>>> f'{name:>10s} {shares:>10d} {price:>10.2f}'
' IBM 100 91.10'
>>>
6Thêm mã vào chương trình của bạn để lấy bộ tiêu đề ở trên và tạo một chuỗi trong đó mỗi tên tiêu đề được căn phải trong một trường rộng 10 ký tự và mỗi trường được phân tách bằng một dấu cách
>>> name = 'IBM'
>>> shares = 100
>>> price = 91.1
>>> f'{name:>10s} {shares:>10d} {price:>10.2f}'
' IBM 100 91.10'
>>>
7Viết mã lấy các tiêu đề và tạo chuỗi phân cách giữa các tiêu đề và dữ liệu để theo dõi. Chuỗi này chỉ là một loạt các ký tự "-" dưới mỗi tên trường. Ví dụ
>>> name = 'IBM'
>>> shares = 100
>>> price = 91.1
>>> f'{name:>10s} {shares:>10d} {price:>10.2f}'
' IBM 100 91.10'
>>>
8Khi bạn hoàn thành, chương trình của bạn sẽ tạo ra bảng hiển thị ở đầu bài tập này
>>> name = 'IBM'
>>> shares = 100
>>> price = 91.1
>>> f'{name:>10s} {shares:>10d} {price:>10.2f}'
' IBM 100 91.10'
>>>
2Bài tập 2. 12. Thử thách định dạng
Bạn sẽ sửa đổi mã của mình như thế nào để giá bao gồm ký hiệu tiền tệ [$] và đầu ra trông như thế này