Chào các bạn. tôi đã trở lại. Hy vọng rằng tôi không quá phiền phức trong thời gian tới, nhưng tôi thực sự thích học viết mã. Khóa học tôi hiện đang tham gia ở Uni sử dụng đoạn mã sau để minh họa so sánh các số/chuỗi. Khối duy nhất mà tôi thực sự gặp khó khăn là phần tôi đã phác thảo bằng một nhận xét [khối EPSILON]. Ai có thể giải thích cho tôi chuyện gì đang xảy ra ở đó không?
Cảm ơn
##
# This program demonstrates comparisons of numbers and strings
#
from math import sqrt
# Comparing integers
m = 2
n = 4
if m * m == n :
print ["2 times 2 is four."]
# Comparing floating point numbers
x = sqrt[2]
y = 2.0
if x * x == y :
print ["sqrt[2] times sqrt[2] is 2"]
else :
print ["sqrt[2] times sqrt[2] is not two but %.18f" % [x * x]] #%.18f shows the whole number + 18 decimal spaces
# Not understanding this next block. What is EPSILON? What does 1E-14 equal?
EPSILON = 1E-14
if abs[x * x - y] < EPSILON : # Not fully understanding the abs function
print["sqrt[2] times sqrt[2] is approximately 2"]
# Comparing strings
s = "120"
t = "20"
if s == t :
comparison = "is the same as"
else :
comparison = "is not the same as"
print ["The string '%s' %s the string '%s'." % [s, comparison, t]]
u = "1" + t
if s != u :
comparison = "not "
else :
comparison = ""
print ["The strings '%s' and '%s' are %sidentical." % [s, u, comparison]]
Chào Ryan,
Đối với những câu hỏi đơn giản như “abs[] làm gì?”
là trợ giúp tương tác trong trình thông dịch Python
help[abs]
mà nên hiển thị một cái gì đó như
Help on built-in function abs in module builtins:
abs[x, /]
Return the absolute value of the argument.
Bạn có thể dùng thử trong trình thông dịch
abs[3.5] # returns 3.5
abs[-3.5] # also returns 3.5
hoặc đọc các tài liệu trực tuyến
Đối với epsilon bí ẩn,
EPSILON = 1E-14
nếu bạn quen thuộc với máy tính khoa học, bạn có thể nhớ
nhìn thấy một nút có thể được gọi là “E” [đối với Số mũ hoặc số mũ
ký hiệu]. Con số sau E cho bạn biết có bao nhiêu nơi để di chuyển
dấu thập phân
1E5 --> 1.000000E5
move the decimal point five places to the right
--> 100000.0
1E-5 --> 000001.0E5
move the decimal point five places to the left
--> 0.00001
Kí hiệu E là cách viết tắt để nhân với 10 lũy thừa đã cho
1E-14 == 1.0 * 10**-14
Cái tên “epsilon” là một chút biệt ngữ toán học. Epsilon là tiếng Hy Lạp
chữ cái cho “E”, và vì lý do lịch sử, các nhà toán học sử dụng tiếng Hy Lạp
epsilon ε để đại diện cho “một lượng nhỏ”
Vậy phương trình này
if abs[x * x - y] < EPSILON
kiểm tra xem sự khác biệt giữa x bình phương [x lần x] và y có nhỏ hơn không
hơn “một lượng nhỏ” [1e-14], và nếu có, nó sẽ in thông báo rằng
theo sau
Trước khi bạn tiếp tục, hãy lưu ý rằng số 1e-3 ở dạng ký hiệu khoa học, còn được gọi là dạng chuẩn. Dùng để viết số lớn hoặc số nhỏ theo cách khác. Trong số 1e-3, các số được xác định như sau
1 = hệ số
e = 10 lũy thừa của
-3 = số mũ
Ký hiệu khoa học 1e-3 giống như 1 x 10^-3 hoặc 1 x 10-3. Do đó, để có được câu trả lời cho 1e-3 dưới dạng số thập phân, chúng ta nhân 1 với 10 với lũy thừa của -3
Bạn không cần phải là một chuyên gia toán học để lập trình tốt. Sự thật là, ít lập trình viên cần biết nhiều hơn đại số cơ bản. Tất nhiên, bạn cần biết bao nhiêu môn toán tùy thuộc vào ứng dụng mà bạn đang làm việc. Nói chung, trình độ toán học cần thiết để trở thành một lập trình viên thấp hơn bạn mong đợi. Mặc dù toán học và lập trình máy tính không tương quan với nhau như một số người có thể tin, nhưng các con số là một phần không thể thiếu của bất kỳ ngôn ngữ lập trình nào và Python cũng không ngoại lệ
Trong hướng dẫn này, bạn sẽ học cách
- Tạo số nguyên và số dấu phẩy động
- Làm tròn số đến một số chữ số thập phân cho trước
- Định dạng và hiển thị số trong chuỗi
Bắt đầu nào
Ghi chú. Hướng dẫn này được điều chỉnh từ chương “Số và Toán” trong Python Basics. Giới thiệu thực tế về Python 3. Nếu bạn thích một khóa học video, thì hãy xem Python Basics. Số và Toán
Cuốn sách sử dụng trình soạn thảo IDLE tích hợp sẵn của Python để tạo và chỉnh sửa các tệp Python cũng như tương tác với trình bao Python, vì vậy bạn sẽ thấy các tham chiếu đến các công cụ sửa lỗi tích hợp sẵn của IDLE trong suốt hướng dẫn này. Tuy nhiên, bạn sẽ không gặp vấn đề gì khi chạy mã ví dụ từ trình chỉnh sửa và môi trường bạn chọn
Tiền thưởng miễn phí. 5 Suy nghĩ về Làm chủ Python, một khóa học miễn phí dành cho các nhà phát triển Python cho bạn thấy lộ trình và tư duy mà bạn sẽ cần để đưa các kỹ năng Python của mình lên một tầm cao mới
Số nguyên và số dấu phẩy động
Python có ba kiểu dữ liệu số tích hợp. số nguyên, số dấu phẩy động và số phức. Trong phần này, bạn sẽ tìm hiểu về số nguyên và số dấu phẩy động, đây là hai loại số được sử dụng phổ biến nhất. Bạn sẽ học về số phức trong
Loại bỏ các quảng cáosố nguyên
Một số nguyên là một số nguyên không có chữ số thập phân. Ví dụ,
>>> 200000000000000000.0
2e+17
4 là một số nguyên, nhưng >>> 200000000000000000.0
2e+17
5 thì không. Tên của kiểu dữ liệu số nguyên là >>> 200000000000000000.0
2e+17
6, bạn có thể thấy tên này với >>> 200000000000000000.0
2e+17
7>>>
>>> type[1]
Bạn có thể tạo một số nguyên bằng cách nhập số mong muốn. Chẳng hạn, phần sau đây gán số nguyên
>>> 200000000000000000.0
2e+17
8 cho biến >>> 200000000000000000.0
2e+17
9>>>
>>> num = 25
Khi bạn tạo một số nguyên như thế này, giá trị
>>> 200000000000000000.0
2e+17
8 được gọi là số nguyên theo nghĩa đen vì số nguyên được nhập vào mã theo nghĩa đenBạn có thể đã quen thuộc với cách chuyển đổi một chuỗi chứa số nguyên thành số bằng cách sử dụng
>>> 1e-4
0.0001
1. Ví dụ: phần sau chuyển đổi chuỗi >>> 1e-4
0.0001
2 thành số nguyên >>> 200000000000000000.0
2e+17
8>>>
>>> int["25"]
25
>>> 1e-4
0.0001
4 không phải là số nguyên bằng chữ vì giá trị số nguyên được tạo từ một chuỗiKhi bạn viết các số lớn bằng tay, bạn thường nhóm các chữ số thành nhóm ba số được phân tách bằng dấu phẩy hoặc dấu thập phân. Số 1.000.000 dễ đọc hơn 1000000 rất nhiều
Trong Python, bạn không thể sử dụng dấu phẩy để nhóm các chữ số theo số nguyên, nhưng bạn có thể sử dụng dấu gạch dưới [
>>> 1e-4
0.0001
5]. Cả hai cách sau đều là những cách hợp lệ để biểu diễn số một triệu dưới dạng một số nguyên>>>
>>> 1000000
1000000
>>> 1_000_000
1000000
Không có giới hạn về độ lớn của một số nguyên, điều này có thể gây ngạc nhiên khi máy tính có bộ nhớ hữu hạn. Hãy thử nhập số lớn nhất mà bạn có thể nghĩ đến vào cửa sổ tương tác của IDLE. Python có thể xử lý nó mà không gặp vấn đề gì
Số dấu phẩy động
Số dấu phẩy động, hay viết tắt là float, là một số có một chữ số thập phân.
>>> 200000000000000000.0
2e+17
5 là một số dấu chấm động, cũng như >>> 1e-4
0.0001
7. Tên của kiểu dữ liệu dấu phẩy động là >>> 1e-4
0.0001
8>>>
>>> type[1.0]
Giống như số nguyên, số float có thể được tạo từ các ký tự dấu phẩy động hoặc bằng cách chuyển đổi một chuỗi thành số float với
>>> 1e-4
0.0001
9>>>
>>> float["1.25"]
1.25
Có ba cách để biểu diễn một dấu chấm động theo nghĩa đen. Mỗi điều sau đây tạo ra một chữ số dấu phẩy động với giá trị một triệu
>>>
>>> 1000000.0
1000000.0
>>> 1_000_000.0
1000000.0
>>> 1e6
1000000.0
Hai cách đầu tương tự như hai kỹ thuật tạo số nguyên. Cách tiếp cận thứ ba sử dụng ký hiệu E để tạo một chữ nổi
Ghi chú. Ký hiệu E là viết tắt của ký hiệu hàm mũ. Bạn có thể đã thấy ký hiệu này được máy tính sử dụng để biểu thị các số quá lớn để vừa trên màn hình
Để viết một chữ float trong ký hiệu E, hãy nhập một số theo sau là chữ cái
>>> 2e400
inf
0 và sau đó là một số khác. Python lấy số ở bên trái của >>> 2e400
inf
0 và nhân nó với >>> 2e400
inf
2 được nâng lên thành lũy thừa của số sau >>> 2e400
inf
0. Vì vậy, >>> 2e400
inf
4 tương đương với 1×10⁶Python cũng sử dụng ký hiệu E để hiển thị số dấu phẩy động lớn
>>>
>>> 200000000000000000.0
2e+17
Phao
>>> 2e400
inf
5 được hiển thị là >>> 2e400
inf
6. Dấu hiệu >>> 2e400
inf
7 cho biết số mũ >>> 2e400
inf
8 là một số dương. Bạn cũng có thể sử dụng số âm làm số mũ>>>
>>> 1e-4
0.0001
Chữ
>>> 2e400
inf
9 được hiểu là >>> 2e400
inf
2 được nâng lên lũy thừa >>> num = 25
01, tức là 1/10000, hoặc >>> num = 25
02Không giống như số nguyên, số float có kích thước tối đa. Số dấu phẩy động tối đa phụ thuộc vào hệ thống của bạn, nhưng một cái gì đó như
>>> num = 25
03 phải vượt quá khả năng của hầu hết các máy. >>> num = 25
03 là 2×10⁴⁰⁰, lớn hơn nhiều so vớiKhi bạn đạt đến số dấu phẩy động lớn nhất, Python trả về một giá trị float đặc biệt,
>>> num = 25
05>>>
>>> 2e400
inf
>>> num = 25
05 là viết tắt của vô cực và điều đó chỉ có nghĩa là số bạn đã cố tạo vượt quá giá trị dấu phẩy động tối đa cho phép trên máy tính của bạn. Loại >>> num = 25
05 vẫn là >>> 1e-4
0.0001
8>>>
>>> num = 25
0Python cũng sử dụng
>>> num = 25
09, viết tắt của âm vô cực và biểu thị số dấu phẩy động âm vượt quá số dấu phẩy động tối thiểu được phép trên máy tính của bạn>>>
>>> num = 25
1Bạn có thể sẽ không gặp
>>> num = 25
05 và >>> num = 25
09 rất thường xuyên với tư cách là một lập trình viên trừ khi bạn thường xuyên làm việc với số lượng cực lớnKiểm tra việc hiểu của bạn
Mở rộng khối bên dưới để kiểm tra sự hiểu biết của bạn
Tập thể dục. Hai cách để viết số nguyênHiện/Ẩn
Viết chương trình tạo hai biến,
>>> num = 25
12 và >>> num = 25
13. Cả >>> num = 25
12 và >>> num = 25
13 phải được gán số nguyên bằng chữ >>> num = 25
16, một số được viết với dấu gạch dưới và một số không có. In >>> num = 25
12 và >>> num = 25
13 trên hai dòng riêng biệtBạn có thể mở rộng khối bên dưới để xem giải pháp
Giải pháp. Hai cách để viết số nguyênHiện/Ẩn
Đầu tiên, gán giá trị
>>> num = 25
16 cho >>> num = 25
12 mà không có bất kỳ dấu gạch dưới nào>>> num = 25
2Tiếp theo, trên một dòng mới, gán giá trị
>>> num = 25
21 cho biến >>> num = 25
13>>> num = 25
3In cả hai biến trên các dòng riêng biệt bằng cách chuyển từng biến cho các cuộc gọi riêng biệt của
>>> num = 25
23>>> num = 25
4Ở đầu ra, bạn có thể thấy rằng cả hai số đều giống nhau
>>> num = 25
5Mặc dù cả hai biến đều được gán giá trị
>>> num = 25
16, nhưng việc viết giá trị bằng cách sử dụng dấu gạch dưới để nhóm các chữ số giúp con người dễ dàng nhanh chóng tìm ra số đó là gì. Không còn phải nheo mắt nhìn vào màn hình và cố gắng đếm số khôngKhi bạn đã sẵn sàng, bạn có thể chuyển sang phần tiếp theo
Loại bỏ các quảng cáoToán tử số học và biểu thức
Trong phần này, bạn sẽ học cách thực hiện các phép tính số học cơ bản, chẳng hạn như cộng, trừ, nhân và chia với các số trong Python. Đồng thời, bạn sẽ học một số quy ước để viết các biểu thức toán học trong mã
Phép cộng
Phép cộng được thực hiện với toán tử
>>> 2e400
inf
7>>>
>>> num = 25
6Hai số ở hai bên của toán tử
>>> 2e400
inf
7 được gọi là toán hạng. Trong ví dụ trên, cả hai toán hạng đều là số nguyên, nhưng toán hạng không cần phải cùng kiểuBạn có thể thêm
>>> 200000000000000000.0
2e+17
6 vào >>> 1e-4
0.0001
8 mà không gặp vấn đề gì>>>
>>> num = 25
7Lưu ý rằng kết quả của
>>> num = 25
29 là >>> num = 25
30, là một >>> 1e-4
0.0001
8. Bất cứ khi nào một >>> 1e-4
0.0001
8 được thêm vào một số, kết quả sẽ là một số khác >>> 1e-4
0.0001
8. Cộng hai số nguyên với nhau luôn cho kết quả là >>> 200000000000000000.0
2e+17
6Ghi chú. tách cả hai toán hạng khỏi một toán tử bằng một khoảng trắng
Python có thể đánh giá tốt
>>> num = 25
35, nhưng >>> num = 25
36 là định dạng ưa thích vì nó thường dễ đọc hơn. Quy tắc ngón tay cái này áp dụng cho tất cả các toán tử trong phần nàyphép trừ
Để trừ hai số, chỉ cần đặt một toán tử
>>> num = 25
37 giữa chúng>>>
>>> num = 25
8Cũng giống như cộng hai số nguyên, trừ hai số nguyên luôn cho kết quả là
>>> 200000000000000000.0
2e+17
6. Bất cứ khi nào một trong các toán hạng là một >>> 1e-4
0.0001
8, thì kết quả cũng là một >>> 1e-4
0.0001
8Toán tử
>>> num = 25
37 cũng được sử dụng để biểu thị các số âm>>>
>>> num = 25
9Bạn có thể trừ một số âm từ một số khác, nhưng như bạn có thể thấy bên dưới, điều này đôi khi có vẻ khó hiểu
>>>
>>> int["25"]
25
0Trong bốn ví dụ trên, ví dụ đầu tiên tuân thủ PEP 8 nhất. Như đã nói, bạn có thể bao quanh
>>> num = 25
42 bằng dấu ngoặc đơn để làm rõ hơn rằng >>> num = 25
37 thứ hai đang sửa đổi >>> num = 25
44>>>
>>> int["25"]
25
1Sử dụng dấu ngoặc đơn là một ý kiến hay vì nó làm cho mã của bạn rõ ràng hơn. Máy tính thực thi mã, nhưng con người đọc mã. Bất cứ điều gì bạn có thể làm để làm cho mã của bạn dễ đọc và dễ hiểu hơn đều là một điều tốt
Loại bỏ các quảng cáoPhép nhân
Để nhân hai số, hãy sử dụng toán tử
>>> num = 25
45>>>
>>> int["25"]
25
2Loại số bạn nhận được từ phép nhân tuân theo các quy tắc giống như phép cộng và phép trừ. Nhân hai số nguyên sẽ cho kết quả là
>>> 200000000000000000.0
2e+17
6 và nhân một số với một số >>> 1e-4
0.0001
8 sẽ cho kết quả là >>> 1e-4
0.0001
8Phân công
Toán tử
>>> num = 25
49 dùng để chia hai số>>>
>>> int["25"]
25
3Không giống như phép cộng, phép trừ và phép nhân, phép chia với toán tử
>>> num = 25
49 luôn trả về một ____17_______8. Nếu bạn muốn chắc chắn rằng bạn nhận được một số nguyên sau khi chia hai số, bạn có thể sử dụng >>> 1e-4
0.0001
1 để chuyển đổi kết quả>>>
>>> int["25"]
25
4Hãy nhớ rằng
>>> 1e-4
0.0001
1 loại bỏ bất kỳ phần phân số nào của số>>>
>>> int["25"]
25
5>>> num = 25
54 trả về số dấu phẩy động >>> num = 25
55 và >>> num = 25
56 trả về số nguyên >>> num = 25
57 với ____15____58 đã bị xóaphép chia số nguyên
Nếu việc viết
>>> num = 25
59 có vẻ hơi dài với bạn, Python cung cấp một toán tử chia thứ hai được gọi là toán tử chia số nguyên [>>> num = 25
60], còn được gọi là toán tử chia sàn>>>
>>> int["25"]
25
6Toán tử
>>> num = 25
60 trước tiên chia số bên trái cho số bên phải rồi làm tròn xuống một số nguyên. Điều này có thể không mang lại giá trị mà bạn mong đợi khi một trong các số là số âmVí dụ,
>>> num = 25
62 trả về >>> num = 25
63. Đầu tiên, >>> num = 25
42 được chia cho >>> num = 25
57 để có được >>> num = 25
66. Sau đó, >>> num = 25
66 được làm tròn xuống thành >>> num = 25
63. Mặt khác, >>> num = 25
69 trả về >>> 200000000000000000.0
2e+17
4 vì cả hai số đều dươngVí dụ trên cũng minh họa rằng
>>> num = 25
60 trả về một số dấu phẩy động khi một trong các toán hạng là >>> 1e-4
0.0001
8. Đây là lý do tại sao >>> num = 25
73 trả về số nguyên >>> num = 25
44 và >>> num = 25
75 trả về >>> 1e-4
0.0001
8 >>> num = 25
77Hãy xem điều gì sẽ xảy ra khi bạn cố gắng chia một số cho
>>> num = 25
78>>>
>>> int["25"]
25
7Python cung cấp cho bạn một
>>> num = 25
79, cho bạn biết rằng bạn vừa cố gắng phá vỡ một quy tắc cơ bản của vũ trụLoại bỏ các quảng cáosố mũ
Bạn có thể nâng một số lên lũy thừa bằng cách sử dụng toán tử
>>> num = 25
80>>>
>>> int["25"]
25
8Số mũ không nhất thiết phải là số nguyên. Chúng cũng có thể là phao
>>>
>>> int["25"]
25
9Nâng một số lên lũy thừa của
>>> num = 25
81 cũng giống như lấy căn bậc hai, nhưng lưu ý rằng mặc dù căn bậc hai của >>> num = 25
82 là một số nguyên, nhưng Python trả về >>> 1e-4
0.0001
8 >>> num = 25
30Đối với toán hạng dương, toán tử
>>> num = 25
80 trả về giá trị >>> 200000000000000000.0
2e+17
6 nếu cả hai toán hạng đều là số nguyên và giá trị >>> 1e-4
0.0001
8 nếu bất kỳ một trong các toán hạng là số dấu phẩy độngBạn cũng có thể nâng số lên lũy thừa âm
>>>
>>> 1000000
1000000
>>> 1_000_000
1000000
0Nâng một số lên lũy thừa âm cũng giống như chia
>>> 200000000000000000.0
2e+17
4 cho số đã nâng lên lũy thừa dương. Vì vậy, >>> num = 25
89 giống như >>> num = 25
90, cũng giống như >>> num = 25
91 hoặc >>> num = 25
81. Tương tự, >>> num = 25
93 giống với >>> num = 25
94, giống với >>> num = 25
95 hoặc >>> num = 25
96Toán tử mô đun
Toán tử
>>> num = 25
97, hoặc mô đun, trả về phần còn lại của phép chia toán hạng bên trái cho toán hạng bên phải>>>
>>> 1000000
1000000
>>> 1_000_000
1000000
1>>> num = 25
44 chia một lần cho ____15_______99 với số dư là ____15_______57, vì vậy ____20_______01 là ____15_______57. Tương tự, >>> int["25"]
25
03 chia >>> int["25"]
25
04 hai lần với số dư là >>> int["25"]
25
05. Trong ví dụ trước, >>> int["25"]
25
06 chia hết cho >>> int["25"]
25
07, vì vậy >>> int["25"]
25
08 là >>> num = 25
78. Bất cứ khi nào số bên trái của >>> num = 25
97 chia hết cho số bên phải, kết quả là >>> num = 25
78Một trong những cách sử dụng phổ biến nhất của
>>> num = 25
97 là để xác định xem một số có chia hết cho số khác hay không. Ví dụ, một số >>> int["25"]
25
13 là số chẵn khi và chỉ khi >>> int["25"]
25
14 là >>> num = 25
78. Bạn nghĩ gì về lợi nhuận của >>> int["25"]
25
16? >>>
>>> 1000000
1000000
>>> 1_000_000
1000000
2Điều này hợp lý vì
>>> int["25"]
25
16 cho số dư của phép chia >>> 200000000000000000.0
2e+17
4 cho >>> num = 25
78. Nhưng bạn không thể chia >>> 200000000000000000.0
2e+17
4 cho >>> num = 25
78, vì vậy Python sẽ tăng >>> num = 25
79Ghi chú. Khi bạn làm việc trong cửa sổ tương tác của IDLE, các lỗi như
>>> num = 25
79 không gây ra nhiều vấn đề. Lỗi được hiển thị và một lời nhắc mới bật lên, cho phép bạn tiếp tục viết mãTuy nhiên, khi Python gặp lỗi trong khi chạy tập lệnh, quá trình thực thi sẽ dừng lại. Nói cách khác, chương trình bị treo. Trong chương 8 của Kiến thức cơ bản về Python, bạn sẽ học cách xử lý lỗi để chương trình của bạn không gặp sự cố bất ngờ
Mọi thứ trở nên phức tạp hơn một chút khi bạn sử dụng toán tử
>>> num = 25
97 với các số âm>>>
>>> 1000000
1000000
>>> 1_000_000
1000000
3Mặc dù thoạt nhìn có thể gây sốc, nhưng những kết quả này là sản phẩm của một hành vi được xác định rõ ràng trong Python. Để tính số dư
>>> int["25"]
25
25 của phép chia một số >>> int["25"]
25
26 cho một số >>> int["25"]
25
27, Python sử dụng phương trình >>> int["25"]
25
28Ví dụ, để tìm
>>> int["25"]
25
29, đầu tiên Python tìm >>> int["25"]
25
30. Vì >>> int["25"]
25
31 là khoảng >>> int["25"]
25
32, điều đó có nghĩa là >>> int["25"]
25
33 là >>> num = 25
63. Bây giờ Python nhân số đó với >>> num = 25
42 để có được >>> int["25"]
25
05. Cuối cùng, Python trừ >>> int["25"]
25
05 từ >>> num = 25
99 để nhận được >>> int["25"]
25
39Loại bỏ các quảng cáobiểu thức số học
Bạn có thể kết hợp các toán tử để tạo thành các biểu thức phức tạp. Một biểu thức là sự kết hợp của các số, toán tử và dấu ngoặc đơn mà Python có thể tính toán hoặc đánh giá để trả về một giá trị
Dưới đây là một số ví dụ về các biểu thức số học
>>>
>>> 1000000
1000000
>>> 1_000_000
1000000
4Các quy tắc đánh giá các biểu thức giống như trong số học hàng ngày. Ở trường, bạn có thể đã học các quy tắc này dưới tên gọi thứ tự các phép toán
Các toán tử
>>> num = 25
45, >>> num = 25
49, >>> num = 25
60 và >>> num = 25
97 đều có mức độ ưu tiên hoặc mức độ ưu tiên như nhau trong một biểu thức và mỗi toán tử này có mức độ ưu tiên cao hơn các toán tử >>> 2e400
inf
7 và >>> num = 25
37. Đây là lý do tại sao >>> int["25"]
25
46 trả về >>> num = 25
99 chứ không phải >>> int["25"]
25
48. >>> int["25"]
25
49 được đánh giá trước, bởi vì >>> num = 25
45 có độ ưu tiên cao hơn toán tử >>> num = 25
37Bạn có thể nhận thấy rằng các biểu thức trong ví dụ trước không tuân theo quy tắc đặt khoảng trắng ở hai bên của tất cả các toán tử. PEP 8 nói như sau về khoảng trắng trong các biểu thức phức tạp
Nếu các toán tử có mức độ ưu tiên khác nhau được sử dụng, hãy xem xét thêm khoảng trắng xung quanh các toán tử có [các] mức độ ưu tiên thấp nhất. Sử dụng phán đoán của riêng bạn; . []
Một cách thực hành tốt khác là sử dụng dấu ngoặc đơn để chỉ ra thứ tự thực hiện các thao tác, ngay cả khi dấu ngoặc đơn không cần thiết. Chẳng hạn,
>>> int["25"]
25
52 có khả năng rõ ràng hơn 2*3 - 1Làm cho Python nói dối bạn
Bạn nghĩ
>>> int["25"]
25
53 là gì? . Hãy thử điều này trong cửa sổ tương tác>>>
>>> 1000000
1000000
>>> 1_000_000
1000000
5Đó cũng là. . . gần đúng. Cái quái gì đang xảy ra thế này?
Không, nó không phải là một lỗi. Đó là lỗi biểu diễn dấu phẩy động và không liên quan gì đến Python. Nó liên quan đến cách các số dấu phẩy động được lưu trữ trong bộ nhớ của máy tính
Ghi chú. Hướng dẫn này được điều chỉnh từ chương “Số và Toán” trong Python Basics. Giới thiệu thực tế về Python 3. Nếu bạn thích những gì bạn đang đọc, thì hãy nhớ xem phần còn lại của cuốn sách
Số
>>> int["25"]
25
55 có thể được biểu diễn dưới dạng phân số >>> int["25"]
25
56. Cả số >>> int["25"]
25
55 và phân số của nó >>> int["25"]
25
56 đều là biểu diễn thập phân hoặc biểu diễn cơ số 10. Tuy nhiên, máy tính lưu trữ các số dấu phẩy động trong biểu diễn cơ số 2, thường được gọi là biểu diễn nhị phânKhi được biểu diễn dưới dạng nhị phân, điều gì đó quen thuộc nhưng có thể bất ngờ xảy ra với số thập phân
>>> int["25"]
25
55. Phân số >>> int["25"]
25
60 không có biểu diễn thập phân hữu hạn. Tức là, >>> int["25"]
25
61 với vô số số 3 sau dấu thập phân. Điều tương tự cũng xảy ra với phân số >>> int["25"]
25
56 trong hệ nhị phânBiểu diễn nhị phân của
>>> int["25"]
25
56 là phân số lặp lại vô tận sau đây>>> 1000000
1000000
>>> 1_000_000
1000000
6Máy tính có bộ nhớ hữu hạn, vì vậy số
>>> int["25"]
25
55 phải được lưu trữ dưới dạng gần đúng chứ không phải giá trị thực của nó. Giá trị gần đúng được lưu trữ cao hơn một chút so với giá trị thực tế và trông như thế này>>> 1000000
1000000
>>> 1_000_000
1000000
7Tuy nhiên, bạn có thể nhận thấy rằng khi được yêu cầu in
>>> int["25"]
25
55, Python sẽ in ra >>> int["25"]
25
55 chứ không phải giá trị gần đúng ở trên>>>
>>> 1000000
1000000
>>> 1_000_000
1000000
8Python không chỉ cắt bỏ các chữ số trong biểu diễn nhị phân cho
>>> int["25"]
25
55. Những gì thực sự xảy ra là một chút tinh tế hơnBởi vì xấp xỉ của
>>> int["25"]
25
55 ở dạng nhị phân chỉ là—một xấp xỉ—hoàn toàn có thể có nhiều hơn một số thập phân có cùng một xấp xỉ nhị phânVí dụ: cả
>>> int["25"]
25
55 và >>> int["25"]
25
70 đều có xấp xỉ nhị phân giống nhau. Python in ra số thập phân ngắn nhất chia sẻ xấp xỉĐiều này giải thích tại sao, trong ví dụ đầu tiên của phần này,
>>> int["25"]
25
53 không bằng >>> int["25"]
25
54. Python cộng các xấp xỉ nhị phân cho >>> int["25"]
25
55 và >>> int["25"]
25
74 lại với nhau, đưa ra một số không phải là xấp xỉ nhị phân cho >>> int["25"]
25
54Nếu tất cả những điều này đang bắt đầu khiến đầu óc bạn quay cuồng, đừng lo lắng. Trừ khi bạn đang viết chương trình tài chính hoặc tính toán khoa học, bạn không cần phải lo lắng về sự thiếu chính xác của số học dấu phẩy động
Loại bỏ các quảng cáoHàm toán học và phương pháp số
Python có một vài hàm tích hợp mà bạn có thể sử dụng để làm việc với các con số. Trong phần này, bạn sẽ tìm hiểu về ba cách phổ biến nhất
76, để làm tròn số đến một số chữ số thập phân>>> int["25"] 25
77, để lấy giá trị tuyệt đối của một số>>> int["25"] 25
78, vì đã nâng một số lên một số lũy thừa>>> int["25"] 25
Bạn cũng sẽ tìm hiểu về một phương pháp mà bạn có thể sử dụng với các số có dấu phẩy động để kiểm tra xem chúng có giá trị nguyên hay không
Làm Tròn Số Với >>> int["25"]
25
76
>>> int["25"]
25
Bạn có thể sử dụng
>>> int["25"]
25
76 để làm tròn một số thành số nguyên gần nhất>>>
>>> 1000000
1000000
>>> 1_000_000
1000000
9>>> int["25"]
25
76 có một số hành vi không mong muốn khi số kết thúc bằng >>> num = 25
58>>>
>>> type[1.0]
0>>> num = 25
55 được làm tròn xuống thành _______15_______57 và _______20_______85 được làm tròn thành _______20_______48. Hầu hết mọi người mong đợi một số kết thúc bằng >>> num = 25
58 sẽ được làm tròn lên, vì vậy hãy xem xét kỹ hơn những gì đang diễn ra ở đâyPython 3 làm tròn số theo một chiến lược gọi là. Hòa là bất kỳ số nào có chữ số cuối cùng là năm.
>>> num = 25
55 và >>> int["25"]
25
89 là hòa, nhưng >>> int["25"]
25
90 thì khôngKhi bạn làm tròn số hòa thành chẵn, trước tiên bạn nhìn vào chữ số một chữ số thập phân ở bên trái của chữ số cuối cùng trong hòa. Nếu chữ số đó là số chẵn thì bạn làm tròn xuống. Nếu chữ số lẻ thì làm tròn lên. Đó là lý do tại sao
>>> num = 25
55 làm tròn xuống thành _______15_______57 và _______20_______85 làm tròn thành _______20_______48Ghi chú. Làm tròn các liên kết thành số chẵn là chiến lược làm tròn được đề xuất cho các số có dấu phẩy động bởi IEEE [Viện Kỹ sư Điện và Điện tử] vì nó giúp hạn chế tác động của việc làm tròn đối với các hoạt động liên quan đến nhiều số
IEEE duy trì một tiêu chuẩn gọi là IEEE 754 để xử lý các số dấu phẩy động trên máy tính. Nó được xuất bản vào năm 1985 và vẫn được các nhà sản xuất phần cứng sử dụng phổ biến
Bạn có thể làm tròn một số đến một số vị trí thập phân nhất định bằng cách chuyển đối số thứ hai tới
>>> int["25"]
25
76>>>
>>> type[1.0]
1Số
>>> int["25"]
25
96 được làm tròn đến ba chữ số thập phân để được >>> int["25"]
25
97 và số ____20_______98 được làm tròn đến hai chữ số thập phân để được ____20_______99Đối số thứ hai của
>>> int["25"]
25
76 phải là số nguyên. Nếu không, thì Python sẽ tăng >>> 1000000
1000000
>>> 1_000_000
1000000
01>>>
>>> type[1.0]
2Đôi khi
>>> int["25"]
25
76 không nhận được câu trả lời hoàn toàn đúng>>>
>>> type[1.0]
3>>> 1000000
1000000
>>> 1_000_000
1000000
03 là hòa vì nó nằm chính xác ở giữa hai số >>> 1000000
1000000
>>> 1_000_000
1000000
04 và >>> 1000000
1000000
>>> 1_000_000
1000000
05. Vì Python làm tròn liên kết với số chẵn gần nhất, nên bạn sẽ mong đợi >>> 1000000
1000000
>>> 1_000_000
1000000
06 trả về >>> 1000000
1000000
>>> 1_000_000
1000000
05, nhưng thay vào đó, nó trả về >>> 1000000
1000000
>>> 1_000_000
1000000
04. Lỗi này là kết quả của lỗi biểu diễn dấu phẩy động, không phải lỗi trong >>> int["25"]
25
76Xử lý các số dấu phẩy động có thể gây khó chịu, nhưng sự thất vọng này không dành riêng cho Python. Tất cả các ngôn ngữ triển khai tiêu chuẩn dấu chấm động IEEE đều có cùng một vấn đề, bao gồm C/C++, Java và JavaScript
Tuy nhiên, trong hầu hết các trường hợp, các lỗi nhỏ gặp phải với số dấu phẩy động là không đáng kể và kết quả của
>>> int["25"]
25
76 hoàn toàn hữu íchLoại bỏ các quảng cáoTìm Giá Trị Tuyệt Đối Với >>> int["25"]
25
77
>>> int["25"]
25
Giá trị tuyệt đối của một số n chỉ là n nếu n dương và -n nếu n âm. Ví dụ: giá trị tuyệt đối của
>>> num = 25
44 là >>> num = 25
44, trong khi giá trị tuyệt đối của >>> 1000000
1000000
>>> 1_000_000
1000000
14 là >>> num = 25
99Để lấy giá trị tuyệt đối của một số trong Python, bạn sử dụng
>>>
>>> type[1.0]
4>>> int["25"]
25
77 luôn trả về một số dương cùng loại với đối số của nó. Nghĩa là, giá trị tuyệt đối của một số nguyên luôn là một số nguyên dương và giá trị tuyệt đối của một số float luôn là một số float dươngNâng cao sức mạnh với >>> int["25"]
25
78
>>> int["25"]
25
Trước đó, bạn đã học cách nâng một số lên lũy thừa bằng cách sử dụng toán tử
>>> num = 25
80. Bạn cũng có thể sử dụng >>> int["25"]
25
78 để đạt được kết quả tương tự>>> int["25"]
25
78 có hai đối số. Đối số đầu tiên là cơ số hoặc số sẽ được nâng lên thành lũy thừa và đối số thứ hai là số mũ hoặc lũy thừa mà số sẽ được nâng lênVí dụ: những điều sau đây sử dụng
>>> int["25"]
25
78 để nâng >>> num = 25
57 lên số mũ >>> num = 25
44>>>
>>> type[1.0]
5Cũng giống như với
>>> num = 25
80, số mũ trong >>> int["25"]
25
78 có thể âm>>>
>>> type[1.0]
6Vì vậy, sự khác biệt giữa
>>> num = 25
80 và >>> int["25"]
25
78 là gì?Hàm
>>> int["25"]
25
78 chấp nhận một đối số thứ ba tùy chọn để tính số đầu tiên được nâng lên lũy thừa của số thứ hai, sau đó lấy modulo đối với số thứ ba. Nói cách khác, >>> 1000000
1000000
>>> 1_000_000
1000000
30 tương đương với >>> 1000000
1000000
>>> 1_000_000
1000000
31Đây là một ví dụ trong đó
>>> 1000000
1000000
>>> 1_000_000
1000000
32, >>> 1000000
1000000
>>> 1_000_000
1000000
33 và >>> 1000000
1000000
>>> 1_000_000
1000000
34>>>
>>> type[1.0]
7Đầu tiên,
>>> num = 25
57 được nâng lên lũy thừa >>> num = 25
44 để nhận được >>> int["25"]
25
07. Khi đó tính được >>> 1000000
1000000
>>> 1_000_000
1000000
38, tức là >>> num = 25
78 vì >>> num = 25
57 chia hết cho >>> int["25"]
25
07Kiểm tra xem một Float có tích phân không
Bạn có thể quen thuộc với như
>>> 1000000
1000000
>>> 1_000_000
1000000
42, >>> 1000000
1000000
>>> 1_000_000
1000000
43 và >>> 1000000
1000000
>>> 1_000_000
1000000
44. Số nguyên và số dấu phẩy động cũng có phương thứcCác phương pháp số không được sử dụng thường xuyên, nhưng có một phương pháp có thể hữu ích. Các số dấu phẩy động có phương thức
>>> 1000000
1000000
>>> 1_000_000
1000000
45 trả về >>> 1000000
1000000
>>> 1_000_000
1000000
46 nếu số đó là số nguyên—có nghĩa là nó không có phần phân số—và nếu không thì trả về >>> 1000000
1000000
>>> 1_000_000
1000000
47>>>
>>> type[1.0]
8Một lần sử dụng cho
>>> 1000000
1000000
>>> 1_000_000
1000000
45 là để xác thực đầu vào của người dùng. Ví dụ: nếu bạn đang viết một ứng dụng đặt hàng trực tuyến cho một cửa hàng bánh pizza, thì bạn sẽ muốn kiểm tra xem số lượng bánh pizza mà khách hàng nhập vào có phải là một số nguyên không.Các hàm
>>> int["25"]
25
76, >>> int["25"]
25
77 và >>> int["25"]
25
78 là các hàm tích hợp sẵn, nghĩa là bạn không phải nhập bất kỳ thứ gì để sử dụng chúng. Nhưng ba hàm này hầu như không làm xước bề mặt của tất cả các hàm có sẵn để làm việc với các số trong PythonĐể có thêm niềm vui toán học, hãy xem Mô-đun toán học Python. Mọi thư bạn cân biêt
Kiểm tra việc hiểu của bạn
Mở rộng khối bên dưới để kiểm tra sự hiểu biết của bạn
Tập thể dục. Làm tròn một số thành hai chữ sốHiển thị/Ẩn
Viết chương trình yêu cầu người dùng nhập vào một số và sau đó hiển thị số đó được làm tròn đến hai chữ số thập phân. Khi chạy, chương trình của bạn sẽ trông như thế này
>>> type[1.0]
9Bạn có thể mở rộng khối bên dưới để xem giải pháp
Giải pháp. Làm tròn một số thành hai chữ sốHiển thị/Ẩn
Để nhận đầu vào từ người dùng, hãy chuyển lời nhắc tới
>>> 1000000
1000000
>>> 1_000_000
1000000
52>>> float["1.25"]
1.25
0Lưu ý khoảng trắng ở cuối chuỗi dấu nhắc. Điều này đảm bảo có khoảng cách giữa văn bản do người dùng nhập khi họ bắt đầu nhập và dấu hai chấm trong lời nhắc
Giá trị được trả về bởi
>>> 1000000
1000000
>>> 1_000_000
1000000
52 là một chuỗi, vì vậy bạn cần chuyển đổi nó thành số float trước khi bạn có thể làm tròn số>>> float["1.25"]
1.25
1Hãy nhớ rằng đoạn mã trên giả định rằng chuỗi
>>> 1000000
1000000
>>> 1_000_000
1000000
54 thực sự chứa một giá trị số chứ không phải bất kỳ loại văn bản nào khácGhi chú. Nếu
>>> 1000000
1000000
>>> 1_000_000
1000000
54 có chứa văn bản không phải là số, thì một >>> 1000000
1000000
>>> 1_000_000
1000000
56 sẽ được nâng lên. Kiểm tra Ngoại lệ Python. Giới thiệu thông tin về cách xử lý các loại lỗi nàyBây giờ bạn có thể sử dụng
>>> int["25"]
25
76 để làm tròn giá trị đến hai chữ số thập phân>>> float["1.25"]
1.25
2Hãy nhớ rằng, đối số đầu tiên của
>>> int["25"]
25
76 phải là số được làm tròn. Đối số thứ hai là số chữ số thập phân để làm tròn thànhCuối cùng, bạn có thể in đầu ra bằng cách chèn
>>> 1000000
1000000
>>> 1_000_000
1000000
59 vào chuỗi f>>> float["1.25"]
1.25
3>>> int["25"]
25
76 là một cách tuyệt vời để làm tròn giá trị, nhưng nếu bạn chỉ làm tròn giá trị để hiển thị chúng, thì bạn có thể cân nhắc sử dụng các kỹ thuật được mô tả trong phần sauKhi bạn đã sẵn sàng, bạn có thể chuyển sang phần tiếp theo
Loại bỏ các quảng cáoIn số theo phong cách
Hiển thị số cho người dùng yêu cầu chèn số vào chuỗi. Bạn có thể làm điều này với chuỗi f bằng cách bao quanh một biến được gán cho một số bằng dấu ngoặc nhọn
>>>
>>> float["1.25"]
1.25
4Các dấu ngoặc nhọn đó hỗ trợ một cách đơn giản mà bạn có thể sử dụng để thay đổi hình thức của giá trị trong chuỗi được định dạng cuối cùng
Ví dụ: để định dạng giá trị của
>>> int["25"]
25
13 trong ví dụ trên thành hai chữ số thập phân, hãy thay thế nội dung của dấu ngoặc nhọn trong chuỗi f bằng >>> 1000000
1000000
>>> 1_000_000
1000000
62>>>
>>> float["1.25"]
1.25
5Dấu hai chấm [
>>> 1000000
1000000
>>> 1_000_000
1000000
63] sau biến >>> int["25"]
25
13 chỉ ra rằng mọi thứ sau nó là một phần của đặc tả định dạng. Trong ví dụ này, đặc tả định dạng là >>> 1000000
1000000
>>> 1_000_000
1000000
65>>> 1000000
1000000
>>> 1_000_000
1000000
66 trong >>> 1000000
1000000
>>> 1_000_000
1000000
65 làm tròn số đến hai chữ số thập phân và >>> 1000000
1000000
>>> 1_000_000
1000000
68 yêu cầu Python hiển thị >>> int["25"]
25
13 dưới dạng số điểm cố định. Điều này có nghĩa là số được hiển thị với chính xác hai chữ số thập phân, ngay cả khi số gốc có ít chữ số thập phân hơnKhi
>>> 1000000
1000000
>>> 1_000_000
1000000
70, kết quả của >>> 1000000
1000000
>>> 1_000_000
1000000
62 là >>> 1000000
1000000
>>> 1_000_000
1000000
72. Cũng giống như với >>> int["25"]
25
76, Python làm tròn các liên kết chẵn khi định dạng số bên trong chuỗi. Vì vậy, nếu bạn thay thế >>> 1000000
1000000
>>> 1_000_000
1000000
70 bằng >>> 1000000
1000000
>>> 1_000_000
1000000
75, thì kết quả của >>> 1000000
1000000
>>> 1_000_000
1000000
62 là >>> 1000000
1000000
>>> 1_000_000
1000000
77>>>
>>> float["1.25"]
1.25
6Để làm tròn đến một chữ số thập phân, hãy thay thế
>>> 1000000
1000000
>>> 1_000_000
1000000
66 bằng >>> 1000000
1000000
>>> 1_000_000
1000000
79>>>
>>> float["1.25"]
1.25
7Khi bạn định dạng một số là điểm cố định, số đó luôn được hiển thị với số vị trí thập phân chính xác mà bạn chỉ định
>>>
>>> float["1.25"]
1.25
8Bạn có thể chèn dấu phẩy để nhóm phần nguyên của các số lớn theo hàng nghìn với tùy chọn
>>> 1000000
1000000
>>> 1_000_000
1000000
80>>>
>>> float["1.25"]
1.25
9Để làm tròn đến một số vị trí thập phân và cũng có thể nhóm theo hàng nghìn, hãy đặt
>>> 1000000
1000000
>>> 1_000_000
1000000
80 trước >>> 1000000
1000000
>>> 1_000_000
1000000
82 trong thông số định dạng của bạn>>>
>>> 1000000.0
1000000.0
>>> 1_000_000.0
1000000.0
>>> 1e6
1000000.0
0Công cụ xác định
>>> 1000000
1000000
>>> 1_000_000
1000000
83 rất hữu ích để hiển thị các giá trị tiền tệ>>>
>>> 1000000.0
1000000.0
>>> 1_000_000.0
1000000.0
>>> 1e6
1000000.0
1Một tùy chọn hữu ích khác là
>>> num = 25
97, được sử dụng để hiển thị tỷ lệ phần trăm. Tùy chọn >>> num = 25
97 nhân một số với >>> 1000000
1000000
>>> 1_000_000
1000000
86 và hiển thị số đó ở định dạng điểm cố định, theo sau là dấu phần trămTùy chọn
>>> num = 25
97 phải luôn ở cuối thông số định dạng của bạn và bạn không thể kết hợp tùy chọn này với tùy chọn >>> 1000000
1000000
>>> 1_000_000
1000000
68. Ví dụ: >>> 1000000
1000000
>>> 1_000_000
1000000
89 hiển thị một số dưới dạng phần trăm với chính xác một chữ số thập phân>>>
>>> 1000000.0
1000000.0
>>> 1_000_000.0
1000000.0
>>> 1e6
1000000.0
2Ngôn ngữ định dạng nhỏ mạnh mẽ và rộng rãi. Bạn chỉ nhìn thấy những điều cơ bản ở đây. Để biết thêm thông tin, hãy xem
Kiểm tra việc hiểu của bạn
Mở rộng khối bên dưới để kiểm tra sự hiểu biết của bạn
Tập thể dục. Hiển thị đơn vị tiền tệHiển thị/Ẩn
In số
>>> 1000000
1000000
>>> 1_000_000
1000000
90 dưới dạng đơn vị tiền tệ với hàng nghìn được nhóm theo dấu phẩy. Tiền tệ phải được hiển thị với hai chữ số thập phân và bắt đầu bằng ký hiệu đô la MỹBạn có thể mở rộng khối bên dưới để xem giải pháp
Giải pháp. Hiển thị đơn vị tiền tệHiển thị/Ẩn
Hãy xây dựng f-string của chúng ta từng bước một
Đầu tiên, chuỗi f hiển thị giá trị
>>> 1000000
1000000
>>> 1_000_000
1000000
90 mà không có bất kỳ định dạng nào trông như thế này>>>
>>> 1000000.0
1000000.0
>>> 1_000_000.0
1000000.0
>>> 1e6
1000000.0
3Điều này có vẻ hơi kỳ quặc, nhưng nó giúp bạn thiết lập để thêm các công cụ xác định định dạng
Để đảm bảo rằng giá trị được hiển thị dưới dạng số dấu phẩy động, hãy đặt dấu hai chấm [
>>> 1000000
1000000
>>> 1_000_000
1000000
63] sau số >>> 1000000
1000000
>>> 1_000_000
1000000
90, theo sau là chữ cái >>> 1000000
1000000
>>> 1_000_000
1000000
68>>>
>>> 1000000.0
1000000.0
>>> 1_000_000.0
1000000.0
>>> 1e6
1000000.0
4Theo mặc định, Python hiển thị số với sáu chữ số thập phân chính xác. Đơn vị tiền tệ chỉ được có hai chữ số thập phân chính xác, vì vậy bạn có thể thêm
>>> 1000000
1000000
>>> 1_000_000
1000000
66 vào giữa >>> 1000000
1000000
>>> 1_000_000
1000000
63 và >>> 1000000
1000000
>>> 1_000_000
1000000
68>>>
>>> 1000000.0
1000000.0
>>> 1_000_000.0
1000000.0
>>> 1e6
1000000.0
5Để hiển thị số có các chữ số được nhóm bằng dấu phẩy, hãy chèn dấu phẩy [
>>> 1000000
1000000
>>> 1_000_000
1000000
80] giữa dấu hai chấm [_______23_______63] và dấu chấm [>>> 1000000
1000000
>>> 1_000_000
1000000
82]>>>
>>> 1000000.0
1000000.0
>>> 1_000_000.0
1000000.0
>>> 1e6
1000000.0
6Cuối cùng, thêm ký hiệu đô la [
>>> type[1.0]
01] vào đầu chuỗi để cho biết giá trị tính bằng đô la Mỹ>>>
>>> 1000000.0
1000000.0
>>> 1_000_000.0
1000000.0
>>> 1e6
1000000.0
7Chuỗi F chỉ là một cách để định dạng số để hiển thị. Hãy xem Hướng dẫn về các kỹ thuật định dạng chuỗi Python mới hơn để biết thêm nhiều cách định dạng số và văn bản khác trong Python
Khi bạn đã sẵn sàng, bạn có thể chuyển sang phần tiếp theo
Loại bỏ các quảng cáoSố phức
Python là một trong số ít ngôn ngữ lập trình cung cấp hỗ trợ tích hợp cho các số phức. Mặc dù các số phức thường không xuất hiện bên ngoài các lĩnh vực điện toán khoa học và đồ họa máy tính, nhưng sự hỗ trợ của Python dành cho chúng là một trong những thế mạnh của nó
Nếu bạn đã từng học một lớp toán đại số hoặc toán sơ cấp bậc cao hơn, thì bạn có thể nhớ rằng một số phức là một số có hai thành phần riêng biệt. một phần thực và một phần ảo
Để tạo một số phức trong Python, bạn chỉ cần viết phần thực, sau đó là dấu cộng, sau đó là phần ảo với chữ j ở cuối
>>>
>>> 1000000.0
1000000.0
>>> 1_000_000.0
1000000.0
>>> 1e6
1000000.0
8Khi bạn kiểm tra giá trị của
>>> int["25"]
25
13, bạn sẽ nhận thấy rằng Python bao quanh số đó bằng dấu ngoặc đơn>>>
>>> 1000000.0
1000000.0
>>> 1_000_000.0
1000000.0
>>> 1e6
1000000.0
9Quy ước này giúp loại bỏ bất kỳ sự nhầm lẫn nào mà đầu ra được hiển thị có thể đại diện cho một chuỗi hoặc biểu thức toán học
Số ảo đi kèm với hai thuộc tính,
>>> type[1.0]
03 và >>> type[1.0]
04, lần lượt trả về các thành phần thực và ảo của số>>>
>>> 200000000000000000.0
2e+17
0Lưu ý rằng Python trả về cả thành phần thực và ảo dưới dạng số float, mặc dù chúng được chỉ định là số nguyên
Số phức cũng có phương thức
>>> type[1.0]
05 trả về liên hợp phức của số>>>
>>> 200000000000000000.0
2e+17
1Đối với bất kỳ số phức nào, liên hợp của nó là số phức có cùng phần thực và phần ảo bằng nhau về giá trị tuyệt đối nhưng trái dấu. Vì vậy, trong trường hợp này, liên hợp phức tạp của
>>> type[1.0]
06 là >>> type[1.0]
07Các thuộc tính
>>> type[1.0]
03 và >>> type[1.0]
04 không cần dấu ngoặc đơn sau chúng như >>> type[1.0]
05Phương thức
>>> type[1.0]
05 là một hàm thực hiện một hành động trên một số phức, trong khi đó, >>> type[1.0]
03 và >>> type[1.0]
04 không thực hiện bất kỳ hành động nào—chúng chỉ trả về một số thông tin về số đóSự khác biệt giữa các phương thức và thuộc tính là một khía cạnh quan trọng của lập trình hướng đối tượng
Ngoại trừ toán tử chia tầng [
>>> num = 25
60], tất cả các toán tử số học hoạt động với số thực và số nguyên cũng sẽ hoạt động với số phức. Vì đây không phải là hướng dẫn về toán nâng cao nên chúng tôi sẽ không thảo luận về cơ chế của số học phức tạp. Thay vào đó, đây là một số ví dụ về việc sử dụng số phức với toán tử số học>>>
>>> 200000000000000000.0
2e+17
2Thật thú vị, mặc dù không ngạc nhiên từ quan điểm toán học, các đối tượng
>>> 200000000000000000.0
2e+17
6 và >>> 1e-4
0.0001
8 cũng có các thuộc tính >>> type[1.0]
03 và >>> type[1.0]
04 cũng như phương thức >>> type[1.0]
05>>>
>>> 200000000000000000.0
2e+17
3Đối với số float và số nguyên,
>>> type[1.0]
03 và >>> type[1.0]
05 luôn trả về chính số đó và >>> type[1.0]
04 luôn trả về >>> num = 25
78. Tuy nhiên, một điều cần lưu ý là >>> type[1.0]
24 và >>> type[1.0]
25 trả về một số nguyên nếu >>> int["25"]
25
13 là một số nguyên và một số float nếu >>> int["25"]
25
13 là một số floatBây giờ bạn đã thấy những kiến thức cơ bản về số phức, bạn có thể tự hỏi khi nào bạn sẽ cần sử dụng chúng. Nếu bạn đang học Python để phát triển web, khoa học dữ liệu hoặc lập trình cho mục đích chung, sự thật là bạn có thể không bao giờ cần sử dụng số phức
Mặt khác, số phức rất quan trọng trong các lĩnh vực như tính toán khoa học và đồ họa máy tính. Nếu bạn đã từng làm việc trong các miền đó, thì bạn có thể thấy hỗ trợ tích hợp sẵn của Python cho các số phức rất hữu ích
Loại bỏ các quảng cáoPhần kết luận. Số trong Python
Trong hướng dẫn này, bạn đã học tất cả về cách làm việc với các số trong Python. Bạn đã thấy rằng có hai loại số cơ bản—số nguyên và số dấu phẩy động—và Python cũng có hỗ trợ sẵn cho các số phức
Trong hướng dẫn này, bạn đã học
- Cách thực hiện số học cơ bản với các số bằng toán tử số học của Python
- Cách viết các biểu thức số học bằng cách sử dụng các phương pháp hay nhất của PEP 8
- Số dấu phẩy động là gì và tại sao chúng có thể không phải lúc nào cũng chính xác 100 phần trăm
- Cách làm tròn số với
76>>> int["25"] 25
- Số phức là gì và chúng được hỗ trợ như thế nào trong Python
Bất kể mức độ thoải mái của bạn với các con số và toán học, giờ đây bạn đã sẵn sàng thực hiện tất cả các loại phép tính trong mã Python của mình. Bạn có thể sử dụng kiến thức này để giải quyết nhiều vấn đề mà bạn sẽ gặp phải trong sự nghiệp lập trình của mình
Ghi chú. Nếu bạn thích những gì bạn học được trong ví dụ này từ Python Basics. Giới thiệu thực tế về Python 3, thì hãy nhớ xem phần còn lại của cuốn sách
Đọc thêm
Để biết thêm thông tin về các con số và toán học trong Python, hãy xem các tài nguyên này
- Các kiểu dữ liệu cơ bản trong Python
- Mô-đun toán học Python. Mọi thư bạn cân biêt
- Cách làm tròn số trong Python
- Hàm căn bậc hai của Python
Đánh dấu là đã hoàn thành
🐍 Thủ thuật Python 💌
Nhận một Thủ thuật Python ngắn và hấp dẫn được gửi đến hộp thư đến của bạn vài ngày một lần. Không có thư rác bao giờ. Hủy đăng ký bất cứ lúc nào. Được quản lý bởi nhóm Real Python
Gửi cho tôi thủ thuật Python »
Giới thiệu về David Amos
David là một nhà văn, lập trình viên và nhà toán học đam mê khám phá toán học thông qua mã
» Thông tin thêm về DavidMỗi hướng dẫn tại Real Python được tạo bởi một nhóm các nhà phát triển để nó đáp ứng các tiêu chuẩn chất lượng cao của chúng tôi. Các thành viên trong nhóm đã làm việc trong hướng dẫn này là
Aldren
Joanna
Gia-cốp
Bậc thầy Kỹ năng Python trong thế giới thực Với quyền truy cập không giới hạn vào Python thực
Tham gia với chúng tôi và có quyền truy cập vào hàng nghìn hướng dẫn, khóa học video thực hành và cộng đồng các Pythonistas chuyên gia
Nâng cao kỹ năng Python của bạn »
Chuyên gia Kỹ năng Python trong thế giới thực
Với quyền truy cập không giới hạn vào Python thực
Tham gia với chúng tôi và có quyền truy cập vào hàng ngàn hướng dẫn, khóa học video thực hành và cộng đồng Pythonistas chuyên gia
Nâng cao kỹ năng Python của bạn »
Bạn nghĩ sao?
Đánh giá bài viết này
Tweet Chia sẻ Chia sẻ EmailBài học số 1 hoặc điều yêu thích mà bạn đã học được là gì?
Mẹo bình luận. Những nhận xét hữu ích nhất là những nhận xét được viết với mục đích học hỏi hoặc giúp đỡ các sinh viên khác. và nhận câu trả lời cho các câu hỏi phổ biến trong cổng thông tin hỗ trợ của chúng tôi