چطور کامپیوترها فکر می‌کنند؟

کامپیوترها. درون سرشان چه می‌گذرد؟ چطور فکر می‌کنند؟ خب، این اصلاً شبیه چیزی که در ذهن داریم نیست.
ممنون. به او توجه نکنید. اینجا به شما نشان می‌دهم که کامپیوترها چطور فکر می‌کنند.

احتمالاً با ذخیره‌سازی فایل‌ها در کامپیوتر آشنا هستید. وقتی یک فایل را ذخیره می‌کنید—مثلاً یک فایل متنی—آن فایل یک نام فایل دارد و مقداری محتوا، یعنی همان متن‌هایی که داخل فایل قرار دارند.

اینجا، این شبکه یا جدول نشان‌دهنده حافظه کامپیوتر شما است؛ جایی که فایل‌ها و داده‌ها در آن ذخیره می‌شوند.
و پایین این شبکه، ما یک نام فایل داریم. این نام فایل در دایرکتوری (فهرست فایل‌ها)ی کامپیوتر ثبت شده و می‌توانید آن را مانند آیکونی تصور کنید که روی آن کلیک می‌کنید.

همراه با این نام فایل، آدرس یا محل دقیق محتوای فایل در حافظه هم ذخیره شده است.
کامپیوترها در یافتن دقیق یک نقطه خاص در حافظه، اگر آدرس آن را داشته باشند، بسیار توانمند هستند.
و این آدرس، در واقع یک عدد است. هر نقطه در حافظه یک عدد یکتای مخصوص به خود دارد.
از آنجایی که کامپیوتر می‌تواند مستقیماً به یک مکان خاص در حافظه بپرد اگر آدرسش را بداند، به این آدرس می‌گوییم: pointer (اشاره‌گر)، که با یک فلش نمایش داده می‌شود.

این اشاره‌گر به جایی اشاره می‌کند که محتوای فایل از آنجا آغاز می‌شود.
همچنین، همراه نام فایل اطلاعاتی مثل حجم فایل هم ذخیره می‌شود.
مثلاً ممکن است این فایل ۴ کیلوبایت حجم داشته باشد. بنابراین کامپیوتر می‌داند که اگر قرار است محتوای این فایل را بخواند، باید به مکان اشاره‌گر برود، ۴ کیلوبایت بعدی را بخواند و سپس کل محتوا را برای شما بارگذاری کند.

حالا وقتی ما یک برنامه کامپیوتری می‌نویسیم و اجرا می‌کنیم، در حقیقت مستقیماً با حافظه کامپیوتر تعامل داریم.
برنامه‌ها دائماً تکه‌های کوچکی از داده‌ها تولید می‌کنند، چیزی شبیه فایل‌های کوچک.
این داده‌ها را ما “متغیر (Variable)” می‌نامیم. این متغیرها یک نام دارند و به بخشی از حافظه که داده در آن ذخیره شده، اشاره می‌کنند.

مثال بزنیم:

A = 2  
B = 3
C = A + B

کامپیوتر خط اول را می‌خواند. یعنی مقدار ۲ به متغیر A نسبت داده می‌شود.
پس کامپیوتر یک رکورد (ثبت) ایجاد می‌کند که می‌گوید: متغیری به نام A وجود دارد که به مقدار ۲ اشاره می‌کند (در یک مکان خاص از حافظه).

بعد همین کار را برای B انجام می‌دهد: متغیر B ساخته می‌شود و به داده ۳ اشاره می‌کند.

سپس به خط سوم می‌رسد.
کامپیوتر ابتدا باید مقدار A + B را محاسبه کند. برای این کار:

  • به متغیر A نگاه می‌کند، مکانش در حافظه را پیدا می‌کند و مقدار ۲ را می‌خواند.
  • سپس به B نگاه می‌کند، مکانش را پیدا می‌کند و مقدار ۳ را می‌خواند.
  • این دو مقدار را جمع می‌زند (۲ + ۳) و نتیجه را در متغیر سوم یعنی C ذخیره می‌کند.

حالا ممکن است بپرسید: چرا باید بدانیم وقتی برنامه‌ای اجرا می‌شود، در پشت صحنه چه اتفاقی می‌افتد؟
این برنامه ساده است. ما لازم نیست دقیقاً بدانیم کامپیوتر چطور داده‌ها را ذخیره و بازیابی می‌کند.

اما فرض کنید این کد را داشته باشیم:

A = [1, 2, 3, 4, 5]

در پایتون، استفاده از براکت مربعی [ ] نشان‌دهنده لیست (List) است. یعنی به جای یک مقدار، ما مجموعه‌ای از مقادیر داریم.
در اینجا متغیر A یک لیست از اعداد است: 1، 2، 3، 4، 5.

حالا فرض کنیم این خط را داریم:

B = A

چه اتفاقی می‌افتد اگر یکی از مقادیر داخل لیست A را تغییر دهیم؟ مثلاً:

A[0] = 6

در این حالت، ما همزمان در حال تغییر مقدار A و B هستیم!

چرا؟ چون وقتی نوشتیم B = A، ما یک کپی جدید از لیست نساختیم. بلکه فقط B را به همان مکان حافظه که A اشاره می‌کرد، اشاره دادیم.
بنابراین اگر A تغییر کند، B هم تغییر می‌کند؛ چون هر دو به یک مکان از حافظه اشاره دارند.

این مفهوم بارها و بارها در هنگام برنامه‌نویسی برایتان تکرار خواهد شد.

وقتی برنامه می‌نویسید، در حال کار مستقیم با حافظه کامپیوتر هستید.
شما داده وارد حافظه می‌کنید، داده را از آن بیرون می‌کشید، و آن را دستکاری می‌کنید.

بنابراین داشتن یک مدل ذهنی از پشت‌صحنه‌ی کار کامپیوتر بسیار مهم است.

نصب پایتون، Pip و دفترچه‌های ژوپیتر (Jupyter Notebooks)

در این بخش از دوره، دانستن نحوه کار با کامپیوتر خیلی به دردتان خواهد خورد.
هر سیستم‌عاملی (مثل ویندوز، مک یا لینوکس) و هر پیکربندی فایلی ممکن است با دیگری متفاوت باشد.
این چیزها مدام آپدیت و تغییر می‌کنند و هرچند امیدوارم نصب برایتان بدون مشکل پیش برود، اما نمی‌توانم آن را تضمین کنم.

برای کمک به حل مشکلات احتمالی، یک سند رفع اشکال (Troubleshooting) در پوشه‌ی فایل‌های تمرینی قرار داده‌ام که تمام مراحل را قدم‌به‌قدم توضیح می‌دهد. همچنین، لینکی به ویکی رفع اشکال در گیت‌هاب (GitHub Wiki) نیز در آن قرار دارد.

اگر همه این مراحل را رفتید و هنوز احساس کردید که مشکل خاص شماست، می‌توانید در قسمت پرسش و پاسخ (Q&A) در صفحه دوره، سؤال بپرسید.
اگر مسئله‌تان جالب و مفید باشد، ممکن است آن را همراه با راه‌حلش به ویکی اضافه کنم تا در آینده به دیگران هم کمک کند.

فایل‌های تمرینی را پیدا نمی‌کنید؟

آن‌ها در تب «Overview» در صفحه‌ی دوره قرار دارند یا از طریق لینک گیت‌هاب قابل دسترسی‌اند.
اگر کار با گیت‌هاب را بلد نیستید، فقط کافی‌ست وارد صفحه گیت‌هاب شوید، روی دکمه‌ی Code بزنید و Download ZIP را انتخاب کنید.
حتماً قبل از استفاده، فایل فشرده (ZIP) را از حالت فشرده خارج (Extract/Unzip) کنید.
و آن را در جایی ذخیره کنید که راحت پیدا می‌کنید—مثلاً روی دسکتاپ یا پوشه Documents.

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

حالا نصب را شروع می‌کنیم

1. نصب پایتون

به سایت python.org/downloads بروید.
در صفحه، یک دکمه زرد رنگ بزرگ می‌بینید. این سایت سیستم‌عامل شما را به‌صورت خودکار تشخیص می‌دهد و نسخه‌ی مناسب را پیشنهاد می‌کند.

آن را دانلود کنید و مراحل نصب را طی کنید.

🔸 اگر ویندوز دارید:

  • روی Customize Installation کلیک کنید.
  • سپس Next را بزنید.
  • حتماً گزینه‌ی Add Python to environment variables را فعال کنید.

⚠️ اگر این گزینه را فعال نکنید، بعداً باید از راهنمای رفع اشکال استفاده کنید تا مشکلتان را حل کنید.

مراحل نصب را کامل کنید. کارتان با پایتون تمام است.

🔸 اگر از Mac استفاده می‌کنید، ممکن است پس از نصب پنجره‌ای ظاهر شود؛ فقط آن را ببندید.


2. پیدا کردن ترمینال (Terminal)

ترمینال جایی است که برنامه‌نویس‌ها در آن دستورات را وارد می‌کنند.
امیدوارم قبلاً با آن آشنا شده باشید یا دست‌کم دیده باشید.

  • در ویندوز: منوی Start را باز کنید و Command Prompt را پیدا کنید. می‌توانید هم CMD را جستجو کنید.
  • در مک: به مسیر Applications > Utilities > Terminal بروید.
  • در لینوکس: بسته به توزیع‌تان متفاوت است؛ اما به‌راحتی می‌توانید ترمینال را پیدا کنید چون در لینوکس زیاد با آن کار دارید.

3. تست نصب پایتون

در ترمینال تایپ کنید:

python

و Enter را بزنید.

🔸 در مک، ممکن است لازم باشد به‌جای python بنویسید:

python3

این کار به این دلیل است که ممکن است نسخه 2 و 3 پایتون به‌طور هم‌زمان روی مک نصب باشند.

با Enter کردن، باید وارد «محیط تعاملی پایتون» شوید که با >>> نشان داده می‌شود.

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

برای تست ساده، بنویسید:

1 + 1

و Enter بزنید. اگر خروجی 2 دیدید، یعنی نصب موفقیت‌آمیز بوده.


4. خروج از محیط پایتون

برای خروج از محیط پایتون:

  • در مک و لینوکس: دکمه‌های Control + D
  • در ویندوز: Control + Z و سپس Enter
  • یا در همه سیستم‌ها بنویسید:
quit()

5. استفاده از pip برای نصب JupyterLab

حالا که دوباره در ترمینال اصلی سیستم‌عامل هستید (نه محیط پایتون)، مطمئن شوید که >>> دیگر نمایش داده نمی‌شود.

