Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 11 additions & 14 deletions course/module-0/intro-community/article.md
Original file line number Diff line number Diff line change
@@ -1,22 +1,19 @@
# Community

We understand that communication is a very important part of the educational process, so we offer to join our community, where
you can get help and support from other students or suggest yourself in case of questions from other members of the community.
---
meta:
title: "Python Academy Community"
description: "The Python Academy chat and channel on Telegram: where to ask when you get stuck, and where to write about service or payment problems."
---

Communication is organized through:

- **[community on Telegram](https://telegram.me/pythonacademyofficial)**
# Community

On the community page, we post information on the latest and most important updates.
Getting stuck on your own is easy: the code doesn't work, the error message explains nothing, and there's no one to ask. That's exactly what the **<a href="https://telegram.me/pythonacademychat" target="_blank">chat on Telegram</a>** is for — it has both people taking the course right now and people who finished it a while ago.

There are **[Telegram](https://telegram.me/pythonacademychat)** chat for communication between participants.
There's no shame in asking. Answering is just as useful, by the way: explaining someone else's error is what finally settles the topic in your own head.

## Problem solving
If you'd rather skip the conversation and just follow the course, there's the **<a href="https://telegram.me/pythonacademyofficial" target="_blank">channel on Telegram</a>**. It carries important updates and material on Python, data analytics and backend development — including how to use them to find a job or get a promotion.

For questions that arise during the operation of the service, comments and recommendations on the content of the course, or if there are problems with paying for a premium account, you can use
the following communication methods:
## When something breaks

- Write a letter to
**[feedback@python-academy.org](mailto:feedback@python-academy.org)**
The chat is good for questions about code. But if you've hit a bug in the service itself, want to correct us on the course content, or have trouble paying for premium — write to **[feedback@python-academy.org](mailto:feedback@python-academy.org)**.

We are glad to see you in our community 😍
49 changes: 31 additions & 18 deletions course/module-0/intro-intro/article.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,18 @@
---
meta:
title: "Introduction to the Python course"
description: "Free online Python course: how the course, trainer and sandbox fit together, which devices to learn on, and what a premium account is for."
---

# About the course

This course, aimed at learning Python, is designed differently than most other courses.
We will not try to learn all possible Python libraries, instead we will focus our attention on the principles of programming and
on the foundation of Python fundamentals that will allow you to build any application.
You can watch ten hours of Python videos, nod along, and still not write a single line yourself. That feeling of "it all made sense in the lecture, but I can't sit down and do it" comes from exactly there.

This course is built the other way around. We don't try to march through every Python library — instead we work out how the language itself is put together, and write code right there in the article. You'll pick up whatever library you need in an evening, provided you understand the foundation. It doesn't work in the other direction.

To achieve this goal, the course is equipped with a large number of exercises that should help build the very necessary connections in our brain, so that in the future you do not have
to think much when writing Python code for your applications.
So there will be a lot of exercises ahead. They aren't box-ticking: the connections you need only form when you fight an error yourself, rather than reading someone else's finished solution. And if something drags — that's a normal part of the process, not a sign that "programming isn't for you".

During the course, we strongly recommend that you cultivate a "growth mindset": if you encounter any difficulties trying
to understand a new topic or doing exercises, try to transform the frustrating experience into a productive one.
And the most important thing in this course is **have fun!**
And the most important thing — **have fun!**

## Take the course publicly

Expand All @@ -19,28 +22,38 @@ You can use the hashtag `#python-academy` if you want.

## Device support

This course is designed to pass from a computer and laptop - the most optimal devices for writing Python code. The course can also be taken from a tablet or from a phone,
but some functionality may not be available or work incorrectly. Please treat this with understanding.
The course expects a computer or a laptop — writing code is simply easier with a keyboard. You can also work from a tablet or a phone,
but some of the functionality will be unavailable or won't behave as intended. Please treat this with understanding.

## How our site is organized

![How our site is organized](https://python-academy.org/static/guidePage/intro-intro/connections.webp 'How our site is organized')
![How our site is organized](https://python-academy.org/static/guidePage/intro-intro/sections-en.webp "How our site is organized")

There are 3 main sections on our resource, each of which will be useful in different ways:

- **[Course](/guide)** - is your step-by-step assistant when learning Python. It presents consistent, structured materials, as well as related exercises to consolidate knowledge.
- **[Trainer](/trainer)** the simulator is a tool to test your knowledge. The tasks in it are ranked by difficulty, so you can choose the ones that are suitable for your current level.
Also, solving tasks from the simulator is necessary to obtain a certificate confirming knowledge in Python programming.
- **[Sandbox](/sandbox)** - is a space for free experimentation with Python code and trying out concepts you've learned.
- **<a href="https://python-academy.org/en/guide" target="_blank"> Course </a>** - is your step-by-step assistant when learning Python. It presents consistent, structured materials, as well as related exercises to consolidate knowledge.
- **<a href="https://python-academy.org/en/trainer" target="_blank">Simulator</a>** - is a tool to test your knowledge. The tasks in it are ranked by difficulty, so you can choose the ones that are suitable for your current level.
Also, solving tasks from the simulator is necessary to obtain a certificate confirming knowledge in Python programming.
- **<a href="https://python-academy.org/en/sandbox" target="_blank">Sandbox </a>** - is a space for free experimentation with Python code and trying out concepts you've learned.

## Premium account

The purchase of [premium account](/premium) is an optional part, we provide the course for everyone absolutely free of charge. But it opens up more opportunities for you
to study more productively, access to tasks from real interviews at top companies and gives you the opportunity to get a certificate. In addition, this is a great opportunity to support us in the development of this service.
The basic course, trainer and sandbox are free. A <a href="https://python-academy.org/en/premium" target="_blank">premium account</a> is an optional addition for those who want to go deeper and use everything the platform has to offer.

With a premium account you get:

- access to reference solutions for trainer tasks;
- the advanced courses "Backend on FastAPI from scratch" and "Product analytics with Python";
- extended access to the AI assistant and tasks from interviews at top companies;
- the ability to issue personalised certificates.

Premium lasts 6 months from the date of payment. All the progress you made before the purchase is kept and still counts towards your certificates. Once premium expires, the account becomes free again, while your progress and any certificates you have already issued stay with you.

By buying a premium account you also support the development of Python Academy and help us create new learning materials and features.

## Progress and certificate acquisition

If you are logged in, you can see the progress bar in the **[trainer](/trainer)** section.
If you are logged in, you can see the progress bar in the **<a href="https://python-academy.org/en/trainer" target="_blank">trainer</a>** section.

![Progress bar before receiving a certificate](https://python-academy.org/static/guidePage/intro-intro/progress_bar_en.jpg)

Expand Down
49 changes: 31 additions & 18 deletions course/module-0/intro-structure-of-course/article.md
Original file line number Diff line number Diff line change
@@ -1,34 +1,47 @@
# Course structure

This course is divided into 3 modules, not counting the introduction module. Each module can be considered as a mini-course,
which aims to study a certain group of knowledge in the field of Python.
---
meta:
title: "Course structure"
description: "What the Python course is made of: three modules, from variables to async. How executable code blocks and self-testing tasks work."
---

Although the modules can be completed independently of each other, we still recommend taking the course in order.
# Course structure

At the end of most practical topics there is a block "Tasks for self-testing" so that you can immediately practice using
new knowledge.
The course is three modules, not counting the introduction you are reading right now. Each module works like a mini-course: it takes its own group of topics and sees them through.

## Interfaces
- **Fundamentals of Python I** — variables, data types, functions, conditions, loops and collections. The things every Python program is built from.
- **Fundamentals of Python II** — libraries and modules, working with files, classes and objects, exceptions, decorators, dates.
- **Advanced Python** — databases, testing, threading and async.

During the course of this course, you will meet possibly non-standard components, so it is described below how to interact with them.
The order is not arbitrary: each module stands on the one before it. In the second you will write functions and loop over lists from the first, and the third does not hold together without them. If the basics are already familiar, skim what you know — but don't start in the middle.

### Block of executable code
## The code block

Perhaps the most popular component will be the executable code block, it looks like this:
Almost every article has a code block in it. It looks like this:

```python-executable
```python
print("Hi, I love Python 😊")

<output>
Hi, I love Python 😊
</output>
```

If it has an active blue button, then this code can be executed. When you click on the request execution button, the code will open in a new tab in the sandbox.
The line marked with `>_` is not code any more — it's the result: what Python printed after running the line above. So read the block top to bottom: first what we asked for, then what came back.

Four icons live in the top right of the block:

![Executable code block](https://python-academy.org/static/guidePage/intro-structure-of-course/code-block-en.webp "Executable code block")

The ▶ icon isn't on every block — only on the ones whose code can be run. It opens the code in the **<a href="https://python-academy.org/en/sandbox" target="_blank">sandbox</a>**: a separate tab where you can change it and run it as many times as you like.

One detail about ▶: it sends only its own block to the sandbox, nothing more. So every example is self-contained — everything the code needs is declared right in it, and you can run the blocks in any order.

![Description of the block with executable code](https://python-academy.org/static/guidePage/intro-structure-of-course/en_codeplayground_description.png 'Description of the block with executable code')
## Self-testing tasks

### Self-testing tasks
Not in every article, but in many — especially in "Fundamentals of Python I" — a block of tasks waits at the end:

It is strongly recommended not to skip the tasks at the end of each article, they look like this:
![Self-testing tasks](https://python-academy.org/static/guidePage/intro-structure-of-course/en_exercises_description.png "Self-testing tasks")

![Description of self-test tasks](https://python-academy.org/static/guidePage/intro-structure-of-course/en_exercises_description.png 'Description of self-test tasks')
Don't skip them. Reading about a loop and writing a loop are different things, and you only find out which is which at the keyboard 🎓.

It is recommended to solve problems while logged in, so all your solutions will be saved.
Log in before you start, otherwise your solutions won't be saved.
123 changes: 55 additions & 68 deletions course/module-0/python-installation/article.md
Original file line number Diff line number Diff line change
@@ -1,120 +1,107 @@
# Installing Python

For this course, installing Python locally is optional: all suggested tasks run on our servers, and any custom Python code can be executed in the **[Sandbox](/sandbox)**.
---
meta:
title: "Installing Python"
description: "How to install Python 3 on Windows, macOS or Linux: a step-by-step guide, the Add to PATH checkbox, and checking that it all works."
---

If you still want to run code locally, here is a short installation guide.

In this quick guide you will install the latest Python 3 for your system and verify everything works. Let’s go! 🚀
# Installing Python

## Step 1. Check if Python is already installed
You don't have to install Python for this course: the tasks run on our servers, and any code can be executed in the **<a href="https://python-academy.org/en/sandbox" target="_blank">Sandbox</a>**. So if you're itching to start — skip ahead, this chapter isn't going anywhere.

Open your terminal/console and check the version commands.
But sooner or later you'll want to write code on your own machine: your files, your projects, no browser tab involved. Come back here then — below is the short path from "nothing installed" to "it works" 🚀.

- **Windows (PowerShell or CMD):**
## Step 1. Check whether Python is already there

```bash
python --version
py --version
pip --version
```
Python may have shipped with your system or been installed earlier — on macOS and Linux it's there almost always. We'll check in the terminal: the window where you type commands as text instead of clicking.

- **macOS / Linux (Terminal):**
- **Windows** — press `Win`, type "PowerShell" and open it.
- **macOS** — press `Cmd + Space`, type "Terminal" and open it.
- **Linux** — usually `Ctrl + Alt + T`.

```bash
python3 --version
pip3 --version
```
Type the command and press `Enter`:

If you see a version (e.g., `Python 3.12.x`), Python is already installed. If commands are not found — proceed to installation.
**macOS / Linux**

## Windows installation
```sh
python3 --version
```

1. Download the official installer: **[python.org → Downloads → Windows](https://www.python.org/downloads/windows/)**.
2. Run the installer.
3. On the first screen, tick **“Add python.exe to PATH”** (important!) and click **Install Now**.
4. Wait for completion and close the installer.
5. Verify in PowerShell/CMD:
**Windows**

```bash
py --version
```powershell
python --version
pip --version
```

If `python` is not found, try `py`, or sign out/in. Reboot if necessary.
If a version number comes back — say, `Python 3.12.4` — it's already in place and you can skip step 2. Any version starting with a 3 will do.

## macOS installation
A "command not found" answer is fine too: it just means Python isn't installed yet. Let's move on.

Two convenient options — pick one.
## Step 2. Install Python

### Option A: Official installer
### Windows

1. Download from **[python.org → Downloads → macOS](https://www.python.org/downloads/macos/)**.
2. Open the `.pkg` and follow the installer.
3. Verify versions:
1. Open **<a href="https://www.python.org/downloads/windows/" target="_blank">python.org → Downloads → Windows</a>** and download the installer.
2. Run it.
3. On the very first screen tick **"Add python.exe to PATH"** — and only then click **Install Now**.
4. Wait for it to finish and close the installer.

```bash
python3 --version
pip3 --version
```
That checkbox deserves a word of its own, because it's easy to miss and the consequences are annoying. PATH is the list of folders your system searches for programs when you type a command. Without the tick, Python installs but the system never learns about it: you type `python` and get "command not found" back. Ticking it takes a second; hunting down the reason afterwards can take half an hour.

### Option B: Homebrew
If you did miss it, the easiest fix is to run the installer again and choose **Modify**.

1. Make sure Homebrew is installed (`brew -v`). If not, follow **[brew.sh](https://brew.sh/)**.
2. Install Python:
### macOS

```bash
brew install python
```
The first way, with no extra tooling: download the installer from **<a href="https://www.python.org/downloads/macos/" target="_blank">python.org → Downloads → macOS</a>**, open the `.pkg` and follow the steps.

3. Verify versions:
The second way is **<a href="https://brew.sh/" target="_blank">Homebrew</a>**, if you already have it (check with `brew -v`):

```bash
python3 --version
pip3 --version
brew install python
```

Note: on macOS, the `python3` command (not `python`) is standard — this is expected.
### Linux

## Linux installation
The command depends on your distribution:

Open Terminal and run commands for your distribution.

- **Ubuntu / Debian:**
- **Ubuntu / Debian:**

```bash
sudo apt update
sudo apt install -y python3 python3-pip
```

- **Fedora:**
- **Fedora:**

```bash
sudo dnf install -y python3 python3-pip
```

- **Arch Linux:**
- **Arch Linux:**

```bash
sudo pacman -S python python-pip
```

Verify versions:
## Step 3. Check that it works

```bash
Close the terminal and open it again — it needs to learn about the new program. Now the same command as in step 1:

**macOS / Linux**

```sh
python3 --version
pip3 --version
```

## FAQ
**Windows**

- **`python` command not found.** On Windows try `py`. On macOS/Linux use `python3` and `pip3` — that’s normal.
- **Upgrade `pip`:**
```powershell
python --version
```

```bash
python -m pip install --upgrade pip
# or
python3 -m pip install --upgrade pip
```
A version number in reply means you're done, Python is yours.

If Windows still says "command not found", try `py --version`. If that doesn't help, it's almost certainly the PATH checkbox: run the installer again and choose **Modify**. Sometimes simply logging out and back in is enough.

On macOS and Linux the command is `python3`, not `python` — that's not a fault but the norm: the short name `python` is historically taken there.

Good luck with learning Python! ✨
Good luck! ✨
Loading