Thứ ba, 08/11/2016 | 00:00 GMT+7

Các hàm Python 3 tích hợp để làm việc với các số

Python 3 đi kèm với nhiều hàm tích hợp mà bạn có thể dễ dàng sử dụng trong bất kỳ chương trình nào bạn đang làm việc. Một số hàm cho phép bạn chuyển đổi kiểu dữ liệu và những hàm khác dành riêng cho một loại nhất định, chẳng hạn như chuỗi .

Hướng dẫn này sẽ đi qua một vài hàm tích hợp được dùng với các kiểu dữ liệu số trong Python 3. Ta sẽ xem xét các hàm sau:

  • abs() cho giá trị tuyệt đối
  • divmod() để tìm đồng thời thương và phần dư
  • pow() để nâng một số lên một lũy thừa nhất định
  • round() để làm tròn một số đến một dấu thập phân nhất định
  • sum() để tính tổng các mục trong kiểu dữ liệu có thể lặp lại

Làm quen với các phương pháp này có thể giúp bạn linh hoạt hơn khi lập trình để bạn có thể đưa ra quyết định sáng suốt khi quyết định sử dụng toán tử và hàm nào. Ta sẽ đi qua một số chức năng này với các ví dụ trong suốt hướng dẫn này.

Giá trị tuyệt đối

Hàm abs() sẽ trả về giá trị tuyệt đối của một số mà bạn chuyển cho nó. Trong toán học, giá trị tuyệt đối đề cập đến khoảng cách mà một số nằm trên trục số từ 0. Giá trị tuyệt đối không tính đến hướng nào từ số 0, nghĩa là số âm sẽ được biểu diễn bằng số dương.

Để đưa ra một số ví dụ, giá trị tuyệt đối của 1515 , giá trị tuyệt đối của -7474 và giá trị tuyệt đối của 00 .

Giá trị tuyệt đối là một khái niệm quan trọng đối với phép tính và phân tích thực, nhưng nó cũng có ý nghĩa khi ta nghĩ về các tình huống hàng ngày như khoảng cách di chuyển. Ví dụ, nếu ta đang cố gắng để có được một nơi nào đó là 58 dặm nhưng ta đi du lịch 93 dặm thay vào đó, ta vẫn bước quá điểm đến ban đầu của ta . Nếu ta muốn tính toán hiện nay có bao nhiêu dặm trái sang du lịch để có được đến đích dự định, ta sẽ kết thúc với một số tiêu cực, nhưng ta không thể đi dặm tiêu cực.

Hãy sử dụng abs() để giải quyết vấn đề này:

đích_miles.py
miles_from_origin = 58  # Miles destination is from origin miles_travelled = 93    # Miles travelled from origin to destination (too many)  # Calculate how many miles destination is from current location: miles_to_go = miles_from_origin - miles_travelled     print(miles_to_go)      # Print how many miles left (a negative number) print(abs(miles_to_go)) # Use absolute value to account for negative number 
Output
-35 35

Trong kết quả , ta thấy rằng nếu ta không sử dụng hàm abs() , trong trường hợp này ta có một số âm, -35 . Mặc dù ta có thể ở vị trí mà miles_travelled nhỏ hơn miles_from_origin , bao gồm cả hàm abs() có tính đến khả năng là một số âm.

Với một số âm, abs() sẽ trả về một số dương vì các giá trị tuyệt đối luôn là số dương hoặc số không.

Hãy sử dụng abs() với một số dương và số 0:

print(abs(89.9)) print(abs(0)) 
Output
89.9 0

Ta có nhiều khả năng sử dụng abs() với một biến có thể dương hoặc âm trong một trường hợp khi ta chỉ tìm kiếm một số dương. Để giải thích cho một đầu vào hoặc kết quả âm, ta sẽ sử dụng abs() để sửa đổi những gì được trả về thành một số dương.

Tìm Thương số và Phần dư trong một hàm

Vì cả phép chia tầng (trả về thương số) và phép chia modulo (trả về phần dư), có liên quan chặt chẽ với nhau, nên có thể hữu ích khi sử dụng một hàm kết hợp cả hai phép toán cùng một lúc.

Hàm divmod() hợp trong Python kết hợp cả hai, trả về đầu tiên là thương số đến từ phép chia tầng, sau đó là phần còn lại.

Bởi vì divmod() sẽ hoạt động với hai số, ta cần chuyển hai số cho nó.

divmod(a,b) 

Với chức năng này về cơ bản, ta thực hiện như sau:

a // b a & b 