حالا از ابزاری به نام pip استفاده می‌کنیم که همراه با پایتون نصب می‌شود.
pip سیستم مدیریت بسته‌ی پایتون است.

در ترمینال بنویسید:

pip

و Enter بزنید تا لیستی از دستورات pip را ببینید.

حالا برای نصب JupyterLab بنویسید:

pip install jupyterlab

به واژه‌ی Jupyter توجه کنید که با حرف Y نوشته می‌شود.
کمی صبر کنید تا نصب کامل شود.


6. رفتن به محل ذخیره فایل‌های تمرینی

حالا باید با استفاده از خط فرمان (ترمینال) به جایی بروید که فایل‌های تمرینی ذخیره شده‌اند.
دستور آن cd است، یعنی change directory.

مثال:

cd /Users/yourname/Documents/ExerciseFiles

یا در ویندوز:

cd C:\Users\yourname\Desktop\ExerciseFiles

راه آسان‌تر: پوشه را در File Explorer (ویندوز) یا Finder (مک) باز کنید، آدرس را کپی و در ترمینال بچسبانید.

7. اجرای JupyterLab

حالا که وارد پوشه فایل‌های تمرینی شدید، این دستور را بزنید:

bashCopyEditjupyter lab

این دستور سرور Jupyter Notebook را روی کامپیوتر شما اجرا می‌کند.

یک پنجره در مرورگر باز می‌شود و تمام فایل‌های تمرینی را در آن خواهید دید.

نکته مهم: جایگزین Jupyter — استفاده از Visual Studio Code

Jupyter تنها نرم‌افزار نمایش این فایل‌ها نیست.
Visual Studio Code یک محیط توسعه‌ی قدرتمند است که می‌تواند:

  • فایل‌های دفترچه پایتون (.ipynb) را اجرا کند،
  • و برنامه‌های بزرگ‌تری را توسعه دهد.

در بخش‌های مختلف دوره از VS Code استفاده خواهیم کرد.
می‌توانید آن را از code.visualstudio.com دانلود کنید.

اگر در نصب JupyterLab مشکلی داشتید، می‌توانید از VS Code برای اجرای فایل‌ها استفاده کنید.

اجرای دفترچه‌ها

حالا در محیط JupyterLab، روی یکی از فایل‌های .ipynb کلیک کنید.
با کلیک روی هر سلول (cell)، می‌توانید همان بخش از کد پایتون را به‌طور مستقل اجرا کنید.

با این سلول‌ها کمی تمرین کنید.
ما به‌زودی در طول دوره به‌طور جدی با این دفترچه‌ها کار خواهیم کرد.

در بخش بعدی، دوباره به خط فرمان برمی‌گردیم.

ذن پایتون (The Zen of Python)

پایتون بیش از ۳۰ سال است که وجود دارد، و جالب اینکه هرچه سن آن بیشتر می‌شود، محبوبیتش هم بیشتر می‌شود.

پایتون مثل جاوااسکریپت، شلخته یا تصادفی نیست. بلکه یک زبان برنامه‌نویسی ظریف و شایسته برای یک دوران متمدن‌تر است.

مثلاً نحو نوشتاری (syntax) آن به این شکل است که وقتی می‌خواهید یک تابع را فراخوانی کنید، تقریباً همیشه به همان شکلی می‌نویسید که برای توابع مشابه هم استفاده می‌کنید.

طراحان زبان پایتون تلاش کردند—و به نظر من موفق هم شدند—که زبان را ساده و سازگار نگه دارند. و پایتون فقط مخصوص مبتدی‌ها نیست.

من هر روز در شغل خودم از آن برای ساختن سیستم‌های بسیار بزرگ و پیچیده استفاده می‌کنم. چرا؟ چون وقتی با پیچیدگی‌های زیاد سروکار دارید، آخرین چیزی که می‌خواهید، پیچیده‌تر کردن اوضاع است. و اینجا جایی است که پایتون واقعاً می‌درخشد. برای تأکید بر همین موضوع، پایتون حتی یک بیانیه فلسفی دارد،
که به‌صورت یک تخم‌مرغ شانسی (Easter Egg) درون زبان پنهان شده است:

دستور جادویی:

import this

بیایید این را امتحان کنیم.

نحوه اجرا:

  1. یک ترمینال باز کنید
  2. مثل قبل، دستور python را وارد کنید تا وارد محیط تعاملی پایتون شوید.
    علامت >>> نشان می‌دهد که آماده نوشتن کد پایتون هستید.
  3. حالا بنویسید:
import this

دستور import به پایتون می‌گوید: «ماژولی را برایم بیاور تا بتوانم از آن استفاده کنم.» در اینجا نام ماژول، this است. وقتی Enter را بزنید، سندی به شما نمایش داده می‌شود که محتوای آن به این صورت است:

بخشی از «ذن پایتون»:

csharpCopyEditBeautiful is better than ugly.  
زیبا بهتر از زشت است.

Explicit is better than implicit.  
صریح بهتر از ضمنی است.

Simple is better than complex.  
ساده بهتر از پیچیده است.

Complex is better than complicated.  
و پیچیده بهتر از بغرنج است.

می‌بینید منظورم چیست؟
کد به‌اندازه کافی خودش پیچیده می‌شود، نیازی نیست آن را از این هم پیچیده‌تر کنیم!

من قرار نیست کل متن را اینجا برایتان بخوانم،
ولی اجازه بدهید این را به عنوان اولین چالش کوچک شما معرفی کنم:

👉 یک ترمینال باز کنید، بنویسید import this و ببینید چه می‌شود.

حتی اگر هنوز همه‌ی جمله‌های این سند را کاملاً درک نمی‌کنید،
احتمالاً مفهوم کلی آن را احساس خواهید کرد.

و اگر دوباره در پایان این دوره به این سند برگردید و آن را بخوانید،
تقریباً می‌توانم تضمین کنم که هر خط آن برایتان کاملاً قابل درک خواهد بود—درست مثل خود پایتون.

نوشتن یک برنامه

خب، بیایید کم‌کم گرم شویم. قراره اولین برنامه پایتون خودمان را بنویسیم. برای این کار می‌توانید از هر ویرایشگر متنی (text editor) که دوست دارید استفاده کنید. من خودم از Visual Studio Code (VS Code) استفاده می‌کنم و آن را پیشنهاد می‌دهم، اما می‌توانید از نرم‌افزارهایی مثل Sublime Text یا PyCharm هم استفاده کنید. اگر از ویندوز استفاده می‌کنید، می‌توانید از Notepad++ هم بهره ببرید—که خودم قبلاً زیاد با آن کار کرده‌ام.

اگر هنوز هیچ ویرایشگر متنی نصب نکرده‌اید، همین حالا این آموزش را متوقف کنید و یکی نصب کنید.
در این دوره از ویرایشگر متن برای چالش‌ها استفاده خواهیم کرد، و این ابزار یکی از ملزومات برنامه‌نویسی در هر زبانی است.

مرحله 1: ساخت فایل پایتون

یک فایل جدید به نام زیر بسازید:

hello.py

و آن را در ویرایشگر متنی دلخواهتان باز کنید.

🔸 پسوند .py برای تمام فایل‌های پایتون استفاده می‌شود.

حالا فقط یک خط کد پایتون داخل آن تایپ می‌کنیم که متن «Hello, World!» را روی صفحه چاپ کند:

print('Hello, World!')

مرحله 2: توضیح کد

این تابع print() است.

هر متنی که داخل پرانتز وارد شود، روی صفحه (ترمینال) چاپ خواهد شد.

نکته: من متن را داخل تک‌کوتیشن (single quotes) قرار داده‌ام:

'Hello, World!'

این کوتیشن‌ها جزو متن نیستند، بلکه به پایتون می‌گویند:

«من دارم یک رشته‌ی متنی می‌نویسم.»
بنابراین وجود این علامت‌ها مهم است.

مرحله 3: افزودن کامنت (توضیح)

می‌توانیم توضیحی هم برای این خط کد بنویسیم:

کمی فاصله ایجاد کنید و بنویسید:

# print hello, world! to the terminal

در پایتون، هر چیزی که با # شروع شود، کامنت محسوب می‌شود.

یعنی فقط برای انسان قابل خواندن است و هنگام اجرای برنامه نادیده گرفته می‌شود.

کامنت‌ها برای یادآوری یا توضیح کد به خودتان یا برنامه‌نویس‌های دیگر بسیار مفیدند.

مرحله 4: ذخیره و اجرا در ترمینال

فایل را ذخیره کنید.

حالا به ترمینال یا Command Prompt بروید و به مسیری بروید که فایل شما آنجا ذخیره شده است.

برای تغییر مسیر (دایرکتوری)، از دستور cd استفاده کنید که مخفف change directory است.

مثلاً:

cd Documents/GitHub/python-essential-training

💡 نکته حرفه‌ای: برای سریع‌تر نوشتن نام پوشه‌ها می‌توانید از کلید Tab استفاده کنید تا خودکار تکمیل شود.

مثلاً بنویسید:

cd doc <Tab>  → Documents  
cd gi <Tab> → GitHub
cd py <Tab> → python-essential-training

مرحله 5: اجرای برنامه

حالا که در مسیر درست قرار دارید، بنویسید:

python hello.py

یا فقط بنویسید:

python h<Tab>

و خودش کامل می‌شود: hello.py

تفاوت: قبلاً فقط python می‌نوشتیم تا وارد محیط تعاملی پایتون شویم (که علامت >>> دارد).
اما الان داریم نام یک فایل را هم اضافه می‌کنیم.
یعنی: «پایتون، این فایل را اجرا کن.»

و حالا وقتی این دستور را اجرا می‌کنید، برنامه شما اجرا شده و خروجی خواهد بود:

Hello, World!

🎉 تبریک! شما الان رسماً یک برنامه‌نویس پایتون هستید!

دفترچه‌های ژوپیتر (Jupyter Notebooks)

ما در بیشتر بخش‌های این دوره از Jupyter Notebook استفاده خواهیم کرد.
و شاید بعد از تمام زحماتی که برای نصب آن کشیدید، با خودتان بگویید:

«اصلاً این به چه دردی می‌خورد؟ چرا باید ازش استفاده کنیم؟»

خب، الان برایتان توضیح می‌دهم.

Project Jupyter یک سازمان غیرانتفاعی است که ابزارهایی برای پایتون و علم داده می‌سازد.
یکی از معروف‌ترین این ابزارها همین Jupyter Notebook است.

Jupyter Notebook چیست؟

