PYTHON

...
( Hent Python her )

intro

Programmeringssprog som Python er samlinger af kommandoer, som vi kan give en mobil eller computer.

En kommando kan f.eks. være "tænd lyset", "sluk lyset" eller "tæl til 1000". Sat sammen kan de give "tænd og sluk lyset 1000 gange".

Som programmør lærer man de forskellige kommandoer, og sætter dem sammen i forskellige rækkefølger.

Programmører bruger f.eks. Google eller ChatGPT til at finde ud af hvilke kommandoer der findes.

(eksempel på en google-søgning)

(eksempel på ChatGPT hjælp)

Normalt når en programmør skriver kode, er det i en eller flere filer, hvor hver linje er en kommando. Når filen gemmes, viser endelsen på filnavnet (filformatet), hvilket programmeringssprog der skrives i.

F.eks. kan et python script gemmes som myscript.py

.py viser at der er skrevet i Python.

Her er en liste med forklaringer og opgaver til de vigtigste kommandoer i Python:


print( )


print('Hello World!')
                

I python bruges print( ) til at skrive information til terminalen.

Det du putter ind i (parentesen) vil blive spyttet ud i terminalen 🖳.

Prøv at bruge print( ) her:

TIP: Hvis du vil printe tekst, skal du huske at sætte "gåseøjne" eller 'apostroffer' omkring.

Som ny programmør er print( ) et nemt værktøj til at finde frem til fejl i sin kode. Det kan gøres ved at indsætte prints som "checkpoints" i koden, så man kan se hvornår koden går i stå.

Øvelser
læs mere

#comment


# this will not count as code
                

I python bruges # til at indsætte kommentarer i koden.

Alt du skriver på en linje efter et # vil ikke blive læst som kode, når du kører dit script.

Brug #kommentarer til at beskrive dele af koden for dig selv eller andre fremtidige læsere.


# define gravity
g = -9.82
                

#kommentarer er også gode til midlertidigt at fjerne en del af sin kode, uden at skulle slette det helt fra scriptet (smart til debugging).


if True: # this == that:
    # print('this wont print')
    print("code reached")
                

variable =


# ↓ navn
name = 'Python'
#         ↑ værdi
                

En variabel består af et navn og en værdi.

Vi laver en variabel med et lighedst=gn. Til venstre for lighedstegnet er navnet, og til højre er værdien. Navnet forbliver det samme, men værdien kan vi ændre senere.

I eksemplet har variablen navnet name og værdien 'Python'.

Nu kan vi henvise til variablen name i vores print().


name = 'Python'
print(name)
                

Hvad tror du bliver printet til terminalen?

[ prøv selv ]
Øvelser

Hvad printer scriptet her?


name = 'Python'
print(name)
name = 'Hugorm'
print(name)
                    

Kod 2 forskellige variable, og print dem

læs mere

'datatyper'

Indtil videre har vi kun arbejdet med 'strings'


"Hello World"  # string
'Hello World'  # also string
                

I programmering er typen af data vigtig.

De mest normale typer er:

  • String (str): ord og sætninger i "gåseøjne" eller 'apostroffer'
  • Integer (int): hele tal ( f.eks 16 )
  • Float - kommatal ( f.eks 3.14 )
  • Boolean (bool): sandt eller falsk (True / False)

"I am text" # string
25          # integer
7.5         # float
True        # boolean
                
Eksempler

name = "Python Expert"
age = 25
shoesize = 7.5
awake = True
faults = None
                  

( None er vores datatype for ingenting i Python. )

Øvelser

1. Lav et script med 4 variable med forskellige navne

2. Sæt hver variabel til en datatype (mindst én af hver type)

3. Lav følgende regnestykker med forskellige datatyper:

  • int + int
  • int * int
  • float + float
  • float * float
  • str + str
  • str * str
  • int + float
  • int * float
  • str + int
  • str * int
Eksempel

batman = "Na" # str
gotham = 11   # int
print( batman * gotham ) # str * int
                      

Skriv ned hvad du får af svar og fejlbeskeder.

Kan du finde på flere kombinationer af regnstykker med datatyper?

(Gruppediskussion):
Sammenlign jeres resultater. Hvordan giver de mening?

læs mere

if-else:

Det er rart at kunne træffe beslutninger på baggrund af information, f.eks.:

Hvis 🌧️ → husk ☂️

Hvis ☀️ → husk 🕶️

I programmering gør vi dette med if-else-statements til ting som

Hvis 0 liv → Game Over


if condition:
    # do thing
else:
    # do other thing
                

condition skal udskiftes med et udtryk der giver enten True eller False (sand/falsk). Det vi tidligere lærte hed en boolean.

En simpel condition kan være en sammenligning af to værdier, f.eks.

5 > 3 (er 5 større end 3)

3 > 10 (er 3 større end 10)

5 == 3 (er 5 lig med 3)

'this' == 'this' (er 'this' lig med 'this')

'this' == 'that' (er 'this' lig med 'that')

Sammenligninger på den måde er smart til at kontrollere variable:


age = 20
if age > 15:
    print('🍺')
else:
    print('🧃')
                

Andre eksempler på conditions der giver True eller False:

'myname'.startswith('my')

'hi' in 'this'

type('mystring') is int

type('mystring') is str

Kan du regne ud hvorfor?

Eksempler

day = input('What day is it?')
if day == 'monday':
  print('☕')
                  

highscore = 0
score = 5
if score > highscore:
    highscore = score
                  

answer = input("What's up?")
if 'fuck' in answer:
    print('Hov hov, ikke bande!')
                  
Øvelser

Hack scriptet ved at ændre variable og conditions indtil alle 7 if-statements bliver True

læs mere

random.🎲


import random

roll = random.randint(1, 6)
print(roll)
                

Tilfældigheder gør livet sjovere.

Vi kan lave tilfældige tal ved at importere random biblioteket. Derefter kan vi bruge forskellige funktioner fra biblioteket, alt efter hvilke tilfældige tal vi vil have:

( tip: du kan give dine imports "kælenavne" som her )


import random as r

# float mellem 0.0 og 0.999...
r.random()

# integer mellem 1 og 6
r.randint(1, 6)
  
Eksempler

# terningekast
import random
dice = random.randint(1,6)
if dice == 6:
    print('Winner!')
                  

# møntkast
import random
coin = random.randint(0,1)
if coin == 0:
    print('plat')
elif coin == 1:
    print('krone')
                  

# weapon attack
import random as r

min_dmg = 1
max_dmg = 415

def attack():
    damage = r.randint(min_dmg, max_dmg)
    return damage
                  
læs mere

sleep()


import time

print('instant')
time.sleep(5) # pause for 5 seconds
print('a bit later')
                

Tilføj pauser i din kode med sleep().

andre eksempler

from time import sleep
# print tallene 0-10 med 1 sekunds mellemrum
for i in range(10):
    print(i)
    sleep(1)
                
læs mere

input( )


answer = input('Who are you?')
print(answer)
                

Hvordan taler vi med et script?

Der er mange måder at lave input til et Python script. Den første vi kigger på er direkte fra terminalen via input( ) funktionen:


name = input('What is your name?')
print('Hello ' + name)
                
[ prøv selv ]

Vi kan kombinere input med if-else for at lave et simpelt gættespil:


import random

guess = input('Guess a number between 1 and 10:')
correct = random.randint(1,10)

if int(guess) == correct:
    print("Correct!")
else:
    print("Wrong!")
                  

int(guess) konverterer vores input fra en string til en integer

[ prøv selv ]
Andre Input

# keyboard
import keyboard

def on_key_event(e):
    if e.name == 'a':
        print("A pressed")
    elif e.name == 'q':
        print("Q pressed")

keyboard.on_press(on_key_event) 

# Keep the script running
keyboard.wait("esc")
                    

# PS5 controller
from pydualsense import pydualsense, TriggerModes

def cross_pressed(state):
    print(state)

ds = pydualsense() # open controller
ds.init() # initialize controller
ds.cross_pressed += cross_pressed
                    
læs mere

loops:


# for-loop
for i in range(5):
    print(i)
                

# while-loop
i = 10
while i > 0:
    i -= 1
    print(i)
                

Loops gør livet lettere.

I Python er der mange måder at lave loops. Det alle loops har til fælles, er at være måder vi nemt kan gentage kode.

F.eks. kan vi i stedet for at printe alle tal fra 0 til 6 som her:


