Python Flashcards

1
Q

Förklara slices.

A
# 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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Förklara lists, tuples, dictionaries.

A

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)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Hur fungerar “in” och “ not in” operators?

A

output:

svarar med booleansk värde (True, False))
t.ex.

alphabet = “abcdefghijklmnopqrstuvwxyz”
print(“f” in alphabet)
print(“F” in alphabet)

True
False

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Vad är skillnad mellan method och function?

A
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
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Hur kan jag se till att ett ord hamnar i mitten på ett visst antal tecken?

A
  • med .center() methoden:
# Demonstrating the center() method:
print('[' + 'alpha'.center(10, "*") + ']')
# output:
[**alpha***]
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Vilka två sorters programmeringsspråk finns det och vilken tillhör Python?

A

kompilerade och tolkade/interpreterade

Python är interpreterad (den behöver Python-tolken för att köras)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Vad kallas strängar som går över flera rader?

A

docstrings

Använd trippla enkel- eller dubbelcitationstecken.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Vilka är de operatorer som inte tillhör de fyra vanliga räknesätten?

A
// 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)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Vilka vanliga klasser/typer finns det?

A
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)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Hur importerar man en modul i Python?

A
import modulnamn
(OBS: måste göras innan den används, gärna i början av skriptet)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Vad är ett keyword?

A

ord som inte kan användas som variabel, då det är reserverad

t.ex. “for”, “import” eller “not”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

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

a) break

b) continue

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Vad änvänds om jag vill lämna en del tom utan att få ett felmeddelande?

A

pass (används när kod testas eller byggs på)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Vad använder jag om jag vill använda platshållare, dvs. måsvingar med variabler i?

A

f-strings
t.ex.:
minvariabel = 3.456
print(f’Den valda variabeln är {minvariabel}’)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Hur gör du för att lista alla de metoder som är möjliga att använda med en variabel?

A

Variabelnamn + punkt + tab

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Vilken Python-version körs på bettan?

A

3.8

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Vad är REPL?

A

Read-Evaluate-Print-Loop

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Vad behöver du skriva i början av skriptet?

A
Shebang:
#!/usr/bin/python3
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

vad måste jag göra med scriptfilen för att den ska kunnas köras?

A

chmod +x filnamn

sedan kan den köras med ./filnamn

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Är Pythons variabler typade eller otypade?

A

Python använder typade variabler. Typningen sker automatiskt.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Hur lämnar jag Pythpon3-tolken?

A

> > > quit()

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Vad heter det när man ändrar typ på en variabel?

A

typecasting eller typkonvertering
t.ex.:
variabel1 = 1 #sparar en integer
variabel1 = str(variabel1) #ändrar int till string

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Vilken typ innehåller en variabel som skapas genom division av två tal?

A

float
t.ex.:
variabel2 = 2/2 # innehållet i variabeln blir då 1.0

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Hur markerar jag en sträng?

A

omges av ‘ ‘ eller “ “ eller “”” “”” (det sista tillåter en längre sträng med radbrytningar)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

Hur läser jag in tangentbordstryckningar?

A

input()
t.ex.:
input(“Skriv något och avsluta med Enter:”)

26
Q

Hur kan man jämföra värden i Python?

A
==  lika med
!=  inte lika med
>  större än
<  mindre än
>=  större än eller lika med
<=  mindre än eller lika med
27
Q

Vad kallas den “optiska” markering som visar att koden i ett kodblock hör ihop?

A

indentering

OBS: jätteviktigt att indenteringen är exakt samma i samma kodblock, t.ex. fyra mellanslag

28
Q

Hur fungerar en if-sats?

A
if villkor:
    kodblock
(elif villkor:)
(    kodblock)
else:
    kodblock
29
Q

Hur fungerar en for loop?

A

exekverar kodblocken för x antal gånger:

fox x in range(1,5)
kodblock

30
Q

Hur fungerar en while loop?

A
exekverar kodblocken så länge ett villkor är satt som True
t.ex.:
while x < 5
    print(x)
    x += 1
31
Q

Vad heter rekommendationen för att göra Python-koden läsbar?

A

PEP8

t. ex.:
- max 79 tecken på en rad
- 4 mellanslag som indentering

32
Q

Vad är en funktion?

A
  • 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
33
Q

Vad är skillnaden mellan lokala och globala variabler?

A

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”
34
Q

Vilken terminologi finns det inom objektorientering?

A
  • 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
35
Q

Vad är moduler?

A
  • 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
36
Q

Hur läsar jag in argument/optioner/parametrar som ett script startades med?

A
  • -> sys.argv

- -> modulen sys används för att läser in hur skriptet startades. Argumenten finns sedan i sys.argv

37
Q

Vad kan du om felhantering i Python?

A
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
38
Q

Hur hanterar Python filer?

A

–> 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
39
Q

Hur hanterar Python webbtrafik?

A
  • 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

40
Q

Hur fungera nc (netcat)?

A

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

41
Q

Hur ser jag till att ett modul körs endast om det används fristående och inte importerad i ett annat script?

A

if __name__ == “__main__”:
kodblocken körs bara om
modulen körs fristående

42
Q

Hur visar nc tcp-handskakningen?

A

[s] #syn
[s.] #synack
[.] #ack

43
Q

Vilken version av nc använde vi för att kunna få shell-access?

A

netcat-traditional

44
Q

Vad används socket till och hur konfigureras det?

A

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)

45
Q

Förklara function:

A
  • 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
46
Q

Förklara class:

A
  • 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
47
Q

Förklara class variable:

A
  • variabel som är definierad i en klass

- t.ex. förnamn, efternamn, ålder

48
Q

Förklara object:

A
  • unik instans av en specifik klass

- t.ex. “Nisse” är object av klassen “student”

49
Q

Förklara method:

A
  • 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
50
Q

Vad används sys.argv till?

A
  • det är en lista med argumenten som scriptet startades med: ./script argument
  • kräver import sys
51
Q

Vad är en RuntimeError?

A
  • Python vet vad den ska göra, men det går inte.
52
Q

Vad gäller för import av egna moduler?

A
- 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
53
Q

Hur kan jag öppna ett bash-skal med netcat?

A
  • 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
54
Q

Hur lägger jag till en radbrytning?

A

“\r\n”

55
Q

vad kallas detta och vad är det till för?

\

A
  • 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 “
56
Q

I följande kod, vad står AF_INET respektive SOCK_STREAM för?

s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)

A
  • AF_INET står för IPv4

- SOCK_STREAM står för TCP

57
Q

Hur fungerar requests?

A

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

58
Q

Hur lägger jag till ett värde i en lista?

A

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

59
Q

Vilka delar kan ingå i en try-sats?

A
try:
    run this code
except:
    execute this code when there is an exception
else:
    no exceptions? run this code
finally:
    always run this code
60
Q

Vad heter formatet som markeras med b’ tecken ‘ (utan mellanslag)?

A

Bytes

Kan konverteras till läsbart med metoden .decode(“utf-8”)