در مجموعه مقالات "چگونه با پایتون برنامه بنویسیم"، هر بار یک برنامهی پایتونی مینویسیم که با الگوریتم و جزییات کامل شرح داده میشود. در این قسمت کد مقلوب (معکوس) عدد در پایتون را با شما خواهیم نوشت. هدف ما در این سری آموزش برنامه نویسی پایتون این است که برنامه نویسان تاره کار پایتون، با یک مثال کاربردی آشنا شوند و درک بهتری از روش برنامه نوشتن در پایتون، پیدا کنند. اگر از علاقمندان به برنامهنویسی با زبان پایتون هستید، در ادامه با ما همراه باشید.
چگونه برنامه مقلوب (معکوس) عدد در پایتون را بنویسیم؟
عنوان سوال کد مقلوب (معکوس) عدد در پایتون: برنامهای بنویسید که یک عدد صحیح از کاربر بگیرد و مقلوب (معکوس) آن عدد را چاپ کند؟
همانطور که در قسمت قبل گفتیم، هر سوالی را باید در ابتدا به بخشهای کوچکتر تقسیم کنیم تا به جواب برسیم. در این اینجا در قسمت اول سوال گفته شده است که یک عدد صحیح از کاربر، بگیرید که در پایتون میتوانیم با وارد کردن دستورات ورودی، این بخش سوال را به انجام برسانیم.
در بخش بعدی سوال، از ما خواسته شده است که مقلوب یک عدد را چاپ کنیم. برای چاپ کردن میتوانیم از دستورات خروجی در پایتون استفاده کنیم، فقط میماند مقلوب یک عدد، که باید ابتدا بدانیم چه هست و در ادامه به دنبال الگوریتمی برای حل آن بگردیم.
برای اطلاعات بیشتر در این مورد، مقالهی ورودی و خروجی در پایتون را مطالعه نمایید.
مقلوب عدد چیست؟
اگر ارقام یک عدد، را برعکس کرده و از راست به چپ بنویسیم، عدد به دست آمده را مقلوب آن عدد میگویند. برای مثال مقلوب عدد 856 میشود 658.
در دنیای واقعی، به دست آوردن مقلوب یک عدد کار سادهای است، اما انجام دادن این امر برای رایانه باید به ترتیب مراحلی منظمی همانند الگوریتم زیر باشد.
الگوریتم مقلوب یک عدد در پایتون
الگوریتم که دستوراتی قابل فهم برای رایانه است، اهمیت بالایی در برنامهنویسی دارد.
الگوریتم زیر دستورالعملهای پشتسرهمی است، که رایانه با انجام آنها، مقلوب یک عدد را به دست میآورد:
- یک عدد بگیر و در number قرار بده.
- یک خروجی به نام reverse_num انتخاب کن و 0 را در آن قرار بده.
- باقیماندهی تقسیم number بر 10 را در temp قرار بده.
- reverse_num را در 10 ضرب کن و حاصل را با temp جمع کرده و در reverse_num قرار بده.
- حاصل تقسیم number بر 10 را در number قرار بده.
- اگر number بزرگتر از 0 است، به گام 3 برگرد.
- reverse_num را چاپ کن.
- به اجرای الگوریتم خاتمه بده.
شروع نوشتن کد مقلوب (معکوس) عدد در پایتون
حال که الگوریتم برنامه را داریم به راحتی میتوانیم به سراغ نوشتن کد آن در پایتون برویم. ابتدا با دستور ()input یک عدد صحیح از کاربر میگیریم. به این صورت:
number = int(input('please enter your number: '))
سپس متغیری که قرار است، مقلوب یک عدد را در آن قرار دهیم با نام reverse_num تعریف و عدد 0 را به آن اختصاص میدهیم. به این صورت:
reverse_num = 0
برای اجرای گام 3 تا 6 الگوریتم، دستورات را در یک حلقهی تکرار while مینویسیم. حلقه تا وقتی که number بزرگتر از 0 است، ادامه دارد. به این صورت:
while number > 0: pass
در حلقه، ابتدا باقیماندهی تقسیم number بر 10 را در متغیر temp میریزیم. به این صورت:
temp = number % 10
سپس reverse_num را در 10 ضرب کرده و حاصل را با temp جمع میکنیم و عدد بهدست آمده را در خودش میریزیم. اینگونه:
reverse_num = (reverse_num * 10) + temp
در پایان خارج قسمت صحیح، تقسیم number بر 10 را در خود number قرار میدهیم.
number = number // 10
بعد از خارج شدن در حلقه، با دستور print() متغیر reverse_num که مقلوب عدد ورودی است، را چاپ میکنیم.
print(reverse_num)
به این ترتیب، ما کد برنامهای را نوشتیم که مقلوب یک عدد را به دست میآورد. کد یکجای برنامه را در زیر میبینید:
number = int(input('please enter your number: ')) reverse_num = 0 while number > 0: temp = number % 10 reverse_num = reverse_num * 10 + temp number = number // 10 print(reverse_num)
روشی ساده برای نوشتن کد مقلوب (معکوس) عدد در پایتون
روشی وجود دارد که ما میتوانیم بدون به کار بردن الگوریتم، کد مقلوب (معکوس) عدد در پایتون، را بنویسیم. به این صورت:
number = input('please enter your number: ') reverse_num = int(number[::-1]) print(reverse_num)
اتفاقی که در این کد، صورت میپذیرد، این است که ما ورودیمان را به عدد صحیح تبدیل نمیکنیم. به دقت نگاه کنید:
number = input('please enter your number: ')
حال که ورودی ما یک رشته است، با استفاده از متدهای برش (Slices) در پایتون، آن را برعکس میکنیم. سپس حاصل را تبدیل به عدد صحیح کرده و در متغیری به نام reverse_num قرار میدهیم. به این صورت:
reverse_num = int(number[::-1])
در پایان نیز reverse_num را چاپ میکنیم:
print(reverse_num)
این از مزایای زبان برنامهنویسی پایتون است که با کدهای کوتاه و خلاصه شده، میتوانیم برنامههای خود را بنویسیم.
برنامه پایتون مقلوب عدد سه رقمی
اکنون قصد داریم تا با استفاده از برنامهی تعیین مقلوب یک عدد، برنامهی دیگری بنویسیم. مسئله ما اینگونه است:
برنامهای بنویسید که اعداد سه رقمی را که با مقلوبشان برابرند مشخص و چاپ کند و تعداد این نوع اعداد را نیز در پایان تعیین و چاپ کند.
با توجه به شناختی که از الگوریتم پیدا کردیم و از اهمیت آن آگاه شدیم، قصد داریم این برنامه را با استفاده از دو الگوریتم متفاوت بنویسم.
الگوریتم اول برای چاپ اعداد سه رقمی برابر با مقلوبشان
در این روش ما از الگوریتمی که برای تعیین مقلوب یک عدد نوشتیم، و نیز لیستها استفاده میکنیم.
- یک آرایهی خالی به نام output_numbers تعریف کن.
- به ازای مقادیر i، از 100 تا 1000 و افزایش یک واحد پس از هر بار اجرا حلقه، گامهای 3 تا 9 را به طور مکرر اجرا کن.
- مقدار i را در number قرار بده.
- یک خروجی به نام reverse_num انتخاب کن و 0 را در آن قرار بده.
- باقیماندهی تقسیم number بر 10 را در temp قرار بده.
- reverse_num را در 10 ضرب کن و حاصل را با temp جمع کرده و در reverse_num قرار بده.
- حاصل تقسیم number بر 10 را در number قرار بده.
- اگر number بزرگتر از 0 است، به گام 5 برگرد.
- اگر reverse_num برابر با i است، مقدار i را به output_numbers اضافه کن.
- به ازای مقادیر item داخل output_numbers، با اجرای مکرر هر بار حلقه، item را چاپ کن.
- تعداد عضو output_numbers را چاپ کن، و به اجرای الگوریتم خاتمه بده.
نوشتن کد الگوریتم اول چاپ اعداد سه رقمی برابر با مقلوبشان
الگوریتم اول گسترش کد مقلوب (معکوس) عدد در پایتون:
نخست یک لیست خالی به نام output_numbers تعریف میکنیم. سپس حلقهی تکرار for را مینویسیم که از 100 تا 1000 را پیمایش میکند. به این صورت:
output_numbers = [] for i in range(100, 1000): pass
در حلقه، ابتدا مقدار i را در number قرار داده و سپس کدی که در برنامهی اول نوشتیم را به آن اضافه میکنیم. به این صورت:
number = i reverse_num = 0 while number > 0: temp = number % 10 reverse_num = reverse_num * 10 + temp number = number // 10
اکنون با یک if، اگر reverse_num مساوی i باشد، مقدار i را به لیستمان اضافه میکنیم. به این صورت:
if reverse_num == i: output_numbers.append(i)
با پایان حلقهی اول، با یک حلقهی تکرار for دیگر، تمامی مقادیر داخل لیست را چاپ میکنیم. اینگونه:
for item in output_numbers: print(item)
در انتها نیز، طول لیست را که نشاندهنده، تعداد اعدادی است که خود و مقلوبشان، یکسان هستند را در متغیری به نام accumulator میریزیم و سپس آن را چاپ میکنیم.
accumulator = len(output_numbers) print('accumulator: {}'.format(accumulator))
ما موفق شدیم با یک لیست و برنامهای که ابتدا نوشتیم یک برنامه طولانیتر بنویسیم. کد یکجای برنامه را میتوانید در زیر ببینید.
output_numbers = [] for i in range(100, 1000): number = i reverse_num = 0 while number > 0: temp = number % 10 reverse_num = (reverse_num * 10) + temp number = number // 10 if reverse_num == i: output_numbers.append(i) for item in output_numbers: print(item) accumulator = len(output_numbers) print('accumulator: {}'.format(accumulator))
الگوریتم دوم چاپ اعداد سه رقمی برابر با مقلوبشان
الگوریتم دوم گسترش کد مقلوب (معکوس) عدد در پایتون:
در این الگوریتم که بهینهتر است، بدون استفاده از لیست و ذخیرهی اطلاعاتی، به جواب خواهیم رسید.
- یک جمعکنندهی تعداد اعداد به نام accumulator انتخاب کن و صفر را در آن قرار بده.
- عدد 100 را در یک شمارنده به نام i اضافه کن.
- مقدار i را در number قرار بده.
- باقیماندهی تقسیم number بر 10 را محاسبه و در same_digit قرار بده.
- بخش صحیح تقسیم number بر 10 را در number قرار بده.
- بخش صحیح تقسیم number بر 10 را در last_digit قرار بده.
- اگر مقدار A و C برابر است، مقدار i را چاپ کن و یک واحد به accumulator اضافه کن.
- یک واحد به i اضافه کن.
- اگر مقدار i کوچکتر از 1000 است، به گام 3 برو.
- مقدار accumulator را چاپ کن و به اجرای کد خاتمه بده
نوشتن کد الگوریتم دوم چاپ اعداد سه رقمی برابر با مقلوبشان
طبق الگوریم، یک متغیر به نام accumulator تعریف میکنیم و مقدار صفر را به آن اختصاص میدهیم. سپس با استفاده از یک حلقهی تکرار for ، از عدد 100 تا 1000 را پیمایش میکنیم. به این صورت:
accumulator = 0 for i in range(100, 1000): pass
در حلقه، ابتدا مقدار i را در number قرار میدهیم. این کار را به این دلیل انجام میدهیم که مقدار اولیهی i حفظ شود و عملیات روی number انجام گیرد.
number = i
بعد از آن برای جدا کردن رقم یکان عدد، باقیماندهی تقسیم number بر 10 را در متغیری به نام same_digit قرار میدهیم. برای حذف همین رقم از number، حاصل صحیح خارجقسمت تقسیم number بر 10 را داخل خودش قرار میدهیم. به این صورت:
same_digit = number % 10 number = number // 10
اکنون برای حذف رقم دهگان و به دست آوردن رقم صدگان، خارجقسمت صحیح تقسیم number بر 10 را در متغیری به نام last_digit میریزیم. به این صورت:
last_digit = number // 10
الان ما هم رقم یکان و هم رقم صدگان عدد را داریم. با یک if، اگر دو رقم با هم مساوی باشند، مقدار i را چاپ و یکی به accumulator اضافه میکنیم. به این صورت:
if same_digit == last_digit: print(i) accumulator += 1
بعد از خروج از حلقه، در پایان تعداد اعدادی که خود و مقلوبشان، یکسان است را چاپ میکنیم.
print(accumulator)
خب ما توانستیم با این الگوریتم بهینهشده، برنامهی تعیین مقلوب یک عدد را کدنویسی و اجرا کنیم. کد یکجا برنامه را میتوانید در زیر ببینید.
accumulator = 0 for i in range(100, 1000): number = i same_digit = number % 10 number = number // 10 last_digit = number // 10 if same_digit == last_digit: print(i) accumulator += 1 print('accumulator: {}'.format(accumulator))
چگونه کد مقلوب (معکوس) عدد در پایتون را بنویسیم؟
در این قسمت از آموزشهای پایتون، ابتدا یک کد مقلوب (معکوس) عدد در پایتون نوشتیم و سپس آن را گسترش دادیم. یک ضربالمثل برنامهنویسی هست که میگوید: "هر برنامهی بزرگ و پیچیده از برنامههای کوچکتری تشکیل شده است که کار میکند". هر برنامهنویس باید این جمله را همیشه در ذهنش مرور کند تا هر وقت با برنامههای بزرگ مواجه شد آنها را به برنامههای کوچکتر تبدیل کرده و گام به گام آنها را گسترش داده، تا به برنامهی بزرگ خواسته شده برسد. ما نیز برای حل این مسئله، آن را به بخشهای کوچک تقسیم کردیم و سرانجام توانستیم با قرار دادن بخشهای مختلف در کنار یکدیگر، کد مقلوب (معکوس) عدد در پایتون را به دو روش مختلف بنویسیم.
روش شما برای نوشتن کد مقلوب (معکوس) عدد در پایتون چیست و کدام روش را ترجیح میدهید؟ خوشحال میشویم سئوالات و تجربیات خود را در بخش نظرات با ما در میان بگذارید.
اگر به برنامه نویسی علاقهمند هستید، دورههای متخصص سون لرن میتوانند به شما کمک کنند تا در مدت زمان کوتاهی به یک برنامه نویس خبره تبدیل شوید.
یادگیری زبان پایتون بسیار ساده است. و با شرکت در دورهی متخصص پایتون توسعه وب درآینده میتونی اپلیکیشن موبایل و دسکتاپ بسازی و وارد حوزهی هوش مصنوعی هم بشوی.
چه امتیازی به این مقاله می دید؟
1 2 3 4 5
نویسنده
هیچوقت برای یادگیری دیر نیست؛ همیشه چیزهای جدید برای آموختن وجود دارد.. این دو جمله، همیشه آویزهی گوش منه، چون باعث میشه از یادگیری چیزهای تازه هراسی نداشته باشم.