print(0)
print(1)
print(2)
print(3)
print(4)
print(5)
print(6)
                

gøre det samme flot og kort med et loop:


for i in range(7):
    print(i)
                

range(7) betyder "alle tal fra 0 til 7 (uden 7)".

Ved at ændre på 7-tallet i range kan vi ændre hvor mange gange loopet gentages.

[ prøv selv ]
Eksempler

Vi kan udvide gættespillet fra input()-eksemplet ved at putte noget af koden ind i et loop


import random

correct = random.randint(1,10)

while True:
    guess = input('Guess a number between 1 and 10:')
    if int(guess) == correct:
        print("Correct!")
        break
    else:
        print("Wrong!")
                  

Ved at putte input( ) ind i et while-loop kan vi gentagende gange spørge efter et nyt gæt, indtil spilleren gætter korrekt.

Ordet break stopper et loop

læs mere

dicts { }


box = {
    "height" : 5,
    "width" : 15,
    "length" : 7,
    "name" : "Boxy McBoxface"
}
                

Dicts er objekter der kan indholde mere end én variabel.

Vi kan trække variable ud af en dict sådan her:


v = box['height'] * box['width'] * box['length']
                
Øvelser

Hvad bliver v i eksemplet?

Lav dig selv til en dict med så meget data som du kan komme på (mindst 8 ting)

Eksempel:


myself = {
    "name" : "Obama",
    "age" : 62,
    "height" : 187,
    "osv.osv.osv." : ...
}
                  
læs mere

functions( )

En "function" kan godt lyde som noget svært og matematisk, men i programmering er det bare en måde at give et navn til et stykke kode, så det er nemt at genbruge.


def stickman():
    print('  o  ')
    print(' /|\ ')
    print(' / \ ')
                

Du har faktisk allerede brugt flere functions. Både print(), input() og range() er functions.

Vi laver en function med nøgleordet def, efterfulgt af navnet på din function og et sæt parenteser() og et kolon :


#           ↓  navn
    def stickman():
#    ↑      print('  o  ')
# nøgleord  print(' /|\ ')
#           print(' / \ ')
                

Når en function er defineret, kan den kaldes:


stickman()
                
[ prøv selv ]
Øvelser

Sæt kaldet af stickman() ind i et loop

Definér en function med navnet ego, der printer dit navn 5 gange. Kald bagefter dit ego() 10 gange, evt. i et loop

Eksempler

import random

def coinFlip():
    coin = random.randint(0,1)
    if coin == 0:
        return 'plat'
    elif coin == 1:
        return 'krone'

for i in range(10):
    print(coinFlip())
                  
læs mere

[ lists ]

Lists eller "Data Structures" er en kasse hvor vi kan opbevare objekter og datatyper, og tilføje/fjerne dem som vi får brug for det.

Det er f.eks. smart til at lave et inventory i et spil, hvor en spiller kan tilføje/fjerne ting.

Eksempelvis starter vi en liste med navne (som strings) sådan her:


mylist = ['Peter', 'Abacus', 'Bobby']
                

Vi kan også starte listen tom, og bagefter tilføje med .append()


mylist = []
mylist.append('myself')
                

Andre indbyggede funktioner i lists er bl.a.:


mylist = []
mylist.append('myself')   # add to list
mylist.append('you')    
mylist.append('stranger')
len(mylist)               # get amount of things in list
mylist.index('myself')    # get position of thing in list
mylist.remove('stranger') # remove specific thing from list
mylist.clear()            # remove everything from list

if 'myself' in mylist:    # check if thing is in list
    print('I am there')
else:
    print('I am gone')
                
[ prøv selv ]
Øvelser

Start en tom liste med navnet mytable og append strings med navnene på dem du sidder ved bord med.

Fjern dig selv fra mytable med .remove og print bagefter mytable.

læs mere

classes

En class er en slags skabelon for et objekt.

Det kan hjælpe at forestille sig et fysisk objekt, f.eks. en kaffekande.

Vi vil lave en masse kaffekander, og ens for dem alle er at de kan indeholde 1.5 liter. Det skriver vi i Python sådan her:


class CoffeePot:
    max_volume = 1.5
                

Forskelligt for hver kande er hvad vi fylder den med. Det skriver vi sådan her:


class CoffeePot:
    max_volume = 1.5
    def __init__(self, stuff, amount):
        self.content = stuff
        self.current_volume = amount
                

def __init__(self): er en funktion der bliver kaldt når vi "starter" (initialisere) et objekt ud fra vores skabelon.

self er en reference til den kopi af skabelonen vi starter, og den skal startes med et amount af noget stuff.

Det ser sådan her ud når vi vil starte en kaffekande og fylde den med 1.5 liter kaffe:


class CoffeePot:
    max_volume = 1.5
    def __init__(self, stuff, amount):
        self.content = stuff
        self.current_volume = amount

my_pot = CoffeePot('coffee', 1.5)
print(f'Contains: {my_pot.current_volume} liter {my_pot.content}')
                

Vi kan også lave 2 kander, og fylde den ene med kaffe og den anden med te:


class CoffeePot:
    max_volume = 1.5
    def __init__(self, stuff, amount):
        self.content = stuff
        self.current_volume = amount

pot1 = CoffeePot('coffee', 1.5)
pot2 = CoffeePot('tea', 1.0)
                

Vi kan også tilføje funktioner til et objekt. Til en kaffekande kunne det f.eks. være en funktion som tømmer kanden:


class CoffeePot:
    max_volume = 1.5
    def __init__(self, stuff, amount):
        self.content = stuff
        self.current_volume = amount
    def empty(self):
        self.content = None
        self.current_volume = 0
                

( None er vores datatype for ingenting i Python. )

Nu kan vi starte, fylde og efterfølgende tømme en kande:


class CoffeePot:
    max_volume = 1.5
    def __init__(self, stuff, amount):
        self.content = stuff
        self.current_volume = amount
    def empty(self):
        self.content = None
        self.current_volume = 0

pot = CoffeePot('coffee', 1.5)
print(pot.current_volume)
pot.empty()
print(pot.current_volume)
                
[ prøv selv ]
Øvelser

Lav en class for en hund eller kat. Hvilke variable er ens for alle kæledyr, og hvad er specielt for dem hver især?

Lav en class der beskriver

læs mere

webbrowser



import


Installation

Indtil videre har vi kun importeret indbyggede packages.

Vi kan hente og installere ekstra packages med pip.

Start med at åbne en Terminal:

For at hente f.eks art-package skal man skrive:


pip install art
                

og køre kommandoen ved at trykke [ enter ] .

Når en package er installeret, kan den importeres og bruges i et python script:


import art
                

udskift art med den package du vil installere og importere.



    _     ____    ____  ___  ___      _     ____   _____ 
   / \   / ___|  / ___||_ _||_ _|    / \   |  _ \ |_   _|
  / _ \  \___ \ | |     | |  | |    / _ \  | |_) |  | |  
 / ___ \  ___) || |___  | |  | |   / ___ \ |  _ <   | |  
/_/   \_\|____/  \____||___||___| /_/   \_\|_| \_\  |_|  
            

Text Art


import art

art.tprint("coolname")
art.tprint("coolname", "rnd-xlarge")
                

Andre metoder


import art

art.aprint("butterfly") # print butterfly art
art.aprint("happy")     # print happy art
art.aprint("random")    # print random art
                

Find flere funktioner på GitHub ↘

GitHub I/O

Input : text (str)

Output : terminal print , str


Hent Pokémon med pypokedex

import pypokedex

pokemon1 = pypokedex.get(dex=25)   # dex is a pokémon id number
pokemon2 = pypokedex.get(name='Bulbasaur') # name is the name of a pokemon

print(pokemon1.name)
print(pokemon2.dex)
                

Hent Pokémon ud fra navn (name) eller id (dex)


import pypokedex
import webbrowser

pokemon = pypokedex.get(dex=25)
sprite = pokemon.sprites.front['default']

webbrowser.open(sprite)
                

Hent Pokémon og åben dens sprite (billede) med webbrowser

Øvelser

Kod et script der:

  • Genererer et tilfældigt tal med random (1-1010)
  • Bruger pypokedex til at hente Pokémon med det random tal
  • Printer den hentede Pokémons navn som ASCII-art
  • Åbner Pokémonens sprite med webbrowser

Find flere funktioner på GitHub ↘

GitHub I/O

Input : name (str) , dex (int)

Output : info (dict)


