Lập trình Python cơ bản

Lập trình Python cơ bản

Kiểu dữ liệu số trong Python Kiểu dữ liệu số trong Python Kiểu dữ liệu số trong Python Kiểu dữ liệu số trong Python Kiểu dữ liệu số trong Python 5/5 (113 reviews)

Kiểu dữ liệu số trong Python

Đã đăng 2017-09-17 23:38:45 bởi Kteam
32 bình luận 17448 lượt xem
Kiểu dữ liệu số trong Python 5 /5 stars (5 reviews)
 

Dẫn nhập

Trong các bài trước, bạn đã làm quen với khái niệm BIẾN TRONG PYTHON.

Ở bài này Kteam sẽ đề cập đến các bạn KIỂU DỮ LIỆU SỐ.  Một trong những kiểu dữ liệu cực kì quan trọng của Python!


Nội dung chính

Để đọc hiểu bài này tốt nhất bạn cần:

Trong bài học này, chúng ta sẽ cùng tìm hiểu các vấn đề:

  • Số là gì?
  • Một số kiểu dữ liệu số cơ bản trong Python.
  • Các toán tử cơ bản với kiểu dữ liệu số trong Python.
  • Thư viện math trong Python.

Số là gì?

Con số ở khắp nơi trong cuộc sống chúng ta. Bất cứ lúc nào bạn cũng có thể bắt gặp con số trong cuộc sống.

Tháng này có 30 hay 31 ngày? Mai đi chợ bó rau muốn 3000 đồng hay là 3500 đồng? Bài thi hôm bữa được 9,1 điểm hay là 1,9? Cái bánh này mình ăn ½ hay là ¾. Có thể thấy, số không còn là điều gì xa lạ với bạn. Và đương nhiên điều này tương tự với “con trăn” Python.

Trong Python cũng hỗ trợ rất nhiều kiểu dữ liệu số. Một số kiểu dữ liệu cơ bản như số nguyên (integers), số thực (floating-point), phân số (fraction), số phức (complex). Và những kiểu dữ liệu này sẽ được Kteam giới thiệu cho các bạn ngay sau đây!


Một số kiểu dữ liệu số cơ bản trong Python

Số nguyên

Số nguyên bao gồm các số nguyên dương (1, 2, 3, ..), các số nguyên âm (-1, -2, -3) và số 0. Trong Python, kiểu dữ liệu số nguyên cũng không có gì khác biệt.

Ví dụ: Gán giá trị cho một biến a là 4 và xuất ra kiểu dữ liệu của a.

>>> a = 4    # gán giá giá trị của biến a là số 4, là một số nguyên
>>> a
4
>>> type(a)  # số nguyên thuộc lớp ‘int’ trong Python
<class ‘int’>

Một điểm đáng chú ý trong Python 3.X đó là kiểu dữ liệu số nguyên là vô hạn. Điều này cho phép bạn tính toán với những số cực kì lớn, điều mà đa số các ngôn ngữ lập trình khác KHÔNG THỂ.


Số thực

Về kiểu dữ liệu số thực, thì đây là tập hợp các số nguyên và số thập phân 1, 1.4, -123, 69.96,…

Ví dụ: Gán giá trị của biến f là 1.23 và xuất ra kiểu dữ liệu của f.

>>> f = 1.23   # gán giá trị của biến f là số 1.23, là một số thực
>>> f
1.23
>>> type(f)    # số thực trong Python thuộc lớp ‘float’
<class ‘float’>
>>> q = 1.0   # đây là số thực, không phải số nguyên
>>> q
1.0
>>> type(q)
<class ‘float’>

Lưu ý: Thường khi chúng ta viết số thực, phần nguyên và phần thập phân được tách nhau bởi dấu phẩy ( , ). Thế nhưng trong Python, dấu phẩy ( , ) này được thay thế thành dấu chấm ( . )

Số thực trong Python có độ chính xác xấp xỉ 15 chữ số phần thập phân.

Ví dụ: Số thực 10/3

>>> 10 / 3   # đây là một số vô hạn tuần hoàn 3.3333333333333333333..
3.3333333333333335

Nếu bạn muốn có kết quả được chính xác cao hơn, bạn nên sử dụng Decimal