Giả sử ta đã viết một cuốn sách dài 80.000 từ. Với nhà xuất bản của ta , ta có tùy chọn 300 hoặc 250 từ mỗi trang và ta muốn biết ta sẽ có bao nhiêu trang trong mỗi trường hợp. Với divmod() ta có thể thấy ngay lập tức ta sẽ có bao nhiêu trang và bao nhiêu từ sẽ được tràn sang một trang bổ sung.

words_per_page.py
words = 80000       # How many words in our book per_page_A = 300    # Option A, 300 words per page per_page_B = 250    # Option B, 25- words per page  print(divmod(words,per_page_A)) # Calculate Option A print(divmod(words,per_page_B)) # Calculate Option B 
Output
(266, 200) (320, 0)

Trong Phương án A, ta sẽ có 266 trang đầy từ và 200 từ còn lại (⅔ của một trang) trong tổng số 267 trang và trong Phương án B, ta sẽ có một cuốn sách chẵn 320 trang. Nếu ta muốn có ý thức về môi trường, ta có thể chọn Phương án A, nhưng nếu ta muốn trông ấn tượng hơn với một cuốn sách khổ lớn hơn, ta có thể chọn Phương án B.

Bởi vì hàm divmod() có thể nhận cả số nguyên và số float, ta cũng hãy xem qua một ví dụ sử dụng float:

a = 985.5 b = 115.25  print(divmod(a,b)) 
Output
(8.0, 63.5)

Trong ví dụ này, 8.0 là thương số sàn của 985,5 chia cho 115,25 và 63.5 là phần còn lại.

Lưu ý bạn có thể sử dụng toán tử phân chia tầng // và toán tử modulo % để xác minh divmod() đã làm gì:

print(a//b) print(a%b) 
Output
8.0 63.5

Khi sử dụng hàm divmod() trong Python. ta nhận được cả tổng số lần phép chia xảy ra và phần còn lại được trả về.

Quyền

Trong Python, bạn có thể sử dụng toán tử ** để nâng một số theo số mũ hoặc bạn có thể sử dụng hàm tích hợp pow() nhận hai số.

Để xem cách thức hoạt động của hàm pow() , giả sử ta đang nghiên cứu về vi khuẩn và muốn xem ta sẽ có bao nhiêu vi khuẩn vào cuối ngày nếu ta bắt đầu với 1. Loại vi khuẩn cụ thể mà ta đang nghiên cứu tăng gấp đôi mỗi giờ, vì vậy ta sẽ tính 2 (nhân đôi) thành lũy thừa của tổng số giờ (trong trường hợp của ta là 24).

vi khuẩn.py
hours = 24 total_bacteria = pow(2,hours)  print(total_bacteria) 
Output
16777216

Ta đã chuyển hai số nguyên cho hàm pow() và xác định rằng vào cuối khoảng thời gian 24 giờ này, ta sẽ có hơn 16 triệu vi khuẩn.

Trong toán học, nếu ta muốn tính 3 thành lũy thừa của 3, nó thường được viết như sau:

Phép tính mà ta đang hoàn thành là 3 x 3 x 3, bằng 27.

Để tính toán 3³ trong Python, ta sẽ nhập pow(3,3) .

Hàm pow() sẽ nhận cả số nguyên và số float, đồng thời cung cấp một giải pháp thay thế cho việc sử dụng toán tử ** khi bạn có ý định tăng các số lên một lũy thừa nhất định.

Làm tròn số

Việc có thể làm tròn các số một cách nhanh chóng và dễ dàng trở nên quan trọng khi làm việc với các số thực có nhiều chữ số thập phân. Hàm round() hợp sẵn trong Python nhận vào hai số, một số được làm tròn và một số chỉ định số vị trí thập phân cần bao gồm.

Ta sẽ sử dụng hàm để lấy một số float có hơn 10 chữ số thập phân và sử dụng hàm round() để giảm số thập phân xuống 4:

i = 17.34989436516001 print(round(i,4)) 
Output
17.3499

Trong ví dụ trên, float 17.34989436516001 được làm tròn thành 17.3499 vì ta đã chỉ định rằng số lượng vị trí thập phân nên được giới hạn ở 4.

Cũng lưu ý hàm round() tròn số, vì vậy thay vì cung cấp 17.3498 làm kết quả , nó đã cung cấp 17.3499 vì số theo sau số thập phân 8 là số 9. Bất kỳ số nào theo sau bởi số 5 hoặc lớn hơn sẽ được làm tròn đến số nguyên tiếp theo.

Hãy chia nhỏ cú pháp cho round() :

round(number to round,number of decimal places) 

Trong cuộc sống hàng ngày, việc làm tròn số thường xuyên xảy ra, nhất là khi làm việc liên quan đến tiền bạc; ta không thể chia đều một xu cho một số bạn bè.

Ta hãy xem qua một ví dụ về một chương trình đơn giản có thể tính tiền boa. Ở đây ta sẽ cung cấp các số liệu, nhưng ta có thể viết lại chương trình để mang lại các số do user cung cấp. Trong ví dụ này, 3 người bạn đến một nhà hàng muốn chia đều hóa đơn 87,93 đô la, cùng với việc thêm 20% tiền boa.

bill_split.py
bill = 87.93                # Total bill tip = 0.2                   # 20% tip split = 3                   # Number of people splitting the bill  total = bill + (bill * tip) # Calculate the total bill  each_pay = total / split    # Calculate what each person pays  print(each_pay)             # What each person pays before rounded  print(round(each_pay,2))    # Round the number — we can’t split pennies 
Output
35.172000000000004 35.17

Trong chương trình này, đầu tiên ta yêu cầu kết quả của một số sau khi ta tính tổng hóa đơn cộng với tiền boa chia cho 3, kết quả cho ra một số có nhiều chữ số thập phân: 35.172000000000004 . Vì con số này không có ý nghĩa như một con số tiền tệ, ta sử dụng hàm round() và giới hạn các chữ số thập phân là 2, để ta có thể cung cấp kết quả kết quả mà 3 người bạn có thể làm việc với: 35.17 .

Nếu bạn muốn làm tròn thành một số chỉ có 0 dưới dạng giá trị thập phân, bạn có thể thực hiện bằng cách sử dụng 0 làm tham số thứ hai trong hàm round() :

round(345.9874590348545304636,0) 

Điều này sẽ đánh giá đến 346.0 .

Bạn cũng có thể chuyển các số nguyên vào round() mà không nhận được lỗi, trong trường hợp bạn nhận được thông tin đầu vào của user ở dạng số nguyên chứ không phải là số thực. Khi một số nguyên được chuyển làm tham số đầu tiên, một số nguyên sẽ được trả về.

Tính tổng

Hàm sum() được sử dụng để tính tổng của kiểu dữ liệu phức hợp số, bao gồm danh sách , bộ giá trịtừ điển .

Ta có thể chuyển một danh sách vào hàm sum() để thêm tất cả các mục trong danh sách với nhau theo thứ tự từ trái sang phải:

some_floats = [1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9] print(sum(some_floats)) 
Output
49.5

Điều này sẽ hoạt động tương tự với các bộ giá trị và từ điển:

print(sum((8,16,64,512)))   # Calculate sum of numbers in tuple print(sum({-10: 'x', -20: 'y', -30: 'z'}))  # Calculate sum of numbers in dictionary  
Output
600 # Sum of numbers in tuple -60 # Sum of numbers in dictionary

Hàm sum() có thể nhận tối đa 2 đối số, vì vậy bạn có thể thêm một số bổ sung ở dạng số nguyên hoặc số thực để thêm vào các số tạo nên đối số ở vị trí đầu tiên:

some_floats = [1.1, 2.2, 3.3, 4.4, 5.5, 6.6, 7.7, 8.8, 9.9]  print(sum(some_floats, 0.5)) print(sum({-10: 'x', -20: 'y', -30: 'z'},60)) 
Output
50.0 0

Khi bạn không bao gồm đối số thứ hai, hàm sum() mặc định thêm 0 vào kiểu dữ liệu phức hợp có thể lặp lại.

Kết luận

Hướng dẫn này đề cập đến một số phương pháp tích hợp sẵn mà bạn có thể sử dụng với các kiểu dữ liệu số trong ngôn ngữ lập trình Python.

Để tìm hiểu thêm về cách làm việc với các con số, bạn có thể đọc “ Cách thực hiện phép toán trong Python 3 với các toán tử ” và để tìm hiểu thêm về danh sách, hãy xem “ Hiểu danh sách trong Python 3 ”.


Tags:

Các tin liên quan

Cách vẽ dữ liệu trong Python 3 bằng matplotlib
2016-11-07
Hiểu danh sách trong Python 3
2016-11-02
Cách làm Toán bằng Python 3 với Toán tử
2016-11-01
Giới thiệu về các hàm chuỗi trong Python 3
2016-11-01
Giới thiệu về các hàm chuỗi trong Python 3
2016-11-01
Giới thiệu về các hàm chuỗi trong Python 3
2016-11-01
Cách sử dụng bộ định dạng chuỗi trong Python 3
2016-10-14
Cách xử lý tệp văn bản thuần túy trong Python 3
2016-10-13
Cách sử dụng các biến trong Python 3
2016-10-12
Cách lập chỉ mục và cắt chuỗi trong Python 3
2016-09-28