pokemon.name   # str
pokemon.dex    # int
pokemon.weight # int
pokemon.height # int
pokemon.types  # [str, str]
pokemon.sprites.front['default'] # image url str
                

Philips Hue

Kontrollér Philips Hue med phue

from phue import Bridge

bridge_ip = "your_bridge_ip_here"
lamp = "your_lamp_name"

b = Bridge(bridge_ip)
b.connect()

b.set_light(lamp, 'on', True) # True / False
b.set_light(lamp, 'bri', 254) # 0-254
b.set_light(lamp, 'hue', 100) # 0-65535
b.set_light(lamp, 'sat', 200) # 0-254
                

Brug ovenstående script til at forbinde til Philips Hue lamper.

Er du i vores Makerspace skal bridge_ip være:

192.168.8.187

Indstil lyset ved at skrue på:

  • on - True/False for at tænde/slukke
  • bri - 0 til 254 sætter lysstyrken
  • hue - 0 til 65535 sætter farven
  • sat - 0 til 254 sætter farvemætningen
  • ( se tegningen herunder )
Eksempel

from phue import Bridge

bridge_ip = "192.168.8.105"
lamp = "orange-table-p"

b = Bridge(bridge_ip)
b.connect()

b.set_light(lamp, 'on', True)  # True / False
b.set_light(lamp, 'bri', 254)  # 0-254
b.set_light(lamp, 'hue', 8000) # 0-65535
b.set_light(lamp, 'sat', 254) # 0-254
                  
Øvelser

Kod et script der får lys til at...

  • tænde
  • slukke
  • blinke 5 gange
  • skifte farve

(Gruppediskussion): Giver jeres resultater mening?

læs mere I/O

Input : brightness (int), hue (int), saturation (int)

Output :

COLORS!


text-to-speech

Hurtig TTS med Python

from gtts import gTTS
  
mytext = 'Merry Christmas!' # The text that you want to convert to audio

soundfile = gTTS(text=mytext, lang='en', slow=False) # lang='en' sets language to english
soundfile.save("filename.mp3")
                

Andre metoder

GitHub I/O

Input : text (str)

Output : .mp3 (file)


🔊 sound

Afspil lyd med Python

from playsound import playsound

playsound('groovyshit.mp3')
                

Filen du vil afspille skal ligge i samme mappe som dit Python script.

læs mere I/O

Input filename (str)

Output : sound!


QR-code


import qrcode

img = qrcode.make('Some data here')
img.save("filename.png")
                
Lav QR-koder med Python

Find flere funktioner på GitHub ↘

GitHub I/O

Input : text (str)

Output : QR-code (image)


🖱️ PyAutoGUI

Tag screenshots, styr musen, simulér tastatur- og museklik og meget andet med PyAutoGUI

import pyautogui

screenimg = pyautogui.screenshot()  # take screenshot
screenimg.save('my_screenshot.png') # save screenshot

pyautogui.click() # click mouse at its current location.
                
Flere eksempler

import pyautogui
currentMouseX, currentMouseY = pyautogui.position() # Returns two integers, the x and y of the mouse cursor's current position.
pyautogui.moveTo(100, 150) # Move the mouse to the x, y coordinates 100, 150.
pyautogui.click() # Click the mouse at its current location.
pyautogui.click(200, 220) # Click the mouse at the x, y coordinates 200, 220.
pyautogui.move(None, 10)  # Move mouse 10 pixels down, that is, move the mouse relative to its current position.
pyautogui.doubleClick() # Double click the mouse at the
pyautogui.moveTo(500, 500, duration=2, tween=pyautogui.easeInOutQuad) # Use tweening/easing function to move mouse over 2 seconds.
pyautogui.write('Hello world!', interval=0.25)  # Type with quarter-second pause in between each key.
pyautogui.press('esc') # Simulate pressing the Escape key.
pyautogui.keyDown('shift')
pyautogui.write(['left', 'left', 'left', 'left', 'left', 'left'])
pyautogui.keyUp('shift')
pyautogui.hotkey('ctrl', 'c')
                  

Find flere funktioner på GitHub ↘

GitHub I/O

Input : text (str), coordinates (int)

Output : Screenshot (image) , mouseclicks, mouse movement, keyboard typing


Få info fra wikipedia

import wikipedia

