Python dainganxanh
  • Lời nói đầu
  • Chương I. SƠ LƯỢC
    • Bài 1. Cài đặt môi trường
    • Bài 2. Từ khóa và định danh
    • Bài 3. Câu lệnh, khối lệnh và chú thích
    • Bài 4. Nhập, xuất dữ liệu
    • Bài 5. Toán tử và lệnh gán
    • Bài 6. Biến, Hằng
    • Bài 7. Kiểu dữ liệu
    • Bài 8. Thao tác với tệp (cơ bản)
    • Bài 9. Tổng quan về Python
    • Bài tập chương 1
  • Chương II. RẼ NHÁNH - LẶP
    • Bài 10. Cấu trúc rẽ nhánh if…else
    • Bài 11. Cấu trúc lặp với for
    • Bài 12. Cấu trúc lặp với while
    • Bài 13. Lệnh break và continue
    • Bài tập chương 2
  • Chương III. HÀM & MODULE
    • Bài 14. Hàm
    • Bài 15. Tham số hàm
    • Bài 16. Đệ quy
    • Bài 17. Hàm ẩn danh
    • Bài 18. Biến toàn cục và cục bộ
    • Bài 19. Module
    • Bài 20. Package
  • Chương IV. KIỂU DỮ LIỆU
    • Bài 21. Dữ liệu kiểu số
    • Bài 22. Dữ liệu kiểu string
    • Bài 23. Dữ liệu kiểu list
    • Bài 24. Dữ liệu kiểu tuple
    • Bài 25. Dữ liệu kiểu set
    • Bài 26. Dữ liệu kiểu dictionary
  • Chương V. TỆP & THƯ MỤC
    • Bài 27. Đọc và ghi file
    • Bài 28. Quản lý file và folder
  • Chương VI. LỖI & NGOẠI LỆ
    • Bài 29. Ngoại lệ
    • Bài 30. Xử lý ngoại lệ
    • Bài 31. Xây dựng ngoại lệ
  • Chương VII. HƯỚNG ĐỐI TƯỢNG
    • Bài 32. Lập trình hướng đối tượng
    • Bài 33. Đối tượng và Lớp
    • Bài 34. Kế thừa
    • Bài 35. Đa kế thừa
    • Bài 36. Nạp chồng toán tử
  • Chương VIII. NGÀY - GIỜ
    • Python datetime
    • Python strftime()
    • Python strptime()
    • Current date and time
    • Get Current time
    • Timestamp to datetime
    • Python time Module
    • Python sleep()
  • Chương IX. CHỦ ĐỀ NÂNG CAO
    • Python Iterators
    • Python Generators
    • Python Closures
    • Python Decorators
    • Python @property decorator
    • Python RegEx
    • Python Examples
  • PHỤ LỤC - GHI CHÉP
    • Hàm map()
    • Cài Sublime Text để code Python
    • Ghi chép - ghi chú
    • Mảng 2 chiều
    • Công thức với dãy số
  • Tài liệu tham khảo
  • www.dainganxanh.com
  • 🐍Khóa học Python
  • 🤷‍♀️Hỏi đáp, chia sẻ (FG)
  • 🎮Sinh Test chấm Themis
Powered by GitBook
On this page
  • Chuyển đổi kiểu dữ liệu
  • Số thập phân
  • Phân số
  • Toán học trong Python

Was this helpful?

  1. Chương IV. KIỂU DỮ LIỆU

Bài 21. Dữ liệu kiểu số

Python có 2 loại dữ liệu số học gồm số nguyên, số thực (dấu phẩy động) và số phức. Cùng xem qua các ví dụ dưới đây về các kiểu dữ liệu số:

a = 5
print(type(a))
print(type(5.0))
c = 5 + 3j
print(c + 3)
print(isinstance(c, complex))
 
''' Output:
    <class 'int'>
    <class 'float'>
    (8+3j)
    True 
'''    

Số nguyên và số thực được phân biệt bằng cách có hoặc không có dấu thập phân. Ví dụ: 5 là số nguyên trong khi 5.0 là số thực. Số phức được viết dưới dạng x + yj, trong đó x là phần thực và y là phần ảo.

Số nguyên trong Python có thể có độ dài bất kỳ, số thực chỉ giới hạn đến 15 chữ số thập phân.

