Created
September 9, 2015 02:05
-
-
Save jordanorelli/fb9968f46b7b1283f953 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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