>>> from decimal import *   # lấy toàn bộ nội dung của thư viện Decimal
>>> getcontext().prec = 30   # lấy tối đa 30 chữ số phần nguyên và phần thập phân Decimal
>>> Decimal(10) / Decimal(3)
Decimal(‘3. 33333333333333333333333333333’)
>>> Decimal(100) / Decimal(3)
Decimal(’33.3333333333333333333333333333’)
>>> type(Decimal(5))   # các số Decimal thuộc lớp Decimal
<class 'decimal.Decimal'>

Tuy Decimal có độ chính xác cao hơn so với float tuy nhiên nó lại khá rườm rà so với float. Do đó, hãy cân bằng sự tiện lợi và chính xác để chọn kiểu dữ liệu phù hợp.


Phân số

Chúng ta biết đến phân số qua sách giáo khoa toán lớp 3. Phân số gồm hai phần là tử sốmẫu số.

Tạo một phân số

Để tạo phân số trong python, ta sử dụng hàm Fraction với cú pháp sau

Fraction(<Tử_số>, <Mẫu_số>)

Ví dụ: Nhập phân số ¼, 3/9, ¾,

>>> from fractions import * # lấy toàn bộ nội dung của thư viện decimal
>>> Fraction(1, 4)   # phân số với tử số là 1, mẫu số là 4.
Fraction(1, 4)
>>> Fraction(3, 9)  # phân số sẽ được tối giản nếu có thể
Fraction(1, 3)
>>> type(Fraction(3, 4))  # các phân số thuộc lớp Fraction
<class 'fractions.Fraction'>

Số phức

Nếu bạn chưa biết đến Số Phức, Kteam khuyên bạn nên bỏ qua phần này.

Số phức gồm 2 thành phần :

<Phần thực> + <Phần ảo> j

Trong đó

  • <Phần thực> <Phần ảo> là số thực
  • j là đơn vị ảo trong toán học với  j2 = -1

Tạo một số phức

Để tạo một số phức, bạn có thể sử dụng hàm complex với cú pháp sau

complex(<Phần_thực>,<Phần_ảo>)

Gán giá trị số phức cho một biến

<tên_biến> = <Phần_thực> + <Phần_Ảo>j


Xuất ra từng phần của một biến số phức

Để xuất ra phần thực, ta sử dụng cú pháp:

<tên_biến>.real

Để xuất ra phần ảo của biến số phức, ta dùng cú pháp:

<tên_biến>.imag

Ví dụ: Nhập một số số phức sau

  1. 1 + 3j 
  2. Gán biến c có giá trị 2+1j. Xuất ra phần thực và phần ảo của biến c.
  3. 4 +j (sẽ có lỗi vì kiểu dữ liệu nhập vào không đúng).
  4. Tạo số phức có phần thực là 3, phần ảo là 1.
  5. Tạo số phức chỉ có phần thực là 2.
  6. Xuất ra kiểu dữ liệu của số 3+1j.
>>> 3j + 1  # phần thực là 1, phần ảo là 3
(1 + 3j)
>>> c = 2 + 1j  # gán giá trị cho biến c là một số phức với phần thực là 2 còn phần ảo là 1
>>> c
(2 + 1j)
>>> 4 + j   # phần ảo là 1, tuy vậy chúng ta không được phép bỏ số 1 như trong toán
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'j' is not defined
>>> 4 + 1j
(4 + 1j)
>>> c.imag  # lấy phần ảo của số phức 2 + 1j mà ta đã gán cho biến c
1.0
>>> c.real  # lấy phần thực
2.0
>>> complex(3, 1)  # dùng hàm complex để tạo một số phức với phần thực là 3, ảo là 1
(3 + 1j)
>>> complex(2)      # chỉ có phần thực, phần ảo được mặc định là 0
(2 + 0j)
>>> type(3 + 1j)   # các số phức thuộc lớp complex
<class 'complex'>

Các toán tử cơ bản với kiểu dữ liệu số trong Python

Biểu thức chính là một thực thể toán học. Nói cách khác, nó là một sự kết hợp giữa 2 thành phần:

  • Toán hạng: có thể là một hằng số, biến số (X , Y)
  • Toán tử: xác định cách thức làm việc giữa các toán hạng (+,-,*,/)

Dưới đây là một số biểu thức toán học của kiểu dữ liệu số trong Python

 