Trong Python, chúng ta có thể biểu diễn số nhị phân (cơ số 2), hệ thập lục phân (cơ số 16) và hệ bát phân (cơ số 8) bằng cách đặt một tiền tố một cách thích hợp theo quy ước sau:

Binary: '0b' hoặc '0B' Octal: '0o' hoặc '0O' Hexadecimal: '0x' hoặc '0X'

print(0b1101011)
print(0xFB + 0b10)
print(0o15)

''' Output:
    107
    253
    13
'''

Chuyển đổi kiểu dữ liệu

Python tự động chuyển kiểu int sang float khi thực hiện các phép tính giữa số nguyên và thực. Ví dụ:

a = 1
b = 2.0
c = a + b
print(c)

# output: 3.0 

Ép kiểu dữ liệu bằng cách khai báo kiểu. Ví dụ:

a = int(2.3)
b = int(-2.8)
c = float(5)
d = complex('3+5j')
print(a)
print(b)
print(c)
print(d)

''' output:
    2
    -2
    5.0
    (3+5j)
'''

Số thập phân

Một điều cần chú ý đối với kiểu dữ liệu float trong Python là 1.1 + 2.2 không bằng 3.3!

print(1.1+2.2==3.3)

#output: False

Nguyên nhân là bởi số thực được lưu trữ trong máy tính dưới dạng phân số nhị phân (0 và 1). Vì vậy hầy hết các phân số không thể biểu diễn chính xác trong máy tính.

Ví dụ, ta không thể biểu diễn chính xác phân số 1/3 bằng số thập phân vì nó sẽ là 0,33333333 ... (dài vô hạn). Tương tự, 0.1 cũng chỉ là biểu diễn gần dúng chứ không hoàn toàn đúng. Đó là lý do vì sáo 1.1+2.2 không = 3.3

Để biểu diễn và tính toán số thực một cách bình thường (như trong toán học) thì ta sử dụng module decimal

Ví dụ:

from decimal import Decimal as d

print(d('1.1') + d('2.2'))
print(d('1.0') * d('2.5'))

''' output:
    3.3
    2.50
'''

Khi nào cần dùng decimal thay cho float?

  • Khi ta thực hiện các ứng dụng tài chính cần biểu diễn số thập phân chính xác.

  • Khi ta muốn triển khai khái niệm về số thập phân một cách chính xác.

Phân số

Python hỗ trợ module fractions để xử lý phân số. Có nhiều cách để biểu diễn phân số, ví dụ như sau:

from fractions import Fraction as F

print(F(5))
print(F(1,3))
print(F('1.1'))

''' Output:
    5
    1/3
    11/10
'''

Phân số được biểu diễn bởi số nguyên cho cả tử và mẫu hoặc có thể biểu diễn bằng string. Không thể dùng số thực để biểu diễn phân số vì sẽ cho kết quả không đúng. Ví dụ:

from fractions import Fraction as F

print(F(1.3))
print(F('1.3'))

''' Output:
    5854679515581645/4503599627370496
    13/10
'''

Dữ liệu kiểu phân số có thể dùng tất cả các toán tử cơ bản. Ví dụ:

from fractions import Fraction as F

print(F(1, 3) + F(1, 3))
print(F(1, 3) * F(1, 3))
print(1 / F(5, 6))
print(F(-3, 10) > 0)
print(F(-3, 10) < 0)

''' Output:
    2/3
    1/9
    6/5
    False
    True
'''

Toán học trong Python

Python cung cấp module như math và random để thực hiện các phép toán khác nhau như lượng giác, logarit, xác suất và thống kê, v.v

import math as m

print(m.pi)
print(m.cos(m.pi))
print(m.exp(10))
print(m.log10(1000))
print(m.sinh(1))
print(m.factorial(6))

''' output:
    3.141592653589793
    -1.0
    22026.465794806718
    3.0
    1.1752011936438014
    720
'''
import random as rd

print(rd.randrange(10, 20))

x = ['a', 'b', 'c', 'd', 'e']

print(rd.choice(x))
rd.shuffle(x)
print(x)
print(rd.random())

# Output: Mỗi lần run sẽ ra một kết quả ngẫu nhiên khác nhau
PreviousChương IV. KIỂU DỮ LIỆUNextBài 22. Dữ liệu kiểu string

Last updated 4 years ago

Was this helpful?

Xem thêm về các hàm toán học tại đây:

math