Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

added else, break, continue and some function errors #8

Open
wants to merge 9 commits into
base: master
Choose a base branch
from
Binary file added images/python-thernary operator-meme.webp
Binary file not shown.
Binary file added images/string-methods-meme.webp
Binary file not shown.
Binary file not shown.
3 changes: 3 additions & 0 deletions lesson01.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@

Для побудови алгоритмів рекомендується використати блок-схеми. Спочатку студентам настійно рекомендується будувати блок-схеми навіть для найпростіших завдань, далі - тільки для тих, які здаються їм складними.


## Блок-схеми

**Блок-схемою** називають графічне придставлення алгоритму. У блок-схемі крок чи послідовність кроків алгоритму представляються у вигляді блоку, а між блоками встановлюють зв'язки.
Expand All @@ -34,6 +35,7 @@

![решение котика](https://cs7.pikabu.ru/post_img/2018/04/23/6/1524471868135292777.jpg)


## Змінні в Python: визначення, типи даних.

**Змінною** називається найменована область у пам'яті, де зберігаються дані. Змінна має тип та ім'я.
Expand All @@ -56,6 +58,7 @@ my_bool = True #правда чи брехня, булеви значенн

```


## Типизация

**Статична типізація** означає, що тип змінної визначається спочатку і залишається незмінним остаточно програми. Якщо змінна спочатку оголошена контейнером для цілих чисел, у ній можуть бути лише цілі числа.
Expand Down
135 changes: 122 additions & 13 deletions lesson03.md

Large diffs are not rendered by default.

21 changes: 15 additions & 6 deletions lesson04.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

У Python є мінливі (mutable) та незмінні (immutable) типи даних.

Раніше розглядався тип даних int, який є незмінним. Так само незмінними є типи даних tuple (кортеж) і string (рядок).
Раніше розглядався тип даних int, який є незмінним. Так само незмінними є типи даних tuple (кортеж), frozenset (фіксована множина) і string (рядок).
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Я не впевнений, що є сенс розповідати про фіксовану множину, вона не часто використовується

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Рідкість використання не відміняє її наявності. Я міг би ще згадати про byte array, але вже чорт з ним. От що забув вказати Boolean як незмінний тип - це косяк, факт.


Що значить незмінні? Значить, що вже створений рядок ми не можемо змінити. Це легко покажуть подальші приклади із рядками і кортежами. Якщо ж здається, що об'єкт одного з перерахованих даних змінився - значить, тепер ім'я об'єкта просто вказує на нову область пам'яті з новим об'єктом.

Expand All @@ -25,12 +25,12 @@ S4 = 'This "string" is a bit """crazy"""'

### Прості операції

Прості арифметичні операції складання і множення доступні і з рядками. У прикладі нижче - складання двох рядків (конкатенація), множення рядка на число та взяття конкретного елемента рядка за його індексом. Індекси у всіх послідовностях у програмуванні вважаються від нуля. По негативному індексу - відраховуємо від кінця рядка назад.
Прості арифметичні операції складання (конкатенації) і множення (повторення) доступні і з рядками. У прикладі нижче - складання двох рядків, множення рядка на число та взяття конкретного елемента рядка за його індексом. Індекси у всіх послідовностях у програмуванні вважаються від нуля. По негативному індексу - відраховуємо від кінця рядка назад.

```python
S = 'abc'
print (len(S)) # 3
S = S + '12' # В S = 'abc12'
S = S + '12' # S = 'abc12'
print (S[2]) # 'c'
print ('ab'*2) # 'abab'
```
Expand Down Expand Up @@ -66,6 +66,8 @@ Python дозволяє взяти частину рядка або навіть
'Welcome to California!'
>>> S[:-3]
'Welcome to Californ'
>>>print(S[-3:])
'ia!'
>>> S[::-1]
'!ainrofilaC ot emocleW'
>>> S[:5:2]
Expand Down Expand Up @@ -216,7 +218,9 @@ print(message)
В python відсутні масиви в традиційному розумінні цього терміну.
Точніше, якщо вам конче необхідно використати саме масиви, то варто імпортувати модуль array:

```python
import array
```

Даний модуль визначає тип об'єкта, який може ефективно опрацьовувати масив з базових типів даних: букв, цифр, дробів (str, int, float). Масиви є ітерованим типом даних і ведуть себе дуже схоже на списки, з єдиною відмінністю - всі об'єкти всередині них є однотипними.

Expand Down Expand Up @@ -262,7 +266,7 @@ L = [1, 2, 's']
```


### Деякі функції, що працюють зі списками
### Деякі методи, що працюють зі списками

```python
>>> L = list(range(1, 11))
Expand All @@ -280,12 +284,15 @@ L = [1, 2, 's']
>>> L.remove(5) # Removes the first 5 appeared
>>> L
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13, 14]
>>> L.pop() #takes the last iterable from the list and transfers it
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13]
>>> print(L.pop()) #takes the last iterable from list and prints it
13
```


```python
>>> L
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> L=[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# map function applies the method given to the iterable proposed
>>> L = list(map(str, range(1, 11)))
>>> L # Here we have casted all integers to strings
Expand Down Expand Up @@ -362,6 +369,8 @@ say Sparta!!

[List comprehensions за 5 хвилин](https://medium.com/nuances-of-programming/list-comprehensions-%D0%B2-python-%D0%B7%D0%B0-5-%D0%BC%D0%B8%D0%BD%D1%83%D1%82-4e5ff3cafd62)

[документацыя по модулю array (англійською))](https://docs.python.org/3/library/array.html#module-array)

[Зрізи](https://habr.com/ru/post/319200/)

[Домашка](hw04.md)
9 changes: 9 additions & 0 deletions lesson05.md
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,15 @@ def say_hello():
```python
print(say_hello()) # Hello
```
Іноді, особливо у великих проектах, буває так, що програміст створив функцію, але поки ще не придумав її код. Зазвичай у такому випадку замість коду вставляється команда `pass` чи `...`, які інтерперетатор просо пропускає. Але у цьому випадку, якщо ви пізніше викличете функцію без коду, вона нічого не виконає, а ви не будете розуміти у чому проблема. Тому вважається хорошим тоном заповнювати пусті функції настумпним кодом:

```python
def func():
raise NotImplementedError('Code of func() is missing')
```

У цьому випадку при виклику не імплементованої функції, у консоль буде виведено повідомлення про помилку з відповідним текстом і вам буде набагато легше зрозуміти у чому проблема.


### Параметри та аргументи функції

Expand Down
44 changes: 44 additions & 0 deletions lesson06.md
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,7 @@ from sys import argv as cli_param #
>>> programmers - managers
{'petrov', 'sidorov'}
```
Але при роботі з Множинами слід пам'ятати, що вони є неіндексованим типом даних, а отже у разі їх використання у вас не вийде доступитись до якогось окремого їх елемента за індексом. Власне, окремі елементи множин можна отримати або перебравши їх послідовно, або перетворивши у список чи краще кортеж.


## 4. Dict (Словник)
Expand Down Expand Up @@ -281,6 +282,49 @@ for key, val in d.items():
calculator['minus'](9,3)
6
```
Слід відмітити, що дещо подібний з цим метод можна використовувати для прискорення роботи програми, у випадку багатогілкового розгалудження. Даний метод може використовуватись також і у інших мовах програмування, у яких існує тип даних hash table, наприклад С++:
До прикладу - візьмемо код, з розгалуджннями, кожне з яких викликає окрему функцію:

```python
def do_one(x):
print('one')
def do_two(x):
print('two')
def do_three(x):
print('tree')
def do_default(x):
print(x)

x=2
if x==1:
do_one(x)
elif x==2:
do_two(x)
elif x==3:
do_three(x)
else:
do_default(x)
```
У цьому випадку таку і більшу кількість розгалуджень можна замінити словником, де у якості ключів вказані очікувані значення, а у якості значень - викликані функції:
```python
actions={1: do_one(x), 2: do_two(x), 3: do_three(x)}
```
Зверніть увагу, що у даному словнику відсутня гілка `else`, яка викликає функцію `do_default(x)`. Але у разі вказання такого значення як вказаного по замовчуванню (дефолтного) для методу .get() застосовуваного до цього словника, де першим аргументом йде оброблювана величина, наступний код буде призводити до того самого результату:

```python
action=actions.get(x, do_default)
action(x)
```


Цікаво, що при роботі з словниками їх можна сортувати. Але якщо ви їх будете просто сортувати, то відбудеться сортування словника саме за ключами. Якщо ж вам необхідно здійснити сортування словника за значеннями, то варто використати наступний код:

```python
students={'Mark': 11, 'Alexander': 36, 'Dietrich': 82, 'Gretchen': 29}
sudents=dict(sorted(students.items(), key=lambda x: x[1]))
print(students) #{'Mark': 11, 'Gretchen': 29, 'Alexander': 36, 'Dietrich': 82}
```

### Практичні завдання

1. Створити словник оцінок передбачуваних студентів (Ключ – ПІ студента, значення – список оцінок студентів). Знайти найуспішнішого і самого слабенького за середнім балом.
Expand Down
13 changes: 13 additions & 0 deletions lesson07.md
Original file line number Diff line number Diff line change
Expand Up @@ -286,3 +286,16 @@ git branch # видаляє, створює та перераховує гілк

[Восьмий Урок](lesson08.md)

### Для тих, хто ніого не зрозумів:

# Алгоритм простої роботи з чужим репозиторієм:
1.Зареєструватись на гітхабі.
2.Відкрити чужий репозиторій.
3.Клацнути справа-зверху на кнопку Fork та створити форк проекту собі на репозиторій.
4.Перейти у свій репозиторій та скопіювати посилання на нього.
5.У гіт-баші перейти у папку куди ви хочете клонувати репозиторій та написати:
git clone <insert here link to repository>
6.Внести свої зміни.
7.Ввести у гіт-баші команду git add <імена файлів або . для багатьох>
8.Зберегти зміни у локальний гіт (зробити комміт): git commit -m 'some comment'
9.Відправити все на Гітхаб: git push