مثال 42 پایتون – برنامه ای به پایتون بنویسید که مشخص کند آیا shell پایتون در مد 32 بیتی یا 64 بیتی در سیستم عامل در حال اجراست
کد برنامه
1 2 |
import struct print(struct.calcsize("P") * 8) |
توضیح کد برنامه
این کد در واقع اندازه (بیت) اشارهگر را به ما نشان میدهد. دقیقتر بگوییم، تعداد بیتهای لازم برای نمایش یک اشارهگر در محیط مورد استفاده (معمولاً 32 یا 64 بیت) را نمایش میدهد.
برای اینکار از ماژول struct
در پایتون استفاده میشود. struct.calcsize("P")
اندازه یک اشارهگر به بایت را محاسبه میکند. اگر این اندازه را به تعداد بیت تبدیل کنیم، میزان بیتهای مورد نیاز برای نمایش یک اشارهگر در سیستم عاملی که این کد روی آن اجرا میشود، به دست میآید. از * 8
برای تبدیل بایت به بیت استفاده میشود.
یعنی این کد تعداد بیتهایی که در سیستم عامل مورد استفاده قرار میگیرد را نمایش میدهد. این تعداد بیتها به تبع سیستم عامل و معماری سختافزاری استفاده شده در سیستم میتواند 32 بیت یا 64 بیت باشد.
کد راه حل دوم
1 2 |
import platform print(platform.architecture()[0]) |
توضیح کد راه حل دوم
این کد پایتون از ماژول platform
استفاده میکند تا اطلاعاتی در مورد معماری سیستم عامل جاری را به دست آورد و نمایش دهد. کد به صورت زیر عمل میکند:
import platform
: ابتدا ماژولplatform
وارد برنامه میکنیم. این ماژول اطلاعات متنوعی را از سیستم عامل و پلتفرم جاری ارائه میدهد.platform.architecture()
: تابعarchitecture()
معماری سیستم عامل را به شکل یک تاپل بازمیگرداند. این تاپل دو عنصر دارد: نوع معماری و نوع پلتفرم. به عبارت دیگر، این تابع اطلاعات مربوط به معماری سیستم عامل (مثلاً “32bit” یا “64bit”) و نوع پلتفرم (مثلاً “WindowsPE” یا “ELF”) را ارائه میکند.[0]
: در اینجا ما از[0]
برای انتخاب اولین عنصر تاپل که نوع معماری است استفاده میکنیم. این کد نوع معماری سیستم عامل را از اطلاعات به دست آمده بازیابی میکند و در نهایت آن را نمایش میدهد.
به طور خلاصه، این کد نوع معماری سیستم عامل جاری را میدهد (مثلاً “32bit” یا “64bit”).
مقداد علی بخشی هستم. موسیقی دان، برنامه نویس، متخصص هوش مصنوعی، علم داده، متخصص بلاکچین و توسعه دهنده ربات های هوشمند.
دانش آموخته مقطع ارشد و دکتری دانشکده فنی دانشگاه تهران هستم. با سابقه تدریس درس برنامه نویسی در دانشگاه (پردیس بین الملل کیش دانشگاه تهران)