Skip to content

Instantly share code, notes, and snippets.

@jordanorelli
Created September 9, 2015 02:05
Show Gist options
  • Save jordanorelli/fb9968f46b7b1283f953 to your computer and use it in GitHub Desktop.
Save jordanorelli/fb9968f46b7b1283f953 to your computer and use it in GitHub Desktop.
diff --git a/ru/deploy/README.md b/ru/deploy/README.md
index e77647e..1ed041c 100755
--- a/ru/deploy/README.md
+++ b/ru/deploy/README.md
@@ -262,19 +262,20 @@ Django использует протокол WSGI, стандартный про
Удали все содержимое и замени их с чем-то вроде этого:
- python
- import os
- import sys
-
- path = '/home/<your-username>/my-first-blog' # use your own username here
- if path not in sys.path:
- sys.path.append(path)
-
- os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
-
- from django.core.wsgi import get_wsgi_application
- from whitenoise.django import DjangoWhiteNoise
- application = DjangoWhiteNoise(get_wsgi_application())
+```python
+import os
+import sys
+
+path = '/home/<your-username>/my-first-blog' # use your own username here
+if path not in sys.path:
+ sys.path.append(path)
+
+os.environ['DJANGO_SETTINGS_MODULE'] = 'mysite.settings'
+
+from django.core.wsgi import get_wsgi_application
+from whitenoise.django import DjangoWhiteNoise
+application = DjangoWhiteNoise(get_wsgi_application())
+```
> **Примечание**: не забудь заменить имя пользователя на свое там, где это указано `<your-username>`
@@ -309,4 +310,4 @@ Django использует протокол WSGI, стандартный про
Стандартная страница твоего сайта должна включать приветствие "Welcome to Django", точно также как было на локальном компьютере. Попробуй добавить `/admin/` к концу адреса сайта и перейдешь к панели администратора сайта. Войди под своим именем и паролем и увидишь форму для добавления новых записей в блог.
-Ты заслужила *огромную* похвалу! Развертывание сервера — одна из самых каверзных частей веб-разработки, и не редко уходит несколько дней, прежде чем заставишь всё работать. А у нас уже есть работающий в сети веб-сайт, вот так вот!
\ No newline at end of file
+Ты заслужила *огромную* похвалу! Развертывание сервера — одна из самых каверзных частей веб-разработки, и не редко уходит несколько дней, прежде чем заставишь всё работать. А у нас уже есть работающий в сети веб-сайт, вот так вот!
diff --git a/ru/django_admin/README.md b/ru/django_admin/README.md
index addc7f2..0a13a0c 100755
--- a/ru/django_admin/README.md
+++ b/ru/django_admin/README.md
@@ -4,11 +4,12 @@
Давай откроем файл `blog/admin.py` и заменим его содержимое на:
- python
- from django.contrib import admin
- from .models import Post
-
- admin.site.register(Post)
+```python
+from django.contrib import admin
+from .models import Post
+
+admin.site.register(Post)
+```
Как ты можешь заметить, мы импортировали (включили) модель Post, которая была определена в предыдущей главе. Чтобы наша модель стала доступна на странице администрирования, нам нужно зарегистрировать её при помощи `admin.site.register(Post)`.
@@ -45,4 +46,4 @@
Если ты хочешь узнать больше об администрировании Django, то ознакомься с этим разделом официальной документации: https://docs.djangoproject.com/en/1.8/ref/contrib/admin/
-Сейчас, вероятно, подходящий момент, чтобы порадовать себя кружечкой кофе (или чая), а также съесть чего-нибудь для пополнения энергии. Ты только что создала свою первую Django модель и заслужила перерыв!
\ No newline at end of file
+Сейчас, вероятно, подходящий момент, чтобы порадовать себя кружечкой кофе (или чая), а также съесть чего-нибудь для пополнения энергии. Ты только что создала свою первую Django модель и заслужила перерыв!
diff --git a/ru/django_models/README.md b/ru/django_models/README.md
index 11f5326..59257b7 100755
--- a/ru/django_models/README.md
+++ b/ru/django_models/README.md
@@ -87,16 +87,17 @@
После того как приложение создано, нам нужно сообщить Django, что теперь он должен его использовать. Мы сделаем это через файл `mysite/settings.py`. Нам нужно найти `INSTALLED_APPS` и добавить к списку `'blog',` прямо перед `)`. Конечный результат должен выглядеть следующим образом:
- python
- INSTALLED_APPS = (
- 'django.contrib.admin',
- 'django.contrib.auth',
- 'django.contrib.contenttypes',
- 'django.contrib.sessions',
- 'django.contrib.messages',
- 'django.contrib.staticfiles',
- 'blog',
- )
+```python
+INSTALLED_APPS = (
+ 'django.contrib.admin',
+ 'django.contrib.auth',
+ 'django.contrib.contenttypes',
+ 'django.contrib.sessions',
+ 'django.contrib.messages',
+ 'django.contrib.staticfiles',
+ 'blog',
+)
+```
### Создание модели записи в блоге
@@ -105,26 +106,27 @@
Открой файл `blog/models.py`, удали весь текст и вставь на его место следующий код:
- python
- from django.db import models
- from django.utils import timezone
-
-
- class Post(models.Model):
- author = models.ForeignKey('auth.User')
- title = models.CharField(max_length=200)
- text = models.TextField()
- created_date = models.DateTimeField(
- default=timezone.now)
- published_date = models.DateTimeField(
- blank=True, null=True)
-
- def publish(self):
- self.published_date = timezone.now()
- self.save()
-
- def __str__(self):
- return self.title
+```python
+from django.db import models
+from django.utils import timezone
+
+
+class Post(models.Model):
+ author = models.ForeignKey('auth.User')
+ title = models.CharField(max_length=200)
+ text = models.TextField()
+ created_date = models.DateTimeField(
+ default=timezone.now)
+ published_date = models.DateTimeField(
+ blank=True, null=True)
+
+ def publish(self):
+ self.published_date = timezone.now()
+ self.save()
+
+ def __str__(self):
+ return self.title
+```
> Убедись, что использовала два символа нижнего подчеркивания (`_`) с обоих сторон от метода `str`. Это соглашение часто используется при программировании на Python, и иногда его называют "dunder" (сокращение от англ. "double-underscore").
@@ -174,4 +176,4 @@ Django создал для нас файл с миграцией для базы
Applying blog.0001_initial... OK
-Ура! Модель записи для блога теперь в базе данных, было бы неплохо посмотреть на неё, верно? Тогда переходи к следующей главе!
\ No newline at end of file
+Ура! Модель записи для блога теперь в базе данных, было бы неплохо посмотреть на неё, верно? Тогда переходи к следующей главе!
diff --git a/ru/django_start_project/README.md b/ru/django_start_project/README.md
index 3cafc01..3098522 100755
--- a/ru/django_start_project/README.md
+++ b/ru/django_start_project/README.md
@@ -57,17 +57,19 @@
В файле settings.py найди строку, содержащую `TIME_ZONE`, и модифицируй её в соответствии со своим часовым поясом:
- python
- TIME_ZONE = 'Europe/Moscow'
+```python
+TIME_ZONE = 'Europe/Moscow'
+```
Замени "Europe/Moscow" на соответствующий часовой пояс
Нам также необходимо добавить в настройки информацию о расположении статических файлов (мы познакомимся со статичными файлами и CSS в следующих главах). Спустись в *конец* файла и после переменной `STATIC_URL` добавь новую - `STATIC_ROOT`:
- python
- STATIC_URL = '/static/'
- STATIC_ROOT = os.path.join(BASE_DIR, 'static')
+```python
+STATIC_URL = '/static/'
+STATIC_ROOT = os.path.join(BASE_DIR, 'static')
+```
## Настройка базы данных
@@ -76,13 +78,14 @@
Она уже выбрана по умолчанию в файле `mysite/settings.py`:
- python
- DATABASES = {
- 'default': {
- 'ENGINE': 'django.db.backends.sqlite3',
- 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
- }
+```python
+DATABASES = {
+ 'default': {
+ 'ENGINE': 'django.db.backends.sqlite3',
+ 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
+}
+```
Чтобы создать базу данных для нашего блога, набери в командной строке следующее: `python manage.py migrate` (мы должны быть в директории `djangogirls`, где расположен файл `manage.py`). Если все прошло успешно, то ты увидишь следующий результат:
@@ -134,4 +137,4 @@
[3]: images/it_worked2.png
-Готова к следующему шагу? Пришло время создать наполнение для нашего блога!
\ No newline at end of file
+Готова к следующему шагу? Пришло время создать наполнение для нашего блога!
diff --git a/ru/django_urls/README.md b/ru/django_urls/README.md
index a09f1b9..cf7b7f7 100755
--- a/ru/django_urls/README.md
+++ b/ru/django_urls/README.md
@@ -16,17 +16,18 @@ URL — это просто адрес в интернете. Ты можешь
Давай откроем файл `mysite/urls.py` в нашем редакторе и посмотрим, как он выглядит:
- python
- from django.conf.urls import include, url
- from django.contrib import admin
-
- urlpatterns = [
- # Examples:
- # url(r'^$', 'mysite.views.home', name='home'),
- # url(r'^blog/', include('blog.urls')),
-
- url(r'^admin/', include(admin.site.urls)),
- ]
+```python
+from django.conf.urls import include, url
+from django.contrib import admin
+
+urlpatterns = [
+ # Examples:
+ # url(r'^$', 'mysite.views.home', name='home'),
+ # url(r'^blog/', include('blog.urls')),
+
+ url(r'^admin/', include(admin.site.urls)),
+]
+```
Как можешь заметить, Django уже кое-что разместил здесь для нас.
@@ -35,8 +36,9 @@ URL — это просто адрес в интернете. Ты можешь
URL-адрес администрирования, который мы посещали в предыдущей главе, уже здесь присутствует:
- python
- url(r'^admin/', include(admin.site.urls)),
+```python
+ url(r'^admin/', include(admin.site.urls)),
+```
Таким образом, любому URL-адресу, начинающемуся с `admin/`, Django будет находить соответствующее *view* (представление). В этом случае мы охватываем большое множество различных URL-адресов, которые явно не прописаны в этом маленьком файле -- так он становится более аккуратным и удобочитаемым.
@@ -75,14 +77,15 @@ URL-адрес администрирования, который мы посе
Файл `mysite/urls.py` должен выглядеть следующим образом:
- python
- from django.conf.urls import include, url
- from django.contrib import admin
-
- urlpatterns = [
- url(r'^admin/', include(admin.site.urls)),
- url(r'', include('blog.urls')),
- ]
+```python
+from django.conf.urls import include, url
+from django.contrib import admin
+
+urlpatterns = [
+ url(r'^admin/', include(admin.site.urls)),
+ url(r'', include('blog.urls')),
+]
+```
Django теперь будет перенаправлять все запросы 'http://127.0.0.1:8000/' к `blog.urls` и искать там дальнейшие инструкции.
@@ -93,19 +96,21 @@ Django теперь будет перенаправлять все запрос
Создай новый пустой файл `blog/urls.py`. Отлично! Добавь в него следующие две строки:
- python
- from django.conf.urls import url
- from . import views
+```python
+from django.conf.urls import url
+from . import views
+```
Так мы импортировали все методы Django и все `views` (представления) из приложения `blog` (у нас их пока нет, но через минуту они появятся!)
После этого мы можем добавить наш первый URL-шаблон:
- python
- urlpatterns = [
- url(r'^$', views.post_list, name='post_list'),
- ]
+```python
+urlpatterns = [
+ url(r'^$', views.post_list, name='post_list'),
+]
+```
Как ты можешь заметить, мы связали `view` под именем `post_list` с URL-адресом `^$`. Это регулярное выражение будет соответствовать `^` (началу) и следующему `$` (концу), т.е. пустой строке. Это правильно, потому что для обработчиков URL в Django 'http://127.0.0.1:8000/' не является частью URL. Этот шаблон скажет Django, что `views.post_list` — это правильное направление для запроса к твоему веб-сайту по адресу 'http://127.0.0.1:8000/'.
@@ -122,4 +127,4 @@ Django теперь будет перенаправлять все запрос
Ты можешь прочесть, что не существует атрибута с именем 'post_list' -- **no attribute 'post_list'**. Не напоминает ли *post_list* тебе что-нибудь? Так мы назвали свое представление! Это значит, что всё на месте, просто мы ещё не создали наше *представление*. Не беспокойся, мы этим займемся.
-> Если хочешь узнать больше о Django URLconfs, посмотри официальную документацию: https://docs.djangoproject.com/en/1.8/topics/http/urls/
\ No newline at end of file
+> Если хочешь узнать больше о Django URLconfs, посмотри официальную документацию: https://docs.djangoproject.com/en/1.8/topics/http/urls/
diff --git a/ru/django_views/README.md b/ru/django_views/README.md
index 0097ce1..6363a32 100755
--- a/ru/django_views/README.md
+++ b/ru/django_views/README.md
@@ -10,17 +10,19 @@
Хорошо, давай откроем этот файл и посмотрим на его содержимое:
- python
- from django.shortcuts import render
-
- # Create your views here.
+```python
+from django.shortcuts import render
+
+# Create your views here.
+```
Не слишком много кода. Простейшее *представление* может выглядеть следующим образом.
- python
- def post_list(request):
- return render(request, 'blog/post_list.html', {})
+```python
+def post_list(request):
+ return render(request, 'blog/post_list.html', {})
+```
Как ты можешь заметить, мы создали метод (`def`) с именем `post_list`, который принимает в `request` в качестве аргумента и `return` (возвращает) результат работы метода `render`, который соберет наш шаблон страницы `blog/post_list.html`.
@@ -35,4 +37,4 @@
Это просто: *TemplateDoesNotExist* -- такого шаблона не существует. Давай исправим ошибку и создадим шаблон в следующей главе!
-> Подробнее о представлениях в Django можно узнать из официальной документации: https://docs.djangoproject.com/en/1.8/topics/http/views/
\ No newline at end of file
+> Подробнее о представлениях в Django можно узнать из официальной документации: https://docs.djangoproject.com/en/1.8/topics/http/views/
diff --git a/ru/dynamic_data_in_templates/README.md b/ru/dynamic_data_in_templates/README.md
index d3e9394..b9083a8 100755
--- a/ru/dynamic_data_in_templates/README.md
+++ b/ru/dynamic_data_in_templates/README.md
@@ -8,18 +8,20 @@
Нам нужно открыть файл `blog/views.py`. Таким образом *представление* `post_list` будет выглядеть следующим образом:
- python
- from django.shortcuts import render
-
- def post_list(request):
- return render(request, 'blog/post_list.html', {})
+```python
+from django.shortcuts import render
+
+def post_list(request):
+ return render(request, 'blog/post_list.html', {})
+```
Помнишь мы говорили о включении кода из других файлов? Теперь нам нужно включить модель, которую мы определили в файле `models.py`. Мы добавим строку `from .models import Post` следующим образом:
- python
- from django.shortcuts import render
- from .models import Post
+```python
+from django.shortcuts import render
+from .models import Post
+```
Точка перед `from` означает *текущую директорию* или *текущее приложение*. Поскольку `views.py` и `models.py` находятся в одной директории, мы можем использовать точку `.` и имя файла (без расширения `.py`). Затем мы импортируем модель (`Post`).
@@ -39,14 +41,15 @@
Теперь нам нужно включить эту строку кода в файл`blog/views.py`, добавив её в функцию `def post_list(request)`:
- python
- from django.shortcuts import render
- from django.utils import timezone
- from .models import Post
-
- def post_list(request):
- posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
- return render(request, 'blog/post_list.html', {})
+```python
+from django.shortcuts import render
+from django.utils import timezone
+from .models import Post
+
+def post_list(request):
+ posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
+ return render(request, 'blog/post_list.html', {})
+```
Пожалуйста, обрати внимание, что мы создали *переменную* для QuerySet: `posts`. Можешь думать о неё как об имени для нашего QuerySet. Теперь мы можем обращаться к нему, используя имя.
@@ -59,16 +62,17 @@
В результате файл `blog/views.py` должен выглядеть следующим образом:
- python
- from django.shortcuts import render
- from django.utils import timezone
- from .models import Post
-
- def post_list(request):
- posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
- return render(request, 'blog/post_list.html', {'posts': posts})
+```python
+from django.shortcuts import render
+from django.utils import timezone
+from .models import Post
+
+def post_list(request):
+ posts = Post.objects.filter(published_date__lte=timezone.now()).order_by('published_date')
+ return render(request, 'blog/post_list.html', {'posts': posts})
+```
Вот и все! Теперь пришло время перейти к шаблону и отобразить QuerySet на странице!
-Подробнее о QuerySets в Django можно узнать в официальной документации: https://docs.djangoproject.com/en/1.8/ref/models/querysets/
\ No newline at end of file
+Подробнее о QuerySets в Django можно узнать в официальной документации: https://docs.djangoproject.com/en/1.8/ref/models/querysets/
diff --git a/ru/python_introduction/README.md b/ru/python_introduction/README.md
index 6fbcd93..8c35bfb 100755
--- a/ru/python_introduction/README.md
+++ b/ru/python_introduction/README.md
@@ -462,8 +462,9 @@ OK, достаточно о строках. Пока ты узнала о:
[2]: ../code_editor/README.md
- python
- print('Hello, Django girls!')
+```python
+print('Hello, Django girls!')
+```
> **Примечание** Ты должна уде была заметить одну из крутейших вещей в редакторах кода: цвета! В интерактивной консоли Python весь текст был одного цвета, сейчас же функция `print` должна отличаться по цвету от текста, который передается в неё в качестве атрибута. Это называется «синтаксическая подсветка», и это действительно удобная штука для программирования. Цвет подсветки может подсказать тебе о незакрытой кавчке или опечатке в ключевом слове (таком как `def` в определении функции, с которым мы скоро познакомимся). Это одна из причин, по которой мы используем редакторы кода :)
@@ -507,8 +508,9 @@ OK, достаточно о строках. Пока ты узнала о:
Замени код в своем файле **python_intro.py** на:
- python
- if 3 > 2:
+```python
+if 3 > 2:
+```
Если мы сохраним его и запустим, то получим ошибку:
@@ -521,9 +523,10 @@ OK, достаточно о строках. Пока ты узнала о:
Python предполагает, что мы должны дать ему инструкции, которые будут им выполнены при соблюдении условия `3 > 2` (т. е. при равенстве условия логическому значению `True`). Давай попробуем заставить Python напечатать на экране “It works!”. Внеси следующие изменения в **python_intro.py**:
- python
- if 3 > 2:
- print('It works!')
+```python
+if 3 > 2:
+ print('It works!')
+```
Обратила внимание как мы сделали отступ во второй строке из 4 символов пробела? Мы поступаем так, чтобы Python понимал какой код после условного оператора if должен быть выполнен, если условие равно True. Можно ограничиться и одним пробелом, однако, практически все программисты Python используют 4, чтобы код выглядел аккуратно и читабельно. Каждая `табуляция` также считается за 4 пробела.
@@ -538,11 +541,12 @@ Python предполагает, что мы должны дать ему инс
В предыдущем пример код выполнялся только когда условие равнялось True. Однако, Python имеет операторы `elif` и `else`:
- python
- if 5 > 2:
- print('5 is indeed greater than 2')
- else:
- print('5 is not greater than 2')
+```python
+if 5 > 2:
+ print('5 is indeed greater than 2')
+else:
+ print('5 is not greater than 2')
+```
Если запустить этот код, он напечатает:
@@ -553,14 +557,15 @@ Python предполагает, что мы должны дать ему инс
Если 2 больше 5, то будет выполнена следующая команда. Просто, правда? Давай посмотрим как работает оператор `elif`:
- python
- name = 'Sonja'
- if name == 'Ola':
- print('Hey Ola!')
- elif name == 'Sonja':
- print('Hey Sonja!')
- else:
- print('Hey anonymous!')
+```python
+name = 'Sonja'
+if name == 'Ola':
+ print('Hey Ola!')
+elif name == 'Sonja':
+ print('Hey Sonja!')
+else:
+ print('Hey anonymous!')
+```
и запускаем:
@@ -573,20 +578,21 @@ Python предполагает, что мы должны дать ему инс
Можно использовать сколько угодно `elif` после первого `if`. Например:
- python
- volume = 57
- if volume < 20:
- print("It's kinda quiet.")
- elif 20 <= volume < 40:
- print("It's nice for background music")
- elif 40 <= volume < 60:
- print("Perfect, I can hear all the details")
- elif 60 <= volume < 80:
- print("Nice for parties")
- elif 80 <= volume < 100:
- print("A bit loud!")
- else:
- print("My ears are hurting! :(")
+```python
+volume = 57
+if volume < 20:
+ print("It's kinda quiet.")
+elif 20 <= volume < 40:
+ print("It's nice for background music")
+elif 40 <= volume < 60:
+ print("Perfect, I can hear all the details")
+elif 60 <= volume < 80:
+ print("Nice for parties")
+elif 80 <= volume < 100:
+ print("A bit loud!")
+else:
+ print("My ears are hurting! :(")
+```
Python проходит через каждую проверку условия и выводит:
@@ -612,12 +618,13 @@ Python проходит через каждую проверку условия
Функция - это последовательность инструкций, которые должен выполнить Python. Каждая функция в Python начинается с ключевого слова `def`, имеет свое имя и параметры. Давай начнем с простого примера. Замени код в **python_intro.py** на следующий:
- python
- def hi():
- print('Hi there!')
- print('How are you?')
-
- hi()
+```python
+def hi():
+ print('Hi there!')
+ print('How are you?')
+
+hi()
+```
Отлично, наша первая функция готова!
@@ -633,22 +640,24 @@ Python проходит через каждую проверку условия
Это было просто! Давай напишем нашу первую функцию с параметрами. Мы будем использовать предыдущий пример - функцию, которая пишут 'hi' и имя пользователя:
- python
- def hi(name):
+```python
+def hi(name):
+```
Как ты можешь заметить, мы передали нашей функции параметр `name`:
- python
- def hi(name):
- if name == 'Ola':
- print('Hi Ola!')
- elif name == 'Sonja':
- print('Hi Sonja!')
- else:
- print('Hi anonymous!')
-
- hi()
+```python
+def hi(name):
+ if name == 'Ola':
+ print('Hi Ola!')
+ elif name == 'Sonja':
+ print('Hi Sonja!')
+ else:
+ print('Hi anonymous!')
+
+hi()
+```
Помни: функция `print` расположена внутри блока оператора `if` с отступом в четыре пробела. Это потому, что она запускается тогда, когда выполняется условие. Давай посмотрим, как это работает:
@@ -662,8 +671,9 @@ Python проходит через каждую проверку условия
Упс, ошибка. К счастью, Python выдает довольно подробное сообщение об ошибке. Оно говорит нам, что функция `hi()` (которую мы определили) имеет один обязательный аргумент (`name`) и мы забыли передать его при вызове функции. Давай исправим это в конце файла:
- python
- hi("Ola")
+```python
+hi("Ola")
+```
И запустим еще раз:
@@ -674,8 +684,9 @@ Python проходит через каждую проверку условия
И если мы поменяем имя?
- python
- hi("Sonja")
+```python
+hi("Sonja")
+```
И повторим:
@@ -693,11 +704,12 @@ Python проходит через каждую проверку условия
Давай попробуем что-то похитрее -- существует немало имен и писать условие для каждого будет тяжело, правда?
- python
- def hi(name):
- print('Hi ' + name + '!')
-
- hi("Rachel")
+```python
+def hi(name):
+ print('Hi ' + name + '!')
+
+hi("Rachel")
+```
Давай выполним этот код:
@@ -716,28 +728,31 @@ Python проходит через каждую проверку условия
Еще помнишь о списках? Давай создадим список девушек:
- python
- girls = ['Rachel', 'Monica', 'Phoebe', 'Ola', 'You']
+```python
+girls = ['Rachel', 'Monica', 'Phoebe', 'Ola', 'You']
+```
Мы хотим поздороваться с каждой по имени. У нас есть функция `hi`, которая этим и занимается, так что давай поместим её в цикл:
- python
- for name in girls:
+```python
+for name in girls:
+```
Оператор ~~~ for~~~ работает по схожему принципу что и ~~~ if~~~ ; код после обоих операторов должен иметь отступ в четыре пробела.
Ниже полный код, который должен быть у нас в файле:
- python
- def hi(name):
- print('Hi ' + name + '!')
-
- girls = ['Rachel', 'Monica', 'Phoebe', 'Ola', 'You']
- for name in girls:
- hi(name)
- print('Next girl')
+```python
+def hi(name):
+ print('Hi ' + name + '!')
+
+girls = ['Rachel', 'Monica', 'Phoebe', 'Ola', 'You']
+for name in girls:
+ hi(name)
+ print('Next girl')
+```
И после запуска:
@@ -759,17 +774,21 @@ Python проходит через каждую проверку условия
Ты также можешь использовать цикл `for` на числах, используя функцию `range`:
- for i in range(1, 6):
- print(i)
+```python
+for i in range(1, 6):
+ print(i)
+```
Что выведет на экран:
- 1
- 2
- 3
- 4
- 5
+```
+1
+2
+3
+4
+5
+```
Функция `range` создает список чисел, следующих от первого до второго с заданным шагом (начало, конец и шаг мы передаем функции как параметры, если шаг не указать, как в примере выше, он будет по умолчанию равен 1).
@@ -784,4 +803,4 @@ Python проходит через каждую проверку условия
![Пирожок][3]
- [3]: images/cupcake.png
\ No newline at end of file
+ [3]: images/cupcake.png
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment