Python-এর সংখ্যা মোটামুটি যেভাবে আশা করবেন সেভাবেই কাজ করে, একটি উল্লেখযোগ্য পার্থক্যসহ: Python integer-এর কোনো আকারের সীমা নেই, মেমরি যতটা অনুমতি দেয় ততটা বড় হতে পারে।
| ফাংশন | কী করে | উদাহরণ |
|---|---|---|
| round(n) | নিকটতম পূর্ণ সংখ্যায় রাউন্ড করে | round(4.5) → 4 (নিচের callout দেখুন) |
| round(n, decimals) | নির্দিষ্ট সংখ্যক দশমিক স্থানে রাউন্ড করে | round(3.14159, 2) → 3.14 |
| math.floor(n) | সবসময় নিচের দিকে রাউন্ড করে | math.floor(4.9) → 4 |
| math.ceil(n) | সবসময় উপরের দিকে রাউন্ড করে | math.ceil(4.1) → 5 |
round(4.5) যা আপনি প্রত্যাশা করবেন তা নয়
Python-এর round() "round half to even" (banker's rounding-ও বলা হয়) ব্যবহার করে — round(4.5) দেয় 4, 5 নয়, আর round(5.5) দেয় 6। এটি একটি ইচ্ছাকৃত ডিজাইন সিদ্ধান্ত, আপনি যে সহজ "সবসময় .5 উপরের দিকে রাউন্ড করে" নিয়মটা আশা করতে পারেন সেটা নয়, আর প্রথমবার এটার মুখোমুখি হলে প্রায় সবাইকে অবাক করে।
floor() আর ceil(), বেশিরভাগ অন্য ম্যাথ ফাংশনের সাথে, ডিফল্টভাবে পাওয়া যাওয়ার বদলে Python-এর math মডিউলে থাকে — আসন্ন একটি পাঠে আপনি import ভালোভাবে দেখবেন, কিন্তু প্যাটার্নটা এখনই ব্যবহার করার মতো যথেষ্ট সহজ:
import math
print(math.floor(4.9)) # 4
print(math.ceil(4.1)) # 5
print(math.sqrt(64)) # 8.0
print(math.pi) # 3.141592653589793print(abs(-7)) # 7 — absolute value
print(max(3, 9, 2)) # 9 — largest of the arguments
print(min(3, 9, 2)) # 2 — smallest of the arguments
print(pow(2, 10)) # 1024 — same as 2 ** 10একটি format specifier-সহ f-string দশমিক স্থান নিয়ন্ত্রণ করার আর হাজার-বিভাজক যোগ করার প্রচলিত উপায় — Strings পাঠে format specifier সম্পূর্ণভাবে দেখানো হয়েছে:
value = 1234567.891
print(f"{value:,.2f}") # "1,234,567.89"random মডিউল — math-এর মতো আরেকটি স্ট্যান্ডার্ড লাইব্রেরি মডিউল — র্যান্ডম সংখ্যা তৈরি করে আর র্যান্ডম পছন্দ করে:
import random
print(random.randint(1, 6)) # a random integer from 1 to 6, both included
print(random.random()) # a random float from 0.0 up to (not including) 1.0
print(random.choice(["red", "green", "blue"])) # picks one item at randomসিকিউরিটি-সংবেদনশীল মানের জন্য নয়
গেম, কুইজ, আর স্যাম্পলিংয়ের জন্য random ঠিক আছে — এটি পাসওয়ার্ড রিসেট টোকেন বা একটি API key-এর মতো কিছুর জন্য যথেষ্ট নিরাপদ নয়। সেজন্য, স্ট্যান্ডার্ড লাইব্রেরির secrets মডিউল নির্দিষ্টভাবে সিকিউরিটি উদ্দেশ্যে নিরাপদ মান তৈরি করতে আছে।