Ví dụ: Cho 2 biến a,b lần lượt bằng 8 và 3. Thực hiện các biểu thức toán học với a,b.

>>> a = 8
>>> b = 3
>>> a + b   # tương đương 8 cộng 3
11
>>> a – b    # tương đương 8 trừ 3
5
>>> a * b   # tương đương 8 nhân 3
24
>>> a / b   # tương đương 8 chia 3
2.6666666666666665
>>> a // b  # tương đương với 8 chia nguyên 3
2
>>> a % b   # tương đương với 8 chia dư 3
2
>>> a ** b   # tương đương 8 mũ 3
512

Thư viện math trong Python

Thư viện math trong Python hỗ trợ rất nhiều hàm tính toán liên quan đến toán học.

Để sử dụng một thư viện nào đó, ta dùng lệnh

import <tên_thư_viện>

Muốn sử dụng một hàm nào đó của thư viện, ta sử dụng cú pháp

<tên_thư_viện>.<tên_hàm>

Dưới đây là một số hàm thường được dùng trong việc tính toán cơ bản.

Ví dụ:

>>> import math   # lấy nội dung của thư viện math về sử dụng
>>> math.trunc(3.9)
3
>>> math.fabs(-3)
3.0
>>> math.sqrt(16)
4.0
>>> math.gcd(6, 4)
2

Câu hỏi củng cố

  1. Kiểu dữ liệu số nguyên thuộc lớp nào?
  2. Sự khác nhau giữa hai biến a và b dưới đây là gì?
>>> a = 0
>>> b = 0.0
  1. Tại sao lại có sự khác nhau khi sử dụng hàm `trunc` ở thư viện math so với toán tử `//`
>>> import math
>>> math.trunc(15 / -4)
-3
>>> 15 // -4
-4

Trong khi chúng lại có trùng kết quả ở phép tính này. 

>>> import math
>>> math.trunc(15 / 4)
3
>>> 15 // 4
3

Đáp án của phần này sẽ được trình bày ở bài tiếp theo. Tuy nhiên, Kteam khuyến khích bạn tự trả lời các câu hỏi để củng cố kiến thức cũng như thực hành một cách tốt nhất!  


Kết luận

Bài viết này đã giới thiệu cho các bạn một số KIỂU DỮ LIỆU SỐ trong Python.

Ở bài sau, Kteam sẽ nói về KIỂU DỮ LIỆU CHUỖI TRONG PYTHON - một kiểu dữ liệu cũng cực kì quan trọng.

Cảm ơn bạn đã theo dõi bài viết. Hãy để lại bình luận hoặc góp ý của mình để phát triển bài viết tốt hơn. Đừng quên “Luyện tập – Thử thách – Không ngại khó”.

 



Tài liệu 

Nhằm phục vụ mục đích học tập Offline của cộng đồng, Kteam hỗ trợ tính năng lưu trữ nội dung bài học KIỂU DỮ LIỆU SỐ TRONG PYTHON dưới dạng file PDF trong link bên dưới.

Ngoài ra, bạn cũng có thể tìm thấy các tài liệu được đóng góp từ cộng đồng ở mục TÀI LIỆU trên thư viện Howkteam.com

Đừng quên like hoặc +1 Google để ủng hộ Kteam và tác giả nhé! 


Thảo luận

Nếu bạn có bất kỳ khó khăn hay thắc mắc gì về khóa học, đừng ngần ngại đặt câu hỏi trong phần BÌNH LUẬN bên dưới hoặc trong mục HỎI & ĐÁP trên thư viện Howkteam.com để nhận được sự hỗ trợ từ cộng đồng. 

 

Chia sẻ:
Thảo luận Hỏi và đáp Báo lỗi bài viết
Hủy bỏ   hoặc  
Kiểu dữ liệu số trong Python
lichthiep87 2018-10-30 10:54:05

Khi em chạy thì báo lỗi như này. chạy cmd python thì ok

0 bình chọn
Reply
View all 1 comments
Kteam - Howkteam Free Education
lichthiep87 2018-10-30 10:54:36
Em sử dụng pycham code anh ạ
0 bình chọn
Reply
Kiểu dữ liệu số trong Python
toilasuperman204 2018-10-02 03:48:55