chess = wikipedia.page("Chess")
print(chess.title)
print(chess.url)
print(chess.content)
                

Åben første billede fra wikipedia artikel


import wikipedia
import webbrowser

chess = wikipedia.page("Chess")
webbrowser.open(chess.images[0])
                

chess.images er en liste med alle billeder fra artiklen. Vi bruger [0] til at vælge første billede på listen.

Find flere funktioner på GitHub ↘

GitHub I/O

Input : article (str)


wiki = wikipedia.page('article')   # str input
                

Output : info (str)


wiki.title     # str
wiki.images    # list of image url str
wiki.images[0] # str url of first image
wiki.content   # str
                

ANILIST

Få info om animes

from AnilistPython import Anilist
anilist = Anilist()

info = anilist.get_anime("Owari no Seraph")
character = anilist.get_character("Pikachu")
print(info)
print(character)
                

Åben billede af character:


from AnilistPython import Anilist
import webbrowser
anilist = Anilist()

character = anilist.get_character("Pikachu")
webbrowser.open(character['image'])
                

Find flere funktioner på GitHub ↘

GitHub I/O

Input : anime title (str) , character name (str)

Output : info (dict) , image (url str)


Anime gifs

Få link til random anime gifs

from animegifs import animegifs

gifs = animegifs.Animegifs()
category = 'wave'  # find other valid categories on GitHub.
gif = gifs.get_gif(category) 
print(gif)
                

Kombinér med åben-link biblioteket:


from animegifs import animegifs
import webbrowser

gifs = animegifs.Animegifs()

gif = gifs.get_gif('wave') # replace wave with a valid category. Check GitHub for other.
webbrowser.open(gif)
                

Find flere categories på GitHub ↘

GitHub I/O

Input : category (str)

Output : image (url str)


🎨 billedredigering

Redigér billeder med PIL (Pillow)

from PIL import Image

im = Image.open("cat.gif")
                

Åben billede/gif (skal være i samme mappe som scriptet)


from PIL import Image

im1 = Image.open("im1.png")
im2 = Image.open("im2.png")
blended = Image.blend(im1, im2, alpha=0.5)
blended.save("blended.png")
                

Kombinér to billeder


from urllib.request import urlopen
from PIL import Image

url = 'https://craftapp.dk/images/pikachu-cute.gif'
img = Image.open(urlopen(url))
                  

Hent bilede fra link (url)

docs I/O

Input : image (file)

Output : image (file), info (int)


instagrapi


from instagrapi import Client

cl = Client()
cl.login(ACCOUNT_USERNAME, ACCOUNT_PASSWORD)

user_id = cl.user_id_from_username(ACCOUNT_USERNAME)
medias = cl.user_medias(user_id, 20)
                

Find flere funktioner på GitHub ↘

GitHub

reddit bot


reddit = praw.Reddit('bot1') # follow tutorial to setup 'bot1'

subreddit = r.subreddit("learnpython")

for submission in subreddit.hot(limit=5):
    print("Title: ", submission.title)
    print("Text: ", submission.selftext)
    print("Score: ", submission.score)
    print("---------------------------------\n")
                

Følg tutorial for at sætte op ↘

Tutorial

discord bot


import discord
from discord.ext import commands

intents = discord.Intents.default()
intents.message_content = True
bot = commands.Bot(command_prefix='!', intents=intents)

@bot.command()
async def ping(ctx):
    await ctx.send('pong')

bot.run('token') # follow tutorial to get token
                

Følg tutorial for at sætte op ↘

Tutorial

♟️ chess

Python Chess

import chess
board = chess.Board()

legalmoves = board.legal_moves
if chess.Move.from_uci('e2e4') in board.legal_moves:
    Move.from_uci('e2e4')
    
print(board.is_checkmate())
                

Find flere funktioner på GitHub ↘

GitHub

🎲 gamble

Bibliotek med diverse casino spil

import gamble

# create dice, defaults to 2 6-sided dice
dice = gamble.Dice()
r = dice.roll()
print(r)

deck = gamble.Deck()
card = deck.draw()
print(card)
                

Find flere funktioner på GitHub ↘

GitHub


API


Application Programming Interface

Det betyder kort sagt "der hvor 2 programmer mødes".

Vi bruger API'er til at styre andre programmer eller til at hente data.


https://cat-fact.herokuapp.com/facts

er et eksempel på det vi kalder et API-endpoint.

Prøv at åbne linket i din browser. Kan du finde hovede og hale i hjemmesiden?

Installér en JSON viewer extension til din browser og prøv igen.

Giver det bedre mening nu?


Data Eksempel

API'er giver information komprimeret og beregnet til at blive brugt i scripts.

Det kan vi f.eks. gøre med python sådan her:


import requests

api_url = 'https://cat-fact.herokuapp.com/facts'
response = requests.get(api_url)

if response.status_code == 200:
    data = response.json()
    print(data)
                

data vil være en liste af json objekter:


[
  {
    "status": {
          "verified": true,
          "sentCount": 1
    },
    "_id": "58e008780aac31001185ed05",
    "user": "58e007480aac31001185ecef",
    "text": "Owning a cat can reduce the risk of stroke and heart attack by a third.",
    "__v": 0,
    "source": "user",
    "updatedAt": "2020-08-23T20:20:01.611Z",
    "type": "cat",
    "createdAt": "2018-03-29T20:20:03.844Z",
    "deleted": false,
    "used": false
  }
]
                

Hvis vi vil hente det felt der indeholder dagens fact, kan vi gøre det med:


data[0]['text']
                

[0] for at vælge første json objekt i listen, og ['text'] for at hente værdien til feltet 'text'.

( Find MANGE andre åbne API'er her )

Bemærk at nogle API'er kræver en nøgle (API-key).

læs mere


inspiration


I/O Generator


Styr Philips Hue

Lav en cryptovaluta

3 små øvelser

Lav en Discord bot

Hent vejrdata

3 øvelser om automatisering


I / O

generator


click 🎲 to roll a random input/ouput combo

come up with an idea of how to combine them with code


rugbrødsopgaver

Start med at åbne VSCodium:


eller brug webterminalen:

Opret en ny fil til hver opgave, og navngiv den som opgavens titel.


myname.py
1. Lav en variabel med navnet fornavn og sæt den til en 'string' med dit fornavn.
2. Gør det samme med efternavn.
3. Print dit fulde navn til terminalen med en enkelt print(), og en sammensætning af de to variable
▶ Kør dit script
facit

quickmaths.py
1. Lav en variabel a og sæt den til 5.
2. Lav en variabel b og sæt den til 100.
3. Print a * b til terminalen
▶ Kør dit script

question.py
1. Lav en variabel answer og sæt den til input().
2. Indsæt en 'string' med et spørgsmål i input-funktionen.
3. Print answer til terminalen
▶ Kør dit script

mydice.py
1. Lav en variabel min og sæt den til det mindste tal på din terning (f.eks. 1)
2. Lav en variabel max og sæt den til det største tal på din terning
3. Lav en variabel roll og sæt den til et tilfældigt tal mellem min og max. HINT: Importér og brug randint().
4. Brug en if-statement til at tjekke om det højeste tal er rullet
5. Print 'CRITICAL HIT' til terminalen hvis det er
▶ Kør dit script

ifelse.py
1. Lav en variabel substring og sæt den til tre bogstaver
2. Lav en variabel sentence og sæt den til et par sætningers Malk de Koijn lyrics
3. Brug if-else og nøgleordet in til at tjekke om lyrics indeholder din substring.
HINT
▶ Kør dit script

myscript.py
Opfind selv et lille script der bruger både:
randint()
input()
if-else:
print()

looooooops.py
1. Brug for i in range(tal) til at lave et loop
2. Indsæt et print(i) i dit loop
3. Tjek at du har husket indentering og kolon
4. Få dit loop til at printe fra 0 til 9001!
▶ Kør dit script
(ekstra) Kan du få dit loop til at tælle nedad i stedet?

randomloop.py
Brug et loop og random() til at printe 100 tilfældige tal
▶ Kør dit script

inputloop.py
Opfind et script der bruger både:
input()
for-loop:
if-else:
HINT: Det er sjovest med input() inde i loopet
▶ Kør dit script

invention.py
Generér en kombination af input og output med værktøjet i "Inspiration"-menuen.
Prøv at kode et script der bruger det input og output du har genereret.
Er det muligt?
▶ Kør dit script


( cheatsheet )
...