Table of Contents
انواع نمایش عددی در پایتون
در فصل «اعداد (int، float)» با خودِ نوعهای عددی آشنا میشوید. در این بخش تمرکز روی «کار عملی با اعداد» است؛ یعنی اینکه در برنامههای روزمره چطور با اعداد سر و کار داشته باشیم و از امکانات آمادهٔ پایتون استفاده کنیم.
اعداد صحیح و اعشاری در عمل
چند نکتهٔ عملی در کار با int و float:
- تقسیم معمولی با
/همیشه نتیجهٔ اعشاری (float) میدهد:
print(5 / 2) # 2.5
print(4 / 2) # 2.0- تقسیم صحیح با
//بخشِ صحیحِ نتیجه را برمیگرداند (بدون اعشار):
print(5 // 2) # 2
print(7 // 3) # 2- باقیمانده با
%:
print(5 % 2) # 1
print(10 % 3) # 1- توان (به توان رساندن) با
**:
print(2 ** 3) # 8
print(10 ** 2) # 100تبدیل بین نوعهای عددی
گاهی لازم است یک عدد صحیح را به اعشاری تبدیل کنیم یا برعکس. این کار با توابع سازندهٔ نوع انجام میشود:
- تبدیل به عدد صحیح (
int()): اعشار را حذف میکند (گرد نمیکند، فقط قطع میکند):
x = 3.9
print(int(x)) # 3
y = -2.7
print(int(y)) # -2- تبدیل به عدد اعشاری (
float()):
a = 5
print(float(a)) # 5.0
b = "12.5"
print(float(b)) # 12.5
اگر تبدیل از رشته (str) انجام میدهید، رشته باید یک عدد معتبر باشد، وگرنه خطا میگیرید:
s = "123"
print(int(s)) # 123
t = "abc"
print(int(t)) # خطا: ValueErrorاعداد منفی و قدر مطلق
- برای نوشتن عدد منفی، یک
-قبل از عدد میگذاریم:
a = -5
b = 10
c = b - 3 # 7
d = b - a # 15 (چون b - (-5) = 10 + 5)- تابع
abs()قدر مطلق را برمیگرداند (فاصلهٔ عدد تا صفر، بدون توجه به علامت):
print(abs(-5)) # 5
print(abs(3)) # 3
print(abs(-2.7)) # 2.7گرد کردن اعداد اعشاری
در محاسبات واقعی معمولاً نمیخواهیم تعداد زیادی رقم اعشار ببینیم. تابع round() برای گرد کردن است.
گرد کردن ساده
اگر فقط یک عدد به round() بدهید، به نزدیکترین عدد صحیح گرد میکند:
print(round(3.2)) # 3
print(round(3.6)) # 4
print(round(2.5)) # 2 (رفتار پیشفرض پایتون)
print(round(3.5)) # 4توجه: در پایتون، اعداد نیمه (مثل 2.5، 3.5 و ...) همیشه به نزدیکترین عدد زوج گرد میشوند. این برای محاسبات آماری مفید است.
گرد کردن به تعداد رقم مشخص
اگر آرگومان دوم را هم بدهید، تعیین میکنید چند رقم بعد از ممیز نگه داشته شود:
x = 3.14159265
print(round(x, 2)) # 3.14
print(round(x, 3)) # 3.142
print(round(x, 0)) # 3.0ترتیب انجام عملیات (اولویت عملگرها)
وقتی چند عمل حسابی پشت سر هم مینویسید، ترتیب انجام آنها مهم است. پایتون از این ترتیب پیروی میکند:
- پرانتزها
() - توان
** - ضرب و تقسیم و تقسیم صحیح و باقیمانده
*،/،//،% - جمع و تفریق
+،-
مثال:
result1 = 2 + 3 * 4
print(result1) # 14 (چون 3 * 4 اول حساب میشود)
result2 = (2 + 3) * 4
print(result2) # 20 (چون پرانتز اول حساب میشود)
result3 = 2 ** 3 * 4
print(result3) # 32 (چون توان قبل از ضرب است: 2 ** 3 = 8، بعد 8 * 4)
result4 = 10 - 6 / 3 + 2
# اول 6 / 3 = 2.0، بعد 10 - 2.0 + 2 = 10.0
print(result4) # 10.0برای خوانایی و جلوگیری از اشتباه، بهتر است از پرانتز استفاده کنید؛ حتی اگر بدانید اولویت چطور است.
استفاده از اعداد در متغیرها و بهروزرسانی آنها
کار معمول با اعداد این است که مقدارشان در طول برنامه تغییر کند (مثل امتیاز بازی، موجودی حساب، شمارنده، و ...).
جمع کردن و کم کردن روی یک متغیر
score = 0 # امتیاز اولیه
score = score + 10
score = score + 5
print(score) # 15پایتون برای این حالتهای رایج میانبُر (عملگر ترکیبی) دارد:
x += yیعنیx = x + yx -= yیعنیx = x - yx = yیعنیx = x yx /= yیعنیx = x / yx //= yیعنیx = x // yx %= yیعنیx = x % yx = yیعنیx = x y
مثال:
count = 0
count += 1 # count = 1
count += 1 # count = 2
count -= 1 # count = 1
print(count)این میانبُرها در حلقهها و محاسبات تکراری بسیار پرکاربرد هستند.
خطای رایج با اعداد اعشاری (خطای نمایش)
در رایانهها بعضی اعداد اعشاری را نمیتوان دقیقاً نمایش داد. به همین دلیل گاهی نتیجههایی مثل این میبینید:
print(0.1 + 0.2) # ممکن است 0.30000000000000004 چاپ شود
این رفتار طبیعیِ نمایش دودویی اعداد اعشاری است و مخصوص پایتون نیست. برای بیشتر کارهای روزمره میتوانید با round() نتیجه را مرتب کنید:
x = 0.1 + 0.2
print(round(x, 2)) # 0.3اگر بعداً در علم داده یا کارهای مالی حرفهایتر کار کنید، روشهای دقیقتری را یاد میگیرید؛ در این مرحله فقط لازم است تعجب نکنید و بدانید این یک «اشتباهِ محاسباتی» نیست، فقط «نحوهٔ نمایش» است.
تابعهای عددی سادهٔ پرکاربرد
علاوه بر عملگرها، خودِ پایتون چند تابع ساده و مفید برای کار با اعداد دارد (بدون نیاز به کتابخانهٔ اضافی):
max()پیدا کردن بیشترین عدد بین چند مقدارmin()پیدا کردن کمترین عدد بین چند مقدارsum()جمع کردن یک مجموعه از اعداد (مثل لیست)
مثالهای ساده:
a = 5
b = 12
c = -3
print(max(a, b, c)) # 12
print(min(a, b, c)) # -3
numbers = [1, 2, 3, 4, 5]
print(sum(numbers)) # 15
تابعهای عددی پیشرفتهتر (مثل ریشهٔ دوم، سینوس، و ...) در فصل «کتابخانههای استاندارد» و زیرعنوان math معرفی میشوند.
چند تمرین پیشنهادی
برای تمرین کار با اعداد، میتوانید برنامههای بسیار کوچک زیر را بنویسید:
- برنامهای که طول و عرض مستطیل را بگیرد و محیط و مساحت آن را حساب کند.
- برنامهای که یک مبلغ را بگیرد و ۹٪ مالیات به آن اضافه کند و مقدار نهایی را نمایش دهد (با
roundتا ۲ رقم اعشار). - برنامهای که یک عدد بر حسب دقیقه دریافت کند و آن را به ساعت و دقیقه تبدیل کند (مثلاً ۱۳۵ دقیقه → ۲ ساعت و ۱۵ دقیقه، با استفاده از
//و%). - برنامهای که سه عدد بگیرد و بیشترین و کمترین آنها را چاپ کند (با استفاده از
maxوmin).