Lekcja 5 - Nikola Horn

Lekcja 5 - Nikola Horn
Photo by Bahnijit Barman / Unsplash

Żółwik - rysowanie wielokątów z różną ilością ścian i wyborem koloru

import turtle

zolwik = turtle.Turtle()
zolwik.speed(6)
zolwik.shape("turtle")
zolwik.width(5)


sciany = int(input("Wpisz ilość ścian wielokątu: "))
kolor = input("Wybierz kolor: red, green, blue: ")

for _ in range(sciany):
    zolwik.pencolor(kolor)
    zolwik.forward(80)
    zolwik.right(360/sciany)


turtle.exitonclick()

Żółwik - rysowanie x ilości kółek tworzących "rozetę"

import turtle

zolwik = turtle.Turtle()
zolwik.speed(6)
zolwik.shape("turtle")


ilosc = int(input("Wpisz ile chcesz narysować kółek: "))

for _ in range(ilosc):
    zolwik.circle(80)
    zolwik.right(360/ilosc)


turtle.exitonclick()

Żółwik - rysowanie x ilości coraz większych kwadratów

import turtle

zolwik = turtle.Turtle()
zolwik.speed(6)
zolwik.shape("turtle")

wartosc=80

ilosc = int(input("Ile chcesz kwadratów? "))


for _ in range(ilosc):
    for _ in range(4):
        zolwik.forward(wartosc)
        zolwik.left(90)
    wartosc += 20


turtle.exitonclick()

Żółwik - rysowanie x ilości "schodów"/"bar chart"

import turtle

zolwik = turtle.Turtle()
zolwik.speed(6)
zolwik.shape("turtle")

wartosc=20

ilosc = int(input("Ile chcesz schodów "))


for _ in range(ilosc):
    for _ in range(2):
        zolwik.forward(wartosc)
        zolwik.left(90)
        zolwik.forward(wartosc+wartosc)
        zolwik.left(90)
    zolwik.penup()
    zolwik.forward(wartosc)
    zolwik.pendown()
    wartosc += 10


turtle.exitonclick()

Notatki z zajęć

Zagnieżdżanie list/krotek

ankieta = [
  (
    "Ile mam lat?",
    [
      ("10", 0),
      ("11", 0),
      ("30", 1),
    ],
  ),
  (
    "Ile nóg ma pies?",
    [
      ("2", 0),
      ("4", 1),
      ("30", 0),
    ],
  ),
  ]

Widać tu listę krotek, a w każdej krotce listę kolejnych krotek. Lista [], krotka ()

Podawanie indeksów elementów z krotki znajdującej się w liście:

moja_lista = [("a", 1), ("b", 2), ("c", 3)]

print(moja_lista[1][0])

[1] - indeks listy; [0] - indeks krotki, która jest w liście

print wyświetli pierwszy element z drugiej krotki, czyli "b"

Biblioteki modułów

Importowanie modułów, które znajdują się już na naszym komputerze:

import random

moja_lista = ["a", "b", "c"]

losowy_wybor = random.choice(moja_lista)
print(losowy_wybor)
import nazwa_modułu
nazwa_modułu.nazwa_funkcji(parametr)

Zmiana nazwy modułu/nadawanie aliasu:

import random as rnd

Instalacja biblioteki, której nie mamy na komputerze:

pip install nazwa_modulu

Importowanie bibliotek rozwiązujących trywialne problemy (takie, które można rozwiązać w kilku linijkach) to zła praktyka!

Pętla for

DRY - Don't Repeat Yourself

Pętla for - "wykonaj coś tyle razy ile jest elementów w danym obiekcie"

for element in sekwencja:
for litera in "Robisz.to":
  print(litera)

litera - to słowo wymyślamy sami! Jeśli nie jest używane w bloku pętli, dobrą praktyką jest użycie podłogi _

Pętla ta będzie wykonywała funkcję print tyle razy ile jest elementów w stringu/liście. W tym wypadku wydrukuje po kolei wszystkie elementy stringu.

for _ in "Robisz.to"
  print("Hello")

Tutaj wydrukuje "Hello" tyle razy ile jest elementów w stringu.

for i in moja_lista:
  print(i, end=", ")

To wydrukuje wszystkie elementy "mojej listy" z dodanym ", " na końcu każdego z nich (dzięki czemu będą w jednej linii!

Ciekawostka: print() bez żadnego parametru drukuje sam enter
moja_lista = [2 , 3 , 4]
a = 1

for i in moja_lista:
  a *= i

print(a)

Ważne są wcięcia! Ten kod wydrukuje "24" ponieważ wykona wszystkie działania w pętli i wydrukuje ich wynik na końcu. Jeśli print byłby w pętli to drukowałby wyniki każdego działania osobno.

a *= 1 = a = a*i

Możemy też używać pętli for ze słownikami, ale wtedy iterujemy tylko po kluczach!! (Używając print, wyświetlimy same klucze). Możemy obejść to wykorzystując metodę .items() dla słownika:

moj_slownik = {"a" : 1, "b", 2}

for klucz, wartosc in moj_slownik.items():
  print(f"Klucz: {klucz}, Wartość: {wartosc}")

Funkcja range()

range() - generuje nam sekwencję o wybranej przez nas długości

for element in range(10):
  print element

Moduł turtle

Służy do proceduralnego rysowania kształtów na ekranie.

import turtle

zolwik = turtle.Turtle()

#prędkość żółwia:
zolwik.speed(6)

#kształt "mazaka" - tutaj żółwik
zolwik.shape("turtle")

#szerokość linii:
zolwik.width(5)


#wychodzenie z ekranu rysowania kliknięciem myszy:
turtle.exitonclick()

W sposób podobny do turtle działają frezarki, CNC itp.