Kiểu dữ liệu số trong Python là gì?

<p style="text-align: justify;">Trong c&aacute;c chủ đề trước, ch&uacute;ng ta d&atilde; l&agrave;m quen với c&aacute;c thao t&aacute;c v&agrave;o ra dữ liệu cơ bản v&agrave; l&agrave;m việc tr&ecirc;n c&aacute;c chuỗi k&yacute; tự. Tuy nhi&ecirc;n, giống như c&aacute;c ng&ocirc;n ngữ lập tr&igrave;nh kh&aacute;c, Python kh&ocirc;ng thể chỉ l&agrave;m việc đơn giản như vậy. Ch&uacute;ng ta c&ograve;n cần t&iacute;nh to&aacute;n, l&agrave;m việc tr&ecirc;n c&aacute;c con số, dữ liệu kh&aacute;c. Ch&iacute;nh v&igrave; vậy, trong chủ đề tiếp theo n&agrave;y, ch&uacute;ng ta sẽ bắt đầu với một kiểu dữ liệu cơ sở quan trọng trong Python đ&oacute; l&agrave; kiểu dữ liệu số.</p> <p style="text-align: justify;">Trong b&agrave;i viết n&agrave;y, ch&uacute;ng ta sẽ t&igrave;m hiểu về c&aacute;c kiểu dữ liệu số kh&aacute;c nhau được sử dụng trong Python v&agrave; c&aacute;c ph&eacute;p to&aacute;n được hỗ trợ với c&aacute;c kiểu dữ liệu n&agrave;y trong Python.</p> <h2 style="text-align: justify;">Kiểu dữ liệu số trong Python</h2> <p style="text-align: justify;">Python được tạo ra cho c&aacute;c nh&agrave; khoa học tiện lợi sử dụng cho lập tr&igrave;nh m&agrave; kh&ocirc;ng cần thực hiện qu&aacute; nhiều thao t&aacute;c do đ&oacute; n&oacute; hỗ trợ hầu hết c&aacute;c kiểu dữ liệu số tr&ecirc;n thực tế. Python hỗ trợ kiểu số nguy&ecirc;n, số thực, v&agrave; số phức. Ch&uacute;ng được định nghĩa l&agrave; c&aacute;c lớp int, float v&agrave; complex tương ứng trong Python.</p> <p style="text-align: justify;">Số nguy&ecirc;n v&agrave; số thập ph&acirc;n được ph&acirc;n biệt nhau bởi dấu chấm (.). V&iacute; dụ: 5 l&agrave; số nguy&ecirc;n trong khi 5.0 l&agrave; số thập ph&acirc;n.</p> <p style="text-align: justify;">Số phức được viết dưới dạng $a + bj$, trong đ&oacute; a l&agrave; phần thực v&agrave; b l&agrave; phần ảo.</p> <p style="text-align: justify;">Ch&uacute;ng ta c&oacute; thể sử dụng h&agrave;m <span class="lang:default decode:true crayon-inline ">type()</span> để biết biến hoặc một đối tượng thuộc lớp n&agrave;o v&agrave; sử dụng h&agrave;m <span class="lang:default decode:true crayon-inline ">isinstance()</span> để kiểm tra xem một biến hoặc đối tượng c&oacute; thuộc một lớp cụ thể n&agrave;o hay kh&ocirc;ng.</p> <p style="text-align: justify;">V&iacute; dụ 1:</p> <pre class="language-python"><code>a = 100 print(type(a)) print(type(100.30)) b = 10 + 24j print(b + 20) print(isinstance(b, complex))</code></pre> <p style="text-align: justify;">Kết quả:</p> <pre class="language-markup"><code>&lt;class 'int'&gt; &lt;class 'float'&gt; (30+24j) True</code></pre> <p style="text-align: justify;">Python cho ph&eacute;p biểu diễn số nguy&ecirc;n c&oacute; độ d&agrave;i bất kỳ, nhưng chỉ cho ph&eacute;p biểu diễn c&aacute;c số thập ph&acirc;n c&oacute; độ ch&iacute;nh x&aacute;c đến 15 chữ số thập ph&acirc;n (do đ&oacute; ch&uacute;ng ta sẽ quay lại với vấn đề t&iacute;nh to&aacute;n tr&ecirc;n số thực ở một số b&agrave;i ph&iacute;a sau).</p> <div class="ant-row" style="row-gap: 0px;"> <div class="ant-col ant-col-24"> <h2 class="ant-typography lessonCourse_title__1Qw43">Xử l&yacute; t&iacute;nh to&aacute;n tr&ecirc;n dữ liệu số trong Python</h2> </div> </div> <div class="ant-row" style="row-gap: 0px;"> <div class="ant-col ant-col-24"> <div class="content--html line-numbers"> <div> <p style="text-align: justify;">Để l&agrave;m việc tr&ecirc;n kiểu dữ liệu số, Python cung cấp cho ch&uacute;ng ta c&aacute;c to&aacute;n tử hay c&aacute;c ph&eacute;p to&aacute;n l&agrave;m việc tr&ecirc;n kiểu dữ liệu số học.</p> <p style="text-align: justify;">V&iacute; dụ 2:</p> <pre class="line-numbers language-markup" tabindex="0"><code>100 + 300</code></pre> </div> </div> </div> </div> <p style="text-align: justify;">Ở đ&acirc;y, dấu cộng + l&agrave; to&aacute;n tử thực hiện ph&eacute;p cộng hay ph&eacute;p t&iacute;nh tổng cho hai to&aacute;n hạng. 100 v&agrave; 300 l&agrave; to&aacute;n hạng v&agrave; 400 l&agrave; kết quả đầu ra của ph&eacute;p to&aacute;n.</p> <p style="text-align: justify;">To&aacute;n tử số học được sử dụng để thực hiện c&aacute;c ph&eacute;p to&aacute;n như cộng, trừ, nh&acirc;n, chia,&hellip; Bảng b&ecirc;n dưới đ&acirc;y sẽ liệt k&ecirc; c&aacute;c to&aacute;n tử số học được sử dụng trong ng&ocirc;n ngữ lập tr&igrave;nh Python:</p> <table style="border-collapse: collapse; margin-left: auto; margin-right: auto; width: 50.3556%; height: 230px;"> <tbody> <tr style="height: 54px;"> <td style="text-align: center; width: 7.42702%; height: 54px;">To&aacute;n tử</td> <td style="width: 40.4685%; height: 54px;"> <p style="text-align: center;">M&ocirc; tả</p> </td> <td style="text-align: center; width: 30.2778%; height: 54px;">C&uacute; ph&aacute;p</td> <td style="text-align: center; width: 14.0702%; height: 54px;">V&iacute; dụ</td> </tr> <tr style="height: 22px;"> <td style="text-align: center; width: 7.42702%; height: 22px;">+</td> <td style="width: 40.4685%; height: 22px;">Thực hiện ph&eacute;p cộng cho c&aacute;c to&aacute;n hạng.</td> <td style="text-align: center; width: 30.2778%; height: 22px;">a + b + 100</td> <td style="text-align: center; width: 14.0702%; height: 22px;">100+200=300</td> </tr> <tr style="height: 22px;"> <td style="text-align: center; width: 7.42702%; height: 22px;">-</td> <td style="width: 40.4685%; height: 22px;">Thực hiện ph&eacute;p trừ cho c&aacute;c to&aacute;n hạng.</td> <td style="text-align: center; width: 30.2778%; height: 22px;">a &ndash; b - 200</td> <td style="text-align: center; width: 14.0702%; height: 22px;">200-100=100</td> </tr> <tr style="height: 22px;"> <td style="text-align: center; width: 7.42702%; height: 22px;">*</td> <td style="width: 40.4685%; height: 22px;">Thực hiện ph&eacute;p nh&acirc;n 2 to&aacute;n hạng.</td> <td style="text-align: center; width: 30.2778%; height: 22px;">a * b</td> <td style="text-align: center; width: 14.0702%; height: 22px;">16*5=80</td> </tr> <tr style="height: 22px;"> <td style="text-align: center; width: 7.42702%; height: 22px;">/</td> <td style="width: 40.4685%; height: 22px;">Thực hiện ph&eacute;p chia cho 2 to&aacute;n hạng.</td> <td style="text-align: center; width: 30.2778%; height: 22px;">a / b</td> <td style="text-align: center; width: 14.0702%; height: 22px;">8/5=1.6</td> </tr> <tr style="height: 44px;"> <td style="text-align: center; width: 7.42702%; height: 44px;">%</td> <td style="width: 40.4685%; height: 44px;">Ph&eacute;p chia lấy phần dư.</td> <td style="text-align: center; width: 30.2778%; height: 44px;">a % b (phần dư của ph&eacute;p a /b)</td> <td style="text-align: center; width: 14.0702%; height: 44px;">8%5=3</td> </tr> <tr style="height: 22px;"> <td style="text-align: center; width: 7.42702%; height: 22px;">//</td> <td style="width: 40.4685%; height: 22px;">Ph&eacute;p chia l&agrave;m tr&ograve;n dưới</td> <td style="text-align: center; width: 30.2778%; height: 22px;">a // b</td> <td style="text-align: center; width: 14.0702%; height: 22px;">8//5=1</td> </tr> <tr style="height: 22px;"> <td style="text-align: center; width: 7.42702%; height: 22px;">**</td> <td style="width: 40.4685%; height: 22px;">Số mũ.</td> <td style="text-align: center; width: 30.2778%; height: 22px;">a**b (a mũ b)</td> <td style="text-align: center; width: 14.0702%; height: 22px;">2**3=8</td> </tr> </tbody> </table> <p style="text-align: justify;">V&iacute; dụ 3:</p> <pre class="line-numbers language-python" tabindex="0"><code>a = 200 b = 2 print('a % b =',a%b) print('a + b =',a+b) print('a - b =',a-b) print('a * b =',a*b) print('a / b =',a/b) print('a // b =',a//b) print('a ** b =',a**b)</code></pre> <p style="text-align: justify;">Kết quả:</p> <pre class="line-numbers language-markup" tabindex="0"><code>a % b = 0 a + b = 202 a - b = 198 a * b = 400 a / b = 100.0 a // b = 100 a ** b = 40000</code></pre> <p>Trong Python, một điều đặc biệt đ&oacute; l&agrave; tất cả c&aacute;c ph&eacute;p to&aacute;n kể cả c&aacute;c ph&eacute;p to&aacute;n chia lấy dư (modulo %) v&agrave; ph&eacute;p chia l&agrave;m tr&ograve;n dưới (//) đều c&oacute; thể l&agrave;m việc được cả tr&ecirc;n số thực lẫn số nguy&ecirc;n.</p> <p>V&iacute; dụ 4:</p> <pre class="language-python"><code>a=8.5 b=5.2 print(a%b) print(a//b) </code></pre> <p>Kết quả:</p> <pre class="language-markup"><code>3.3 1.0</code></pre> <p>Tuy nhi&ecirc;n, ch&uacute;ng ta kh&ocirc;ng n&ecirc;n d&ugrave;ng như v&iacute; dụ tr&ecirc;n bởi n&oacute; sẽ g&acirc;y ra nhiều vấn đề kh&oacute; hiểu trong qu&aacute; tr&igrave;nh hoạt động v&agrave; bảo tr&igrave;.</p> <p>Với số phức th&igrave; c&aacute;c ph&eacute;p to&aacute;n chia l&agrave;m tr&ograve;n v&agrave; chia dư đều kh&ocirc;ng thực hiện được.</p> <p>V&iacute; dụ 5:</p> <pre class="language-python"><code>a=5-3j b=4 print(a%b) print(a//b)</code></pre> <p>Kết quả:</p> <pre class="language-python"><code>Traceback (most recent call last): File "&lt;pyshell#9&gt;", line 3, in &lt;module&gt; print(a%b) TypeError: can't mod complex numbers.</code></pre> <h2 style="text-align: justify;">Ph&eacute;p g&aacute;n tắt</h2> <p style="text-align: justify;">Trong Python, ngo&agrave;i ph&eacute;p g&aacute;n gi&aacute; trị của biến th&ocirc;ng thường <code>a = 5</code> ch&uacute;ng ta c&ograve;n c&oacute; một số c&aacute;ch g&aacute;n kh&aacute;c, gọi l&agrave; c&aacute;c ph&eacute;p g&aacute;n tắt. </p> <p style="text-align: justify;">Ph&eacute;p g&aacute;n tắt được sử dụng trong một số trường hợp để thay thế cho c&aacute;c biểu thức m&agrave; to&aacute;n hạng b&ecirc;n tr&aacute;i giống to&aacute;n hạng b&ecirc;n phải. Chẳng hạn: a=a+5, a=5*2....</p> <p style="text-align: justify;">C&aacute;c biểu thức n&agrave;y rất đặc biệt v&agrave; c&oacute; lẽ kh&aacute; kh&oacute; hiểu với những bạn mới học. Nhưng về cơ bản n&oacute; c&oacute; &yacute; nghĩa l&agrave; t&iacute;nh gi&aacute; trị của vế phải với gi&aacute; trị a gốc, sau đ&oacute; lấy kết quả của vế phải để g&aacute;n lại cho biến cũ b&ecirc;n tr&aacute;i.</p> <p style="text-align: justify;">V&iacute; dụ: với gi&aacute; trị gốc a=5, khi đ&oacute; c&acirc;u lệnh</p> <pre class="language-python"><code>a=a+5</code></pre> <p style="text-align: justify;">sẽ cho kết quả a=10 v&agrave; ph&eacute;p g&aacute;n n&agrave;y c&oacute; &yacute; nghĩa l&agrave; g&aacute;n a=10.</p> <p style="text-align: justify;">Để r&uacute;t gọn c&aacute;ch thức g&aacute;n n&agrave;y, ch&uacute;ng ta sử dụng ph&eacute;p g&aacute;n tắt trong Python, chẳng hạn như <code>a += 5</code>. N&oacute; sẽ ho&agrave;n to&agrave;n tương đương với biểu thức <code>a = a + 5</code>. Một c&aacute;ch tương tự, c&aacute;c ph&eacute;p to&aacute;n kh&aacute;c trong Python cũng hỗ trợ c&aacute;ch g&aacute;n tắt n&agrave;y. Như trong bảng sau:</p> <div class="table-responsive"> <table style="border-collapse: collapse; margin-left: auto; margin-right: auto;" border="0"> <tbody> <tr> <th>Ph&eacute;p to&aacute;n</th> <th>V&iacute; dụ</th> <th>Tương đương với</th> </tr> <tr> <td>=</td> <td>x = 5</td> <td>x = 5</td> </tr> <tr> <td>+=</td> <td>x += 5</td> <td>x = x + 5</td> </tr> <tr> <td>-=</td> <td>x -= 5</td> <td>x = x - 5</td> </tr> <tr> <td>*=</td> <td>x *= 5</td> <td>x = x * 5</td> </tr> <tr> <td>/=</td> <td>x /= 5</td> <td>x = x / 5</td> </tr> <tr> <td>%=</td> <td>x %= 5</td> <td>x = x % 5</td> </tr> <tr> <td>//=</td> <td>x //= 5</td> <td>x = x // 5</td> </tr> <tr> <td>**=</td> <td>x **= 5</td> <td>x = x ** 5</td> </tr> </tbody> </table> </div> <p style="text-align: justify;">Như vậy, trong b&agrave;i n&agrave;y ch&uacute;ng ta đ&atilde; nắm được c&aacute;ch thức để l&agrave;m việc với c&aacute;c kiểu dữ liệu dạng số như số nguy&ecirc;n, số thực v&agrave; số phức. Tiếp theo ch&uacute;ng ta h&atilde;y c&ugrave;ng luyện tập với một số b&agrave;i tập để r&egrave;n luyện kỹ năng l&agrave;m việc với dữ liệu số.</p>