Jupyter یک برنامه تحت وب است که به شما اجازه می‌دهد:

  • برنامه‌های پایتون را در مرورگر وب اجرا کنید
  • و نه در خط فرمان (command line)

وقتی از خط فرمان دستور اجرای Jupyter Notebook را می‌دهید،
در واقع دارید یک سرور نرم‌افزاری را روی کامپیوتر خودتان راه‌اندازی می‌کنید.

بعد از چند ثانیه، مرورگر به‌طور خودکار باز می‌شود و محیط نوت‌بوک را نمایش می‌دهد.

❗ اگر صفحه وب به هر دلیلی خودکار باز نشد، می‌توانید URL نمایش‌داده‌شده در ترمینال را کپی و در مرورگر خودتان بچسبانید.
این URL معمولاً به شکل زیر است و چند نسخه دارد که در اصل یکسان هستند.

مرور فایل‌ها

وقتی صفحه Jupyter باز شود، لیستی از فایل‌ها را می‌بینید.

  • فایل‌هایی که پسوند .ipynb دارند، دفترچه‌های Jupyter هستند.
  • این‌ها همان فایل‌هایی هستند که ما در طول دوره ایجاد و ویرایش خواهیم کرد.

برای ساخت یک دفترچه جدید:

  1. روی دکمه New کلیک کنید.
  2. گزینه Python 3 را انتخاب کنید.
  3. یا یکی از فایل‌های موجود را باز کنید.

چرا دفترچه‌های ژوپیتر محبوب‌اند؟

این دفترچه‌ها در جامعه علم داده (Data Science) بسیار محبوب‌اند چون:

  • ارائه یافته‌ها را آسان می‌کنند
  • می‌توان به راحتی نمودار و چارت تولید کرد
  • و خروجی‌ها را به شکل قابل اشتراک نمایش داد

همچنین، دفترچه‌ها قابلیت خروجی گرفتن با فرمت‌های مختلف را هم دارند.

من خودم هم از نوت‌بوک‌ها زیاد استفاده می‌کنم:

  • وقتی می‌خواهم ایده‌ای را تست کنم
  • وقتی باید گزارشی برای رئیس‌ام تهیه کنم
  • یا مثل الان، وقتی دارم پایتون آموزش می‌دهم و می‌خواهم کدها را مرحله‌به‌مرحله نمایش دهم

ساختار دفترچه‌ها: سلول‌ها (Cells)

هر نوت‌بوک مجموعه‌ای از سلول‌ها (cells) دارد.

✅ ساخت سلول جدید:

فقط کافیست کلیدهای Shift + Enter را بزنید.
هر بار که بزنید، یک سلول جدید ساخته می‌شود.

Shift + Enter → اجرای سلول و ساخت سلول جدید

❌ حذف سلول:

  • بیرون سلول کلیک کنید تا حاشیه آبی شود (command mode)
  • سپس کلید d را دو بار بزنید:
d d

وقتی حاشیه سلول آبی است، در حالت Command Mode هستید.
اگر داخل سلول کلیک کنید، وارد Edit Mode می‌شوید و می‌توانید کد بنویسید.

مثلاً:

print("Doing some data science")

و برای اجرا:

Shift + Enter

دستورات کاربردی دیگر:

  • A → ایجاد سلول قبل از سلول جاری
  • B → ایجاد سلول بعد از سلول جاری
  • M → تبدیل سلول به Markdown (متن ساده، بدون کد)

افزودن متن و عنوان (Markdown Mode)

مثلاً می‌خواهید یک عنوان در بالای نوت‌بوک بنویسید، نه کد:

  1. بیرون سلول کلیک کنید (تا وارد Command Mode شوید)
  2. کلید M را بزنید
  3. حالا داخل سلول بنویسید:
# عنوان اصلی

و برای اجرا:

Shift + Enter

قابلیت‌های Markdown:

در Markdown می‌توانید موارد زیر را انجام دهید:

  • ✅ تیترهای مختلف با #
  • 🔹 لیست‌های بولت‌دار (-)
  • 🔸 متن ایتالیک یا بولد
  • 🧮 حتی نوشتن معادلات ریاضی با LaTeX

مثال معادله ریاضی:

$E = mc^2$

پشتیبانی وسیع

دفترچه‌های Jupyter:

  • در GitHub به‌خوبی نمایش داده می‌شوند
  • البته نمی‌توانید در GitHub آن‌ها را ویرایش کنید
  • اما می‌توانید در محیط‌هایی مثل Visual Studio Code آن‌ها را باز، ویرایش و اجرا کنید

من همین فایل را در VS Code باز کرده‌ام و می‌توانم:

  • سلول‌ها را ویرایش کنم
  • اجرا کنم
  • درست مثل مرورگر با آن کار کنم

اگر نصب Jupyter مشکل داشت…

اگر با اجرای Jupyter از طریق خط فرمان به مشکل خوردید، پیشنهاد می‌کنم Visual Studio Code را نصب و استفاده کنید.

جمع‌بندی:

نگران میانبرها نباشید می‌دانم که در این بخش کلی مطلب و میانبر یاد گرفتید. اما نگران نباشید. 🔑 فقط کافی‌ست در ابتدا روی Shift + Enter تمرکز کنید.
هر چیز دیگری را به‌مرور یاد خواهید گرفت. اگر همین روند را دنبال کنید، خیلی زود به یک کاربر حرفه‌ای Jupyter Notebook تبدیل می‌شوید.

