تبدیل عدد دهدهی به باینری در پایتون

متوسطحلقه

صورت سؤال

برنامه‌ای بنویسید که یک عدد صحیح نامنفی را از ورودی بخواند و شکل باینری آن را چاپ کند.

خروجی فقط از رقم‌های ۰ و ۱ تشکیل شده و پیشوندی مثل 0b ندارد. اگر ورودی ۰ بود، خود 0 را چاپ کنید.

ورودی نمونه

13

خروجی نمونه

1101

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

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

Ctrl + Enter
خروجی

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

راهنمایی

باقی‌ماندهٔ n بر ۲ آخرین رقم باینری است و n // 2 بقیهٔ عدد را می‌دهد. هر رقم تازه را به اول رشتهٔ جواب اضافه کنید، نه به آخر آن.

جواب و توضیح

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

نمایش جواب
n = int(input())

if n == 0:
    print(0)
else:
    bits = ""
    while n > 0:
        bits = str(n % 2) + bits
        n //= 2
    print(bits)

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

n % 2 همیشه ۰ یا ۱ است و آخرین رقم شکل باینری را می‌دهد. با n //= 2 این رقم کنار می‌رود و حلقه سراغ رقم بعدی می‌رود. برای ۱۳ باقی‌مانده‌ها به ترتیب ۱ و ۰ و ۱ و ۱ هستند.

باقی‌مانده‌ها از آخرین رقم به اولین رقم پیدا می‌شوند. به همین دلیل هر رقم تازه با str(n % 2) + bits به اول رشته اضافه می‌شود و در پایان، رشته به ترتیب درست یعنی 1101 است.

صفر حالت خاص است: شرط while از اول برقرار نیست و رشته خالی می‌ماند. شرط if n == 0 این حالت را جدا جواب می‌دهد تا خروجی 0 باشد، نه یک سطر خالی.

راه دوم: تابع آمادهٔ bin

n = int(input())

print(bin(n)[2:])

bin(13) رشتهٔ 0b1101 را برمی‌گرداند و برش [2:] دو حرف پیشوند را حذف می‌کند. format(n, "b") هم همین نتیجه را بدون پیشوند می‌دهد و هر دو برای صفر 0 برمی‌گردانند.

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

  • رقم‌ها را به آخر رشته اضافه می‌کنند و جواب برعکس چاپ می‌شود؛ برای ۱۳ به‌جای 1101 رشتهٔ 1011 چاپ می‌شود.
  • حالت صفر را جدا نمی‌کنند و برنامه برای ورودی ۰ یک سطر خالی چاپ می‌کند.
  • خروجی bin() را بدون برش چاپ می‌کنند و پیشوند 0b هم در جواب می‌آید.

تمرین بعدی

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

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