Ad giúp em phần này với

Em nhập 

c=10/3

print(c)

nó cho kết quả là 3 không phải 3.3333333

Em kiểm tra thì nó hiểu c của em là interger

Em không biết làm sao để nó trở lại là float.

Ad giúp em với T..T

0 bình chọn
Reply
View all 1 comments
Kteam - Howkteam Free Education
phuongtransmile99 2018-10-05 23:19:15
bạn thử print(float(c)) nhé
0 bình chọn
Reply
Kiểu dữ liệu số trong Python
Lifeisgood 2018-09-26 11:28:48

Chào thầy! 

Bài hướng dẫn của thầy rất hay! 

Tôi làm bài tập theo đến phần from decimal import* thì gặp lỗi "no module name decimal"

*mặc dù đã thay đổi từ viết thường>viết hoa và ngược lại nhưng vẫn k được

Rất mong lời giải đáp của thầy để tôi có thể tiếp tục giáo trình. 

Xin cám ơn!

0 bình chọn
Reply
Kiểu dữ liệu số trong Python
Sagi-Viz 2018-09-10 16:16:10

Bài hướng dẫn cực kì rõ ràng xúc tích... Cảm ơn ad đã tâm huyết làm video chất lượng vậy ah

1 bình chọn
Reply
Kiểu dữ liệu số trong Python
lamtoto45 2018-07-23 16:14:27

Cho e hỏi e làm y như videoo sao lỗi như thế ạ .Em xin cảm ơnHỏi lý do

0 bình chọn
Reply
View all 7 comments
Kteam - Howkteam Free Education
huycuong10081996 2018-08-01 15:03:03
Dấu &quot;*&quot; của bạn phải dính với chữ import bạn nhé
0 bình chọn
Reply
Kteam - Howkteam Free Education
quangduy21102003 2018-08-04 11:45:06
Dấu (*) nó sát vào import luôn nhé bạn :D
0 bình chọn
Reply
Kteam - Howkteam Free Education
Ngoc Nguyen 2018-08-05 17:28:14
getcontext = 30 chứ không phải là getcontext - 30
0 bình chọn
Reply
Kteam - Howkteam Free Education
LVH 2018-08-09 14:44:51
cần lắm một câu trả lời đúng
0 bình chọn
Reply
Kteam - Howkteam Free Education
tampham.1999.cancer 2018-08-12 23:34:54
bn build chưa , mk chạy k sao cả
0 bình chọn
Reply
Kteam - Howkteam Free Education
bathongvo 2018-09-03 12:24:25
nếu như tất cả các câu lệnh bạn viết đúng hết mà vẫn bị lỗi như thế thì do tên file nhé. Bạn đổi tên file thử xem.
0 bình chọn
Reply
Kteam - Howkteam Free Education
lichthiep87 2018-10-30 10:40:37
của em cũng bị lỗi này em sử dụng pycham khi run báo lỗi như này NameError: name 'getcontext' is not defined. em chạy trên cmd python thì ok
0 bình chọn
Reply
Kiểu dữ liệu số trong Python
kelaclong123 2018-07-22 13:47:02

khi sử dụng ctrl + B thì sublimetext hiện ra như vậy ạ, em có thử cài lại python bằng những phiên bản khác thì kết quả vẫn như vậy em đang dùng bản 3.7 và windown 7 ạ. Mong mọi ng giúp đỡ ạ

'python' is not recognized as an internal or external command,
operable program or batch file.
[Finished in 0.4s with exit code 1]
[shell_cmd: python -u "D:\Games\python\demo.py"]
[dir: D:\Games\python]
[path: C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x86;C:\Program Files (x86)\Intel\OpenCL SDK\2.0\bin\x64]

0 bình chọn
Reply
Kiểu dữ liệu số trong Python
maykhaclaserankhanh 2018-06-07 20:11:06

Anh ơi sao em build để chạy python trong sublime test không được ạ. nó báo là

C:\Users\Dungnhi\AppData\Local\Programs\Python\Python36-32\python.exe: can't find '__main__' module in ''
[Finished in 0.5s with exit code 1]
[shell_cmd: python -u ""]
[dir: C:\Program Files (x86)\Sublime Text 3]
[path: C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;c:\Program Files (x86)\QuickTime\QTSystem\;C:\Users\Dungnhi\AppData\Local\Programs\Python\Python36-32\Scripts\;C:\Users\Dungnhi\AppData\Local\Programs\Python\Python36-32\]

0 bình chọn
Reply
Kiểu dữ liệu số trong Python
Nick Fury 2018-05-20 21:57:24

bài viết hay và hữu ích

0 bình chọn
Reply
Kiểu dữ liệu số trong Python
1711545065 2018-04-23 11:41:58

from decimal import *
getcontext().prec = 10
print(decimal(10)/decimal(3))
Nó báo lỗi File "C:\Users\Megu\Desktop\test.py", line 3, in <module> là sao nhỉ ?? :< ai giúp em với

0 bình chọn
Reply
View all 1 comments
Kteam - Howkteam Free Education
1711545065 2018-04-23 12:32:41
à do e ko viết hoa :)
0 bình chọn
Reply
Kiểu dữ liệu số trong Python
ngocduy 2018-03-19 17:06:59

có cả câu hỏi dưới bài giảng rất hấp dẫn 

 

0 bình chọn
Reply
Kiểu dữ liệu số trong Python
adquang199x 2018-03-16 22:54:34

cho e hỏi sao khi báo hàm fractions xong khi sử dụng thì lại bỏ đi chữ s ạ.(Fraction).bài trước thì decimal không bỏ j đi

0 bình chọn
Reply
Kiểu dữ liệu số trong Python
maithanhcong2002 2018-02-19 11:27:32

Ai giải thích giùm em với 

1) from decimal import *
2) getcontext().prec=20
3) print(Decimal(10/3))

chường trình chạy ra như vaayk 3.333333333333333481363069950020872056484222412109375

0 bình chọn
Reply
View all 1 comments
Kteam - Howkteam Free Education
2018-02-20 15:54:26
print (Decimal(10)/Decimal(3))
0 bình chọn
Reply
Kiểu dữ liệu số trong Python
nguyenhuuduychanh 2018-02-13 01:25:53

câu hỏi củng cố : 

1. số nguyên thuộc lớp int

2. a là int
    b là float

3. math.trunc(x) chỉ lấy phần nguyên 

    còn x//y kết quả luôn luôn nhỏ hơn hoặc bằng X / Y (bài viết bị sai "nhỏ" vs "lớn" ấy) thực chất là làm tròn xuống giống hàm math.floor(x)

1 bình chọn
Reply
Kiểu dữ liệu số trong Python
slyedmrsavnv 2018-02-12 09:40:32

hay quá anh ơi

1 bình chọn
Reply
Kiểu dữ liệu số trong Python
hoangdat0303 2018-02-11 21:15:41

hay đấy

1 bình chọn
Reply
Kiểu dữ liệu số trong Python
richchocolateandcream 2017-12-13 05:03:57

admin cho em xin download file word mà cuối video ad dùng với

0 bình chọn
Reply
View all 1 comments
Kteam - Howkteam Free Education
Kteam 2018-03-18 11:12:36
đang cập nhập nha e.
0 bình chọn
Reply
Kiểu dữ liệu số trong Python
anaconda_dakar95 2017-12-12 10:15:14

có còn phản hồi trên đây không thế admin!?

0 bình chọn
Reply
View all 1 comments
Kteam - Howkteam Free Education
Kteam 2018-03-18 11:12:26
có nhe bạn
0 bình chọn
Reply
Kiểu dữ liệu số trong Python
bamboo 2017-11-22 16:42:20

X / Y

Thương của X với Y (kết quả luôn luôn là một số thức)

X // Y

Thương nguyên của X với Y (kết quả luôn luôn lớn hơn hoặc bằng X / Y)

 

Hình như tác giả biết ngược phần X // Y.

Phải là: ??

X // Y

Thương nguyên của X với Y (kết quả luôn luôn nhỏ hơn hoặc bằng X / Y)

0 bình chọn
Reply
View all 1 comments
Kteam - Howkteam Free Education
richchocolateandcream 2017-12-13 05:02:25
mình nghĩ phép toán này là làm tròn đến số nguyên gần nhất
0 bình chọn
Reply
Hủy bỏ   hoặc  
Hủy bỏ   hoặc  

Chiến dịch

Kteam - Howkteam Free Education