اجرای کد در Jupyter Notebook

در Jupyter Notebook:

  • برای اجرای سلول، Shift + Enter را بزنید.
  • برای ساخت یک سلول جدید، در حاشیه بیرونی سلول کلیک کنید و کلید A را فشار دهید.

حالا اگر بنویسم:

print(x)

خروجی خواهد بود:

5

در Jupyter حتی اگر فقط بنویسم:

x

باز هم مقدار 5 را نمایش می‌دهد، چون آخرین خط هر سلول به‌صورت خودکار اجرا و نمایش داده می‌شود.

متغیرها و انواع داده (Variables and Types)

متغیرها ساده‌ترین و پایه‌ای‌ترین بخش تشکیل‌دهنده یک برنامه هستند.
آن‌ها واحدهایی‌اند که به آن‌ها یک مقدار اختصاص داده می‌شود.

برای مثال، من می‌توانم متغیری به نام x تعریف کنم و مقدار ۵ را به آن اختصاص دهم:

x = 5

علامت مساوی (=) در اینجا به این معنی است که مقدار ۵ را در متغیر x قرار بده.
به همین دلیل به این علامت می‌گوییم: عملگر انتساب (assignment operator).

در محیط Jupyter Notebook، برای اجرای یک سلول می‌توانم کلیدهای Shift + Enter را بزنم.
همچنین برای اضافه کردن سلول جدید کافی است بیرون حاشیه کلیک کرده و چیزی مانند a تایپ کنم.

در خط بعد می‌توانم بنویسم:

print(x)

و خواهیم دید که مقدار ۵ چاپ می‌شود.

البته در Jupyter Notebook، اگر در خط آخر فقط نام متغیر را بنویسید، خودش مقدار را نمایش می‌دهد:

x

قوانین نام‌گذاری متغیرها:

  • نام متغیر نباید با عدد شروع شود: مثلا x1 مجاز است (اگر قبلاً تعریف نشده باشد)،
    اما 1x باعث ایجاد خطای نحوی (SyntaxError) می‌شود.
  • همچنین نمی‌توان از کاراکترهای خاص (مانند @ یا #) در نام متغیر استفاده کرد، به‌جز زیرخط (_).
  • شما می‌توانید از حروف کوچک یا بزرگ استفاده کنید، اما: در پایتون، توصیه می‌شود که نام متغیرها با حروف کوچک آغاز شوند.
    استفاده از حرف بزرگ در ابتدای نام متغیر ممکن است با کلاس‌ها (classes) اشتباه گرفته شود
    (که در بخش‌های بعدی بیشتر توضیح داده می‌شود).

انواع متغیرها

تا الان ما فقط عددها را به متغیرها داده‌ایم، اما می‌توانیم متنی نیز اختصاص دهیم:

name = "Ryan"

در اینجا مقدار “Ryan” به متغیر name داده شده.
در برنامه‌نویسی، این نوع داده‌ها را رشته (string) می‌نامیم.

دلیل نام‌گذاری «رشته» این است که رشته‌ای از کاراکترها هستند.
هر کاراکتر یک خانه در حافظه را اشغال می‌کند و کامپیوتر آن‌ها را به هم زنجیر می‌کند.

شناسایی نوع داده یک متغیر

اگر فراموش کردید که نوع متغیر چیست، از تابع آماده‌ی type() در پایتون استفاده کنید:

type(name)  # str
type(x)     # int

چند نوع داده‌ی پایه در پایتون:

۱. اعداد صحیح (Integer – int)

اعداد کامل مانند 1، 2، 100.
برنامه‌نویسان به این‌ها integer یا int می‌گویند.

۲. اعداد اعشاری (Float)

مثلاً:

1.5     # float
0.9     # float

چرا به آن‌ها float گفته می‌شود؟
چون محل قرارگیری نقطه اعشار در حافظه شناور است، یعنی می‌تواند تغییر کند.
ممکن است مقدار اصلی سمت راست یا چپ نقطه اعشار باشد.
پس کامپیوتر باید این مکان را به صورت متغیر ذخیره کند.

۳. اعداد مختلط (Complex)

در محاسبات پیچیده، ممکن است از اعداد مختلط استفاده شود.
در پایتون، به جای i از j (مانند مهندسی برق) استفاده می‌شود:

type(2j)         # complex
1j * 1j          # (-1+0j)

یادآوری از ریاضی:
i * i = -1، بنابراین 1j * 1j هم برابر با -1 است.

رشته‌ها (Strings)

رشته‌ها را می‌توان با ' یا " تعریف کرد:

"Hello"
'World'

امروزه در پایتون استفاده از " رایج‌تر است.

می‌توان رشته‌ها را با هم چسباند (concatenate):

"Hello" + "World"  # "HelloWorld"

حتی اگر رشته‌ها شبیه عدد باشند:

"1" + "1"  # "11"

اگر انتظار دارید خروجی ۲ باشد، اشتباه کرده‌اید.
چون رشته عدد نیست و فقط کنار هم چسبیده‌اند.

اگر رشته را با عدد ترکیب کنید:

"1" + 1  # TypeError

پایتون خطا می‌دهد:

TypeError: can only concatenate str (not "int") to str

پس باید همیشه نوع داده‌ها را بررسی و درک کنید.

بولی (Boolean)

نوع داده‌ی بولی (Boolean) فقط دو مقدار دارد:

True
False

نکته: این دو مقدار باید با حرف بزرگ شروع شوند.

اگر بنویسید true (با t کوچک)، پایتون فکر می‌کند متغیر است و خطا می‌دهد.

مقایسه در مقابل انتساب

  • = یعنی اختصاص مقدار
  • == یعنی مقایسه

مثال:

1 == 1  # True
1 == 2  # False

علامت == می‌پرسد: آیا این دو مقدار با هم برابرند؟
درحالی‌که = فقط یک مقدار را به متغیر می‌دهد.

جمع‌بندی نهایی

این حجم از اطلاعات ممکن است زیاد باشد، اما نگران نباشید.
شما نمی‌توانید هیچ برنامه‌ای بدون استفاده از متغیرها بنویسید.
بنابراین این مفاهیم بارها و بارها در طول یادگیری شما تکرار خواهند شد.


ساختارهای داده (Data Structures)

تا اینجا فقط با متغیرهایی کار کردیم که یک مقدار ساده به آن‌ها اختصاص داده شده بود. اما مقادیری مثل عدد ۵ یا True یا False به‌تنهایی خیلی کاربردی نیستند. گاهی اوقات لازم است مجموعه‌ای از مقادیر را در یک متغیر نگهداری کنیم.

در پایتون، این کار را با استفاده از چیزی به نام ساختارهای داده انجام می‌دهیم. اولین ساختاری که بررسی می‌کنیم لیست (List) است.


لیست (List)

اگر بنویسیم:

my_list = []

یعنی یک لیست خالی تعریف کرده‌ایم.

سپس می‌توانیم به این لیست مقادیری اضافه کنیم، مثلاً:

my_list = [1, 2, 3, 4]

این لیست اکنون ۴ مقدار دارد و اگر آن را چاپ کنیم، همان‌طور نمایش داده می‌شود.

لیست‌ها می‌توانند هر نوع داده‌ای را در خود نگه دارند. مثلاً لیستی از رشته‌ها (strings):

["apple", "banana", "cherry"]

یا ترکیبی از عدد، رشته، بولی (True/False):

[42, "hello", False]

حتی می‌توان یک لیست را درون لیست دیگری قرار داد:

[[1, 2], ["a", "b"], [False, True]]

برای به‌دست آوردن تعداد عناصر یک لیست از تابع len() استفاده می‌کنیم:

len(my_list)

اگر my_list شامل سه لیست داخلی باشد، خروجی 3 خواهد بود.


مجموعه (Set)

ساختار بعدی set نام دارد که بسیار شبیه لیست است اما با یک تفاوت مهم:

همه‌ی عناصر یک set باید منحصربه‌فرد باشند.

می‌توانیم set را با آکولاد تعریف کنیم:

my_set = {1, 2, 3, 4, 5}

اگر مقدارهای تکراری اضافه کنیم:

my_set = {1, 1, 1, 2, 2}
print(len(my_set))  # نتیجه: 2

فقط مقادیر غیرتکراری نگهداری می‌شوند.

همچنین ترتیب عناصر در set اهمیتی ندارد:

{1, 2} == {2, 1}  # True

برخلاف لیست‌ها که ترتیب مهم است:

[1, 2] == [2, 1]  # False

تاپل (Tuple)

Tuple شبیه لیست است اما غیرقابل تغییر است؛ یعنی بعد از تعریف، نمی‌توان به آن مقدار جدیدی اضافه کرد یا مقدارهای آن را تغییر داد.

مثال:

my_tuple = (1, 2, 3)

طول آن را با len() می‌گیریم:

len(my_tuple)  # نتیجه: 3

ترتیب عناصر هم در tuple مهم است:

(1, 2) != (2, 1)

برخلاف لیست‌ها، در تاپل نمی‌توانیم append کنیم:

my_tuple.append(4)  # خطا: tuple object has no attribute 'append'

پس چرا از tuple استفاده کنیم؟

چون پایتون می‌داند که tuple تغییر نمی‌کند، دقیقاً به اندازه مورد نیاز حافظه اختصاص می‌دهد. برای ذخیره‌ی تعداد زیادی داده ثابت مثل مختصات‌های (X, Y)، استفاده از tuple حافظه‌کاراتر است.


دیکشنری (Dictionary)

دیکشنری (dict) بسیار متفاوت با ساختارهای قبلی است و به‌شدت کاربردی.

دیکشنری مثل یک واژه‌نامه است. هر کلید (key) به یک مقدار (value) نگاشت شده است:

my_dict = {
    "apple": "a red fruit",
    "bear": "a scary animal"
}

برای دسترسی به مقدار یک کلید:

print(my_dict["apple"])  # خروجی: a red fruit

اگر مقدار جدیدی برای یک کلید مشخص اضافه کنیم:

my_dict["apple"] = "sometimes a green fruit"

مقدار قبلی جایگزین می‌شود.

کلیدها در دیکشنری باید منحصربه‌فرد باشند. مثل set، ترتیب قرارگیری کلیدها اهمیتی ندارد.


جمع‌بندی

در این بخش با ۴ ساختار داده‌ای مهم پایتون آشنا شدی:

ساختارعلامتویژگی‌ها
List[]قابل تغییر، ترتیب‌دار
Set{}بدون تکرار، بدون ترتیب
Tuple()غیرقابل‌تغییر، ترتیب‌دار
Dictionary{key: val}نگاشت کلید به مقدار، بدون ترتیب

در طول مسیر یادگیری پایتون، زیاد با این ساختارها کار خواهی کرد. پس پیشنهاد می‌کنم حتماً خودت با آن‌ها تمرین کنی، امتحان‌شان کن، و ازشان استفاده کن.



عملگرها (Operators)

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

واضح‌ترین نوع عملگر که احتمالاً با آن آشنا هستید،

عملگرهای حسابی (Arithmetic Operators)

هستند. آن‌ها عملیات ریاضی انجام می‌دهند. مثلاً قبلاً با عملگر جمع آشنا شدیم:
1 + 1 = 2.

بیایید چند عملگر ریاضی دیگر که پایتون در اختیار ما می‌گذارد را مرور کنیم:

  • این علامت * عملگر ضرب (multiplication) است. کاملاً مشخص است که اعداد را در هم ضرب می‌کند.
  • این علامت ** عملگر توان (exponentiation) است. مثلاً 5 ** 2 یعنی ۵ به توان ۲، که برابر است با ۲۵.
  • علامت / عملگر تقسیم است. مثلاً 20 / 5 برابر با ۴ می‌شود.
    توجه کنید که نتیجه این عملیات یک مقدار اعشاری (float) برمی‌گرداند نه عدد صحیح (integer).
    دلیلش این است که همیشه حاصل تقسیم عددی کامل نیست، مثلاً 20 / 6 برابر با ۳.۳۳۳… است.

این عملیات ریاضی نسبتاً ساده هستند، ولی یکی از عملگرهایی که بسیار خاص و رایج در برنامه‌نویسی است و باید آن را بشناسیم، عملگر باقیمانده یا مدولوس (modulus) است:

  • 20 % 6 مقدار ۲ را برمی‌گرداند، چون ۲۰ تقسیم بر ۶ برابر با ۱۸ و باقی‌مانده‌اش ۲ است.
    این عملگر در برنامه‌نویسی بسیار کاربرد دارد. من خودم از آن همیشه استفاده می‌کنم و در ویدیوی مخصوص عملگرهای ریاضی بیشتر درباره‌اش صحبت می‌کنیم.

عملیات با رشته‌ها (Strings)

چند عملیات پایه هم می‌توانیم با رشته‌ها انجام دهیم:

  • اتصال رشته‌ها (concatenation):
    مثلاً string1 + string2، که با استفاده از عملگر جمع، دو رشته را به هم می‌چسباند.
  • تکرار رشته‌ها:
    مثلاً string1 * 4، رشته را چهار بار تکرار می‌کند.

توجه داشته باشید که در عملیات جمع رشته‌ها، هر دو طرف باید رشته باشند. یعنی اگر string + 4 را بنویسید، خطا دریافت می‌کنید، چون ترکیب رشته با عدد مجاز نیست.

این نکته را در ذهن داشته باشید چون ترفند مفیدی برای ساخت رشته‌های تکراری است.


سایر عملگرها:

حالا بیایید نگاهی به مجموعه‌ی دیگری از عملگرها بیندازیم:

  1. عملگرهای مقایسه‌ای (Comparison Operators)
  2. عملگرهای منطقی (Logical Operators)
  3. عملگرهای هویتی (Identity Operators)
  4. عملگرهای عضویت (Membership Operators)

اسمشان ممکن است زیاد به نظر برسد، ولی همگی ساده‌اند و لازم نیست دقیقاً به خاطر بسپارید که هر کدام در چه گروهی‌اند.

این عملگرها دو مقدار یا متغیر را بررسی می‌کنند و نتیجه‌ای بولی (Boolean) برمی‌گردانند: True یا False.


عملگرهای مقایسه‌ای:

  • == بررسی برابری: True == True → True
  • < کوچکتر بودن: 4 < 5 → True
  • <= کوچکتر یا مساوی: 5 <= 5 → True
  • > بزرگتر بودن: 5 > 2 → True
  • >= بزرگتر یا مساوی: 5 >= 2 → True

عملگرهای منطقی:

این‌ها کلمات انگلیسی ساده‌ای هستند و روی مقادیر بولی کار می‌کنند:

  • and: هر دو طرف باید True باشند.
    مثال: True and True → True، ولی True and False → False
  • or: اگر یکی از طرفین True باشد، نتیجه True است.
    مثال: True or False → True، ولی False or False → False
  • not: فقط روی یک مقدار کار می‌کند و مقدار بولی را برعکس می‌کند.
    مثال: not True → False، not False → True

عملگرهای عضویت:

این‌ها هم کلمات انگلیسی ساده‌ای هستند:

  • in: بررسی می‌کند که آیا یک عنصر داخل لیست یا رشته وجود دارد یا نه.
    مثال: 1 in [1, 2, 3, 4, 5] → True
    10 in [1, 2, 3, 4, 5] → False
  • not in: برعکس in است.
    مثال: 10 not in [1, 2, 3, 4, 5] → True

همین کار را با رشته‌ها هم می‌توان انجام داد:

  • cat' in "my pet cat" True
    ولی ‘cat’ in “catatonic” هم True است چون cat در آن وجود دارد.
    بنابراین هنگام بررسی رشته‌ها باید دقت کنید.

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


اگر خواستی می‌تونیم تمرین‌هایی برای عملگرها هم با هم کار کنیم ✅