جابجایی مقدار دو متغیر در پایتون

آسانورودی، خروجی و محاسبه

صورت سؤال

برنامه‌ای بنویسید که دو مقدار را در دو خط بخواند و در متغیرهای a و b بگذارد، سپس مقدار این دو متغیر را با هم عوض کند.

در پایان، مقدار جدید a را در خط اول و مقدار جدید b را در خط دوم چاپ کنید.

ورودی نمونه

7
12

خروجی نمونه

12
7

خودتان امتحان کنید

کد را در ویرایشگر زیر کامل کنید و اجرا کنید. ورودی نمونه در کادر ورودی آماده است و بعد از هر اجرا، خروجی شما با خروجی نمونه مقایسه می‌شود.

Ctrl + Enter
خروجی

کد را اجرا کنید تا خروجی آن اینجا نمایش داده شود.

راهنمایی

در پایتون می‌توانید چند مقدار را هم‌زمان به چند متغیر بدهید. اگر می‌خواهید راه کلاسیک را امتحان کنید، یک متغیر کمکی بسازید که مقدار a را پیش از تغییر نگه دارد.

جواب و توضیح

بهتر است جواب را بعد از امتحان کردن راه خودتان باز کنید.

نمایش جواب
a = input()
b = input()

a, b = b, a

print(a)
print(b)

این جواب چطور کار می‌کند؟

در خط a, b = b, a سمت راست اول به طور کامل حساب می‌شود. پایتون از مقدارهای فعلی b و a یک تاپل موقت می‌سازد و بعد عضو اول آن را در a و عضو دوم را در b قرار می‌دهد.

چون هر دو مقدار پیش از هر تغییری خوانده شده‌اند، هیچ‌کدام از دست نمی‌رود. به همین دلیل در پایتون برای جابجایی به متغیر سوم نیازی نیست.

در این تمرین ورودی‌ها به عدد تبدیل نشده‌اند، چون فقط جابجا و چاپ می‌شوند. همین کد برای دو متن یا دو عدد به یک شکل کار می‌کند.

راه دوم: با متغیر کمکی

a = input()
b = input()

temp = a
a = b
b = temp

print(a)
print(b)

این همان راهی است که در بیشتر زبان‌های برنامه‌نویسی، مثل C و جاوا، به کار می‌رود. در پایتون شکل یک‌خطی رایج‌تر است، اما این راه منطق جابجایی را روشن‌تر نشان می‌دهد.

اشتباه‌های رایج

  • می‌نویسند a = b و بعد b = a، و چون مقدار قبلی a از دست رفته است، هر دو متغیر یک مقدار می‌گیرند.
  • در راه کلاسیک، ترتیب سه خط را به هم می‌ریزند و متغیر کمکی را پس از تغییر a مقداردهی می‌کنند.

تمرین بعدی

پایتون را قدم‌به‌قدم یاد بگیرید

این تمرین یکی از تمرین‌های پایتون با جواب دینا کد است. در دورهٔ پایتون از صفر هر مفهوم یک درس کوتاه دارد و تمرین هر درس با چند آزمون پنهان نمره می‌گیرد؛ درس‌های اول رایگان است. برای امتحان کد آزاد هم اجرای آنلاین پایتون در دسترس است.