1. 28.09.2019-zadania
  2. 01.10.2019-zadania

    01.10.2019-rozwiazania

  3. 03.10.2019-zadania

    03.10.2019-rozwiazania

  4. 07.10.2019-zadania

    07.10.2019-rozwiazania

  5. 10.10.2019-zadania

    10.10.2019-rozwiazania

  6. 15.10.2019-zadania
  7. 19.10.2019-zadania

    19.10.2019-rozwiazania

  8. 22.10.2019-zadania

    22.10.2019-rozwiazania

  9. 26.10.2019-zadania

  10. 09.11.2019-zadania

Komendy Pythona

Dla osób których nie było na kursie: https://www.learnpython.org/en/Map,_Filter,_Reduce

Filter

Jak sama nazwa wskazuje, filtr tworzy listę elementów, dla których funkcja zwraca wartość True.

Dla większego zrozumienia polecam uruchomić kod i postarać się go przeanalizaować

k = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

# 1 sposób
nowa_lista = []
for x in k:
    if x % 2 == 0:
        nowa_lista.append(x)
print(nowa_lista)


# 2 sposób
def jest_parzysty(x):
    if x % 2 == 0:
        return True
    else:
        return False


print(tuple(filter(jest_parzysty, k)))

print(tuple(filter(lambda x: x % 2 == 0, k)))

Map

Mapa wykonuje funkcję do wszystkich pozycji na liście_wejściowej.

Dla większego zrozumienia polecam uruchomić kod i postarać się go przeanalizaować

k = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)

# 1 sposób
nowa_lista = []
for x in k:
    if x % 2 == 0:
        nowa_lista.append(x)
print(nowa_lista)


# 2 sposób
def jest_parzysty(x):
    if x % 2 == 0:
        return True
    else:
        return False


print(tuple(filter(jest_parzysty, k)))

print(tuple(filter(lambda x: x % 2 == 0, k)))

Reduce

Reduce to bardzo przydatna funkcja do wykonywania niektórych obliczeń na liście i zwracania wyniku. Stosuje obliczenia kroczące do sekwencyjnych par wartości na liście.

Dla większego zrozumienia polecam uruchomić kod i postarać się go przeanalizaować

from functools import reduce

# WYLOSOWANIE listy dziesięcioelementowej
import numpy as np
x = np.random.rand(10)

# Pierwszy sposób
elem = 1
for a in x:
    elem = elem * a

print(elem)

# 2 sposób
print(reduce(lambda a, b: a*b, x))

# W jaki sposób reduce wykonuje operacje na kolekcjach:
# [1,2,3,4,5]
# [2,3,4,5]
# [6,4,5]
# [24,5]
# [120]

Zip

Funkcja zip () Pythona tworzy iterator, który agreguje elementy z dwóch lub więcej iteratorów.

Polecam przeczytać: https://realpython.com/python-zip-function/ dla większego zrozumienia, oraz uruchomić kod i postarać się go przeanalizaować

slowa = ['jablko', 'czeresnia', 'maslo', 'jajka']
liczby = [3, 10, 1, 6]

print(list(zip(slowa, liczby)))
print(list(zip(slowa)))
print(list(zip(slowa, liczby, slowa)))

lista_liczb = [1.12, 121.12, 12.0]
print(list(zip(slowa, lista_liczb)))

from itertools import zip_longest
print(list(zip_longest(lista_liczb, slowa, fillvalue=max(lista_liczb))))

print(list(sorted(zip(liczby, slowa, lista_liczb))))
print(list(sorted(zip(slowa, liczby))))

print(dict(sorted(zip(slowa, liczby))))

Projekt

Dla osób które nie były na zajęciach zapresentowano kod projektu. Projekt, który przygotujemy w ramach zajęć będzie powszechnie znaną grą "Snake".

Aby uruchomić program należy wcześniej zainstalwoać bibliotekę pygame komendą pip install pygame. Następnie kod umieścić w pliku main.py.

Kod programu można również znaleść https://github.com/AdrianKnapczyk/codebrainers-snake

import pygame

step = 20
width = 800
height = 600
dimensions = (width, height)

pygame.init()
screen = pygame.display.set_mode(dimensions)
pygame.display.set_caption("codebrainers-snake")
clock = pygame.time.Clock()



def turn(direction):
    pressed_key = pygame.key.get_pressed()
    if pressed_key[pygame.K_DOWN]:
        return 2
    if pressed_key[pygame.K_UP]:
        return 0
    if pressed_key[pygame.K_LEFT]:
        return 3
    if pressed_key[pygame.K_RIGHT]:
        return 1
    return direction

def set_new_position(x_pos, y_pos, direction):
    if direction == 2:
        return (x_pos, y_pos + step)
    if direction == 0:
        return (x_pos, y_pos - step)
    if direction == 3:
        return (x_pos - step, y_pos)
    if direction == 1:
        return (x_pos + step, y_pos)
    return (x_pos, y_pos)


head_x = 400
head_y = 300
head_direction = 0


while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            exit(1)

    head_direction = turn(head_direction)
    head_x, head_y = set_new_position(head_x, head_y, head_direction)

    screen.fill((255, 255, 255))

    kwadrat = pygame.Rect(head_x, head_y, 20, 20)
    pygame.draw.rect(screen, (128, 128, 128), kwadrat)

    pygame.display.flip()

    clock.tick(12)

Zadania

  1. Dla osób których nie było na zajęciach proszę pobrać plik jupythera z https://www.siepietowski.pl/course/numpy-zadania oraz go odpalić (umieścić w odpowiednim folderze oraz wykonać jupyther lab), oraz przerobić podane w nim zadania.