پایتون زبان برنامهنویسی سطح بالایی است که توجه بسیاری را در میان جامعه برنامهنویسان به خود جلب کرده است. در میان تعداد زیاد توابعی که وجود دارد، تابع توان موقعیت برجستهای را به خود اختصاص داده است. از عملگر **
و تابع pow()
برای محاسبه توان در پایتون استفاده میشود. عملگر **
عدد سمت راست خود را به توان عدد سمت چپ خود میرساند. تابع pow()
، ۲ پارامتر جداگانه میپذیرد که پارامتر اول را به توان پارامتر دوم میرساند. محاسبه توان اعداد یکی از عملهای رایج در ریاضیات است. برای نمونه، اگر بخواهیم برنامهای بنویسیم تا به دانشآموزان برای حل مسائل ریاضی مربوط به توان کمک کند به تابعی برای محاسبه توان نیاز خواهیم داشت.
در زبان برنامهنویسی پایتون، توان اعداد به دو روش متفاوت محاسبه میشود. روش اول با استفاده از عملگر **
و روش دوم با استفاده از تابع pow()
کار میکند که در این مطلب از مجله فرادرس درباره هر دو روش و نحوه استفاده از هر کدام برای محاسبه توان اعداد بحث خواهیم کرد. مثالهای متفاوتی از مسائل نیازمند به استفاده هر دو روش عملگر **
و تابع pow()
میزنیم و راه حل این مثالها را با کدنویسی نمایش خواهیم داد. مطلب را با عملگر **
شروع میکنیم.
توان در پایتون با عملگر «**»
از عملگر **
برای به توان رساندن اعداد در پایتون استفاده میشود. به عبارت دیگر **
عملگر اصلی توان در پایتون است.
عملگر **
برای انجام عملیات خود به ۲ مقدار یا عملوند نیاز دارد. در پایین سینتکس پایه این عملگر را به شکل ساده با عملوندهای فرضی نمایش دادهایم.
5 ** 2
کد نوشته شده در بالا با متغیرهای فرضی، نتیجه زیر را برمیگرداند.
25
در این عبارت ریاضی، عدد ۵ به توان ۲ رسیده است. یا به عبارت دیگر عدد ۵ دو بار در خودش ضرب شده است.
مثال برای عملگر «**»
در این بخش به مثالی خواهیم پرداخت تا روش کار عملگر **
را برای محاسبه توان در پایتون نمایش دهیم. فرض کنیم که برای سنجش میزان مهارت هر یک دانشآموزان کلاس ششم ریاضی در ارتباط با محاسبه توان، میخواهیم برنامه کاربردی طراحی کنیم.
برای انجام اینکار باید به دانشآموزان مسئله ریاضی بدهیم و از آنها بخواهیم که مسئله را حل کنند. در نهایت برنامهای که طراحی کردیم باید بتواند جواب مسئله را محاسبه و مقدار صحیح را بدست بیاورد. سپس جواب صحیح مسئله را با جوابی که هر دانشآموز در برنامه وارد کرده مقایسه کند.
در کد پایین برنامهای که برای آزمودن توانایی ریاضی این دانشآموزان مورد نیاز است را به عنوان مثال پیادهسازی کردهایم. این برنامه باید مهارت دانشآموزان را در محاسبه توان اعداد مورد سنجش قرار دهد.
1number = 7
2exponent = 2
3
4student_answer = int(input("What is 7 to the power of 2?"))
5answer = 7 ** 2
6
7if student_answer == answer:
8 print("You're correct!")
9else:
10 print("So close! 7 to the power of 2 is", answer)
وقتی که برنامه را اجرا کنیم و به عنوان مثال درباره توان دوم عدد 7 از دانشآموزی سوال کنیم. اگر دانشآموز به عنوان جواب عدد 56 را وارد کند برنامه پاسخی را بهصورت زیر نمایش خواهد داد.
What is 7 to the power of 2? 56 So close! 7 to the power of 2 is 49
همانطور که میبینید برنامهای که کدنویسی کردیم مسئله را حل کرده است. بعد از مقایسه پاسخها به این نتیجه رسیده که جواب وارد شده توسط دانشآموز صحیح نیست. در نتیجه پیغامی را همراه با جواب صحیح به دانشآموز برگردانده است.
در خط اول، متغیری برای عدد پایه توان به نام number
تعریف کردهایم. عددی را که میخواهیم به توان ریاضی برسانیم در این متغیر ذخیره میکنیم. بعد از آن متغیر توان را به نام exponent
تعریف کردیم. این متغیر همان مقداری را نشان میدهد که متغیر number
باید به توان آن برسد.
در خط بعد، از متد input()
در پایتون استفاده کردیم که از کاربر درباره توان دوم عدد 7
با جمله «? What is 7 to the power of 2» سوال بپرسد و سپس منتظر بماند تا مقداری را کاربر وارد کند.
برای اینکه پاسخ کاربر را به «عدد صحیح» (Integer) تبدیل کنیم از متد تبدیل نوع داده int()
در پایتون استفاده میکنیم. استفاده از این متد ضروری است زیرا دادهای که توسط تابع input()
از کاربر گرفته شده با نوع داده «رشته» (String) برگردانده میشود و باید توجه کنیم که عملگر **
فقط بر روی اعداد کار میکند.
سپس باید جواب سوال را با استفاده از عملگر **
محاسبه کنیم. در این مورد از عبارت 7 ** 2
استفاده میکنیم تا مقدار عدد ۷ را به توان ۲ محاسبه کنیم. در نهایت هم باید از عبارت شرطی if
استفاده کنیم تا اگر کاربر جواب نادرست را وارد کرد پیغامی شبیه به پیغام بالا که مشاهده کردید را همراه با جواب صحیح نمایش دهیم. اما اگر کاربر مقدار جواب را بهصورت صحیح وارد کرد پیغام «!You’re correct» به معنی «جواب شما صحیح است!» را به کاربر نمایش میدهیم.
توان در پایتون با تابع pow
توابع درونی پایتون شامل تابعی اختصاصی برای محاسبه توان نیز هستند. این تابع pow()
نامیده شده است. تابع pow()
، سه پارامتر مجزا میپذیرد. این پارامترها به ترتیب عددی برای «پایه» (Base) توان، مقدار «توان» (Exponent) که پایه را به آن تعداد در خودش ضرب میکند و عملگر ماژولو یا «باقیمانده»(Modulo) هستند.
تابع pow()
حاص توان را بر حسب اعداد پایه و توان مشخص شده محاسبه میکند. در ابتدا این تابع همه آرگومانهای خود را به اعداد اعشاری کامپیوتری یا Float تبدیل میکند. بعد از آن مقدار جواب توان را محاسبه میکند. در پایین سینتکس پایه تابع pow()
را نمایش دادهایم.
1pow(base, exponent, modulus)
همانطور که اشاره کردیم، تابع pow()
، میتواند سه پارامتر مجزا دریافت کند. این پارامترها را به همراه توضیح لازم برای هر یک در ادامه فهرست کردهایم.
- «پایه» (Base): عددی است که باید به توان مشخص شده در پارامتر دوم برسد. این پارامتر ضروری است.
- «توان» (Exponent): عددی است که مقدار پارامتر اول یا پایه توان را باید به توان خود برساند. این پارامتر ضروری است.
- «باقیمانده»(Modulo): این متغیر با توجه به جواب مسئله «پایه» به توان «توان» میزان باقیمانده را بر پیمانه مقدار این متغیر محاسبه میکند. این پارامتر اختیاری است اما اگر بخواهیم از این پارامتر استفاد کنیم باید پارامترهای اول و دوم از نوع داده عدد صحیح باشند و مقدار پارامتر توان باید حتما عدد مثبت باشد.
در این تابع همین که دو متغیر اول تعریف شوند کافی است و تابع pow()
میتواند به راحتی مقدار توان عدد «پایه» را به توان عدد «توان | پارامتر دوم» بدست بیاورد.
اگر که پارامتر سوم هم مشخص شده باشد، تابع pow()
عملیات خاصی در ریاضی انجام میدهد. در ابتدا عدد «پایه» را به توان عدد «توان | پارامتر دوم» میرساند. سپس میزان باقیمانده جواب را وقتی که بر عدد سوم ماژولو تقسیم شود بدست میآورد. این کار در واقع عملکرد پیشرفتهتر و خاصی برای مسائل پیشرفته ریاضیات است. در این مطلب قصد نداریم به همه جزییات این رفتار بپردازیم.
مثال برای تابع pow
از مثالی که در بالا زدیم برای توصیف چگونگی رفتار تابع pow()
استفاده خواهیم کرد. فرض کنیم، میخواهیم یک بازی برای آزمودن مهارت ریاضی دانشآموزان در استفاده از ابزار توان طراحی کنیم.
برنامه به این صورت کار میکند که از کاربر میخواهد به سوالی جواب دهد. خود برنامه برای سنجش جواب کاربر باید پاسخ سوال را بهطور صحیح محاسبه کند. سپس در نهایت برنامه بازی که ساختهایم باید مقداری را که کاربر به عنوان جواب صحیح وارد کرده است را با مقداری که خود محاسبه کرده مقایسه کند. بازی که طراحی کردهایم با توجه به نتیجه این مقایسه به کاربر واکنش نشان میدهد.
میتوانیم در کدهای خود برای محاسبه توان، بهجای استفاده از عملگر **
از تابع pow()
استفاده کنیم. مثالی از استفاده تابع pow()
در کدی که برای دانشآموزان طراحی کردهایم را در پایین پیادهسازی کردیم. به کد زیر نگاه کنید.
1number = 7
2exponent = 2
3
4student_answer = int(input("What is 7 to the power of 2?"))
5answer = pow(7, 2)
6
7if student_answer == answer:
8 print("You're correct!")
9else:
10 print("So close! 7 to the power of 2 is", answer)
کدی که نوشتهایم شبیه مثال اول است اما یک تفاوت دارد. بهجای اینکه برای محاسبه پاسخ از عبارت 7 ** 2
استفاده کنیم، متغیر answer
را به مقدار خروجی تابع pow(7, 2)
اختصاص دادهایم. اگر در این کد به عنوان جواب مقدار 49
را به برنامه وارد کنیم، خروجی برنامه بهصورت زیر خواهد شد.
What is 7 to the power of 2? 49 You're correct!
تابع np.power در NumPy
تا اینجای کار، بر روی ابزارهای «درونی» (Built-In) پایتون برای به توان رساندن اعداد تمرکز کرده بودیم. اما تواناییهای ریاضی پایتون فقط به توابع درونی آن محدود نشده است. کتابخانه قدرتمندی به نام «NumPy» وجود دارد که تواناییهای ریاضی پایتون را ارتقا میدهد. این کتابخانه مورد علاقه بسیار شدید برنامهنویسانی که محاسبات عددی انجام میدهند و دانشمندان داده قرار گرفته است.
در میان توابع بسیار زیاد و مفید کتابخانه NumPy، تابع np.power(x, n)
بهطور خاصی قابل توجه است. همانطور که احتمالا حدس زدهاید این تابع مانند همتایان خودش در پایتون، متغیر x
را به توان n
میرساند. تابع np.power(x, n)
روش استفاده آسانی دارد اما ویژگی منحصر به فردی هم دارد که آن را برجسته کرده است. این ویژگی خاص، توانایی مدیریت آرایهها است.
همانطور که متوجه شدید، تابع np.power(x, n)
فقط محدود به کمیتهای عددی نیست. میتوانید درون متغیرهای x
و n
، اشیایی از نوع داده آرایه نیز قرار دهید. این تابع عمل به توان رساندن آرایهها را بهصورت عنصر به عنصر انجام خواهد داد. بهطور ویژه وقتی که با پایگاههای داده بزرگ کار میکنیم این قابلیت میتواند بسیار مفید واقع شود.
1import numpy as np
2x = np.array([2, 3])
3n = 3
4exponent = np.power(x, n)
5print(exponent)
و درباره مدیریت خطا هم باید بدانیم که کتابخانه NumPy این مورد را نیز پوشش داده است. اگر سعی کنید که عدد منفی را به توان عددی غیر صحیح برسانید، کتابخانه NumPy بهجای اینکه مانند توابع دورنی پایتون خطا برگرداند مقدار «تهی غیر عددی» (Not a Number | NaN) بر میگرداند.
تابع np.power(x, n)
در کتابخانه NumPy ابزاری قدرتمند و چندکاره است که در زمان کار با آرایهها یا پایگاههای داده بزرگ بسیار کارا و مفید عمل میکند. توانایی مدیریت خطاها به شکلی بسیار خوب و کاربرپسند و اجرای عملیات عنصر به عنصر مخصوص ماتریسها، این ابزار را به گزینه ترجیحی بسیاری از برنامهنویسان پایتون تبدیل کرده است.
تابع math.exp
در مطلب توان در پایتون، ابزار دیگری به نام تابع math.exp()
باقیمانده که باید بررسی شود. تقریبا میتوان چنین گفت که این تابع مقدار توان را بهصورت سنتی محاسبه نمیکند اما قدرت و توانایی اجرای عملیات با نوع دادههای متفاوت باعث میشود که در این مطلب از این تابع نیز نام ببریم.
تابع math.exp(x)
مقدار توان نمایی متغیر x
را محاسبه میکند. در واقع، تابع math.exp(x)
معادل این است که عدد شاخص «e» به توان x
رسانده شود. با اینکه شاید این کار شبیه به عملی برای به توان رساندن معمولی ریاضی نباشد اما این رفتار محاسباتی در بعضی بخشهای ریاضی و علم بسیار ضروری است.
ویژگی بسیار قابل توجه تابع math.exp(x)
سازگاری با انواع مختلف دادههای عددی است. این تابع میتواند اعداد مثبت، اعداد منفی و حتی اعداد اعشاری را هم مدیریت کند که باعث میشود به تابع چندکارهای برای حل طیف گستردهای از محاسبات ریاضی تبدیل شود.
در کد زیر نمونه سادهای از کاربرد تابع math.exp(x)
را پیادهسازی کردهایم.
1import math
2x = math.pi
3exponential_value = math.exp(x)
4print(exponential_value)
تابع math.exp(x)
به غیر از مواردی که گفتیم میتواند با اعداد درونی پایتون مثل math.pi
- در کد بالا دیدیم – و math.e
کار کند. این به معنای این است که میتوان به آسانی عبارتهای پیچیده ریاضی را محاسبه کرد. مانند محاسبه عدد پی به توان ثابت اویلر که به کمک این تابع فقط در یک خط کد انجام میشود.
سوالات متداول
در انتهای این مطلب از مجله فرادرس به پاسخ چند سوال پُرتکرار درباره توان در پایتون میپردازیم.
تابع pow در پایتون چه پارامترهایی دارد؟
تابع pow که برای توان در پایتون استفاده میشود، ۳ پارامتر مختلف میپذیرد که به این ترتیب هستند. پارامتر الزامی «x» برای عدد پایه، پارامتر الزامی «y» برای عدد توان و پارامتر اختیاری «z» برای محاسبات باقیمانده توان.
آیا می توان از تابع pow برای محاسبه توان بدون پارامتر آخر استفاده کرد؟
بله، پارامتر ماژول در تابع pow اختیاری است. به راحتی میتوانید با کمک نوشتن سینتکس تابع بهصورت pow(x, y) جواب محاسبه x به توان y را بدست بیاورید.
پارامتر سوم باقی مانده در تابع توان pow چیست؟
وقتی که درباره تابع pow صحبت میکنیم، پارامتر ماژول یا باقیمانده «z» همانند عددی خاص و اضافی است. این ماژول کمک میکند میزان باقیمانده را بعد از محاسبه توان بدست بیاوریم. بهطوری که مشابه عمل باقیمانده بعد از تقسیم عمل میکند. این تابع در ابتدا حاصل توان در پایتون را محاسبه میکند و سپس حاصل را بر عدد «z» تقسیم میکند و مقدار باقیمانده را برمیگرداند.
آیا می توان با استفاده از تابع pow جذر اعداد یا رادیکال اعداد را محاسبه کرد؟
بله، میتوانید با کمک تابع pow مقدار رادیکال اعداد را نیز محاسبه کنید. برای این کار فقط کافی است که پارامتر دوم توان را برابر با 0.5 بگذارید. در واقع سینتکس محاسبه جذر عدد «x» به این صورت است pow(x, 0.5).
آیا تفاوتی بین استفاده از تابع pow و عملگر توان وجود دارد؟
هم تابع pow و هم عملگر **، هر دو برای محاسبه توان در پایتون استفاده میشوند. اگرچه که تابع pow انعطافپذیری بیشتری را ارائه میدهد. مخصوصا وقتی بخواهید میزان باقیمانده پیمانه را محاسبه کنید.
جمع بندی
از هر دو روش عملگر **
و تابع pow()
برای این استفاده میشوند که عددی را به توان عدد دیگری برسانند. این روشهای برای محاسبه توان در پایتون مورد استفاده قرار میگیرند. تابع توان در پایتون که به وسیله عبارت pow()
نمایش داده میشود، ابزاری چندکاره است که محاسبات لازم برای به توان رساندن اعداد را انجام میدهد و به توسعهدهندگان کمک میکند که عددی را به توان مشخص شده، به عنوان پارامتر دوم این تابع، برسانند. این عملیات محدوده گستردهای از محاسبات ریاضی و علمی را به آسانی ممکن میکند.
در این مطلب از مجله فرادرس درباره چگونگی استفاده از هر دو روش عملگر **
و تابع pow()
برای محاسبه توان در پایتون بحث کردیم. همچنین برای هر کدام از روشهای محاسبه توان، مثالی را نمایش دادیم. با درک این مطلب، اکنون به دانش مورد نیاز برای محاسبه توان در پایتون رسیدهایم.
source