# Nicolas
# Python eksamensforberedelse
## List
#### Beskrivelse:
List er en af de 4 standard data structioers i Python. (Set, Tupler, Dicts)
Lister er ordered og mutable datastructurer, der kan indholder flere forskellige typer af data.
Ofte brugte fucntioner i forbindelse med lister:
.append()
.sort()
Ofte brugte fucntioner i forbindelse med sets:
.union()
.intersection()
.difference()
.symmetric_differenc()
#### Eksempel:
```Python
List = [2, 1 ,3]
>List
out: [2, 1 ,3
List.append(4)
out: [2, 1 ,3, 4]
List.sort()
out: [1, 2 ,3, 4]
#Indexing finding position 1 starting from 0.
List[1]
out: 2
#Indexing with negatives, finds from the last position of the list first.
List[-2]
out: 3
#Finds postion 0 to 1 in List
List[0:1]
out: [1,2]
#Finding every second index, in the list.
List[::2]
out: [2, 4]
#Tuples:
tuple = (2, 3, 5)
#Tuples are immutable, and therefor are locked in size and content when first
created.
#Dictonaries
numbers = {'one':1, 'two':2, 'three':3}
#Comma seperated lsit with key:value pairs
numbers['two']
out: 2
numbers['eighty'] = 80
numbers
out: {'one':1, 'two':2, 'three':3, 'eigthy':80}
#sets
set1 = {"hej", "dig"}
set2 = {"med" "er", "du", "dig"}
# union: items appearing in either
set1 | set2 # with an operator
set2.union(set1) # equivalently with a method
out: {"hej", "med", "dig", "er", "du", "dig"}
# intersection: items appearing in both
set1 & set2 # with an operator
set2.intersection(set1) # equivalently with a method
out: {"dig"}
# difference: items in set1 but not in set2
set1 - set2 # with an operator
set2.difference(set1) # equivalently with a method
out: {"hej"}
# symmetric difference: items appearing in only one set
set1 ^ set2 # with an operator
set1.symmetric_difference(set2) # equivalently with a method
out: {"hej", "med", "er", "du"}
```
## Loops
#### Beskrivelse:
Der findes to forskellige loops i python:
##### While
While bliver brugt til at gentage en blok kode, indtil en bestemt betingelse er mødt
##### For
For loop bruges til at løbe over elementer, dette bruges ofte til at køre over et stykke kode "n" antal gange.
#### Eksempel:
```
count = 0
while count < 5:
print(count)
count += 1
out: 0 1 2 3 4
for n in range(5)
print(n)
out: 0 1 2 3 4
```
## Conditional statements
#### Beskrivelse:
Bedre beskrevet som if, else og else if(elif)
#### Eksempel:
```
if number == 0:
print(number, "is zero")
elif number > 0:
print(number, "is positive")
elif number < 0:
print(number, "is negative")
elif:
```
## Functions
#### Beskrivelse:
Funktioner kan blive brugt til at køre flere blokke koder og kan blive kaldt flere gange. Hvilket også kan gøre kode mere læsbart.
Funktioner bliver defineret ved brug af det og paranteser.
#### Eksempel:
```
def myFunction(list):
for n len(list):
print(n)
p = [1, 2, 3, 4, 5]
myFunction(p)
out: 1 2 3 4 5
```
## Modules
#### Beskrivelse:
Moduler bliver brugt fra en tredje parts udbyder eller en af pythons egne.
Man kan også lave sit eget modul, simpelt ved bare at bruge pythons import statements.
Disse kan bruges på forskellige måder:
#### Eksempel:
```
#Import as to create a shorter alias
import numpy as np
#From so ypu can pick particular funtions from a module
from math import pi
#From with * imports erverything
from tensorflow import *
```
## Dicts
#### Beskrivelse:

#### Eksempel:
```
```
## Files
#### Beskrivelse:
Python har et standard funktion ved navn open, som har forskellige valg muligheder for fil håndtering, første parameter den tager imod er fil placeringen, og anden er håndteringen.
`"r"` - Read - Default value. Opens a file for reading, error if the file does not exist
`"a"` - Append - Opens a file for appending, creates the file if it does not exist
`"w"` - Write - Opens a file for writing, creates the file if it does not exist
`"x"` - Create - Creates the specified file, returns an error if the file exists
Derudover har man muligheden for at sætte en ekstra håndtering på lige efter:
`"t"` - Text - Default value. Text mode
`"b"` - Binary - Binary mode (e.g. images
#### Eksempel:
```
#Only with one extra handler as read
f = open("demofile.txt", "r")
#With to handlers read and text
file = open("demofile.txt", "rt")
```
## CLI - Command Line Interface
#### Beskrivelse:
I python har man muligheden for at skrive sit script med argparser så man kan køre sit script med argumenter i CLI.
#### Eksempel:
```
# myls.py
# Import the argparse library
import argparse
import os
import sys
# Create the parser
my_parser = argparse.ArgumentParser(description='List the content of a folder')
# Add the arguments
my_parser.add_argument('Path',
metavar='path',
type=str,
help='the path to list')
# Execute the parse_args() method
args = my_parser.parse_args()
input_path = args.Path
if not os.path.isdir(input_path):
print('The path specified does not exist')
sys.exit()
print('\n'.join(os.listdir(input_path)))
```
## Object Orientet
#### Beskrivelse:
I objekt orienteret programmering skriver man klasser som repræsentere virklige ting, som kan have forskelligt indhold funktioner osv.
At lave et objekt fra en klasse kalder man instatiation, og du arbejder derfor med en inctance af klassen.
For at kunne gøre brug af sin klasse skal man have en __init__() som sørger for at initialisere koden så den er klar til brug:
```
class Person:
def __init__(self, firstname, lastname, age):
self.firstname = firstname
self.lastname = lastname
self.age = age
person = Person("John", "Doe", 36)
```
Derudover skal man lave en __ str__ for at kunne få inputtet ud pænt istedet for en ram plads. Og så er der en del andre data modeller som også burde implementeres, heldigvis i python 3.9 blev der introduceret Dataclasses, de kan gøre overstående plus nemt implementere det krævede str og eq osv osv sådan her:
```
from dataclasses import dataclass
@dataclass
class Person:
firstname: str
lastname: str
age: int
person = Person("Johnny", "Does", 39)
```
#### Eksempel:
```
```
## Exceptions
#### Beskrivelse:

Der kan bruges forskellige kombinationer til at lave exeptions, men det er dog vigtigt at man lige overvejer hvor og hvordan koden du skriver laver fejl, så hvis du skriver din egen bruger defineret fejl, kan den i teorien bliver vist kaldt selvom det ikke er den præcise fejl der sker.
Eksemplet nedenunder undgår dette ved en else.
#### Eksempel:
```
try:
linux_interaction()
except AssertionError as error:
print(error)
else:
try:
with open('debug.log') as file:
read_data = file.read()
except FileNotFoundError as fnf_error:
print(fnf_error)
finally:
print('going home')
x = 10
if x > 5:
raise Exception('x should not exceed 5. The value of x was: {}'.format(x))
```
## Intro til plotting
#### Beskrivelse:
Modulet mathplotlip har muligheden for at plotte data.
Dette kan den gøres med funktionen .plot()
#### Eksempel:
```
import matplotlib.pyplot as plt
plt.plot([1, 2, 3, 4], [1, 4, 2, 3])
plt.show()
```
## Intro til numpy
#### Beskrivelse:
Numpy er et python bibliotek som sætter sig stærkt i multidimensionelle arrays, hvor det indeholder en masse funktioner som gør det hurtigere og nemmere at udføre kode omhandlende arrays, alt fra linær algebra til tilfældige simulationer.
#### Eksempel:
```
>>> a = np.arange(6) # 1d array
>>> print(a)
[0 1 2 3 4 5]
>>>
>>> b = np.arange(12).reshape(4,3) # 2d array
>>> print(b)
[[ 0 1 2]
[ 3 4 5]
[ 6 7 8]
[ 9 10 11]]
>>>
>>> c = np.arange(24).reshape(2,3,4) # 3d array
>>> print(c)
[[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]]
[[12 13 14 15]
[16 17 18 19]
[20 21 22 23]]]
```
## plotting Cntd.
#### Beskrivelse:
#### Eksempel:
```Python
function test() {
console.log("look ma’, no spaces");
}
```
## intro til pandas
#### Beskrivelse:
Pandas er bygget på Numpy og er derfor også et bibliotek som har nogle super fede funktioner til at sortere og manipulere 1D og 2D arrays.
Som hedder 1d series og 2d Dataframe
#### Eksempel:
```
```
## Multiprocessing
#### Beskrivelse:
#### Eksempel:
```Python
function test() {
console.log("look ma’, no spaces");
}
```
## Generators
#### Beskrivelse:
#### Eksempel:
```Python
function test() {
console.log("look ma’, no spaces");
}
```
## Requests
#### Beskrivelse:
#### Eksempel:
```Python
function test() {
console.log("look ma’, no spaces");
}
```
## Webscraping basics
#### Beskrivelse:
#### Eksempel:
```Python
function test() {
console.log("look ma’, no spaces");
}
```
## Regular expression
#### Beskrivelse:
#### Eksempel:
```Python
function test() {
console.log("look ma’, no spaces");
}
```
## Selenium
#### Beskrivelse:
#### Eksempel:
```Python
function test() {
console.log("look ma’, no spaces");
}
```
## Feature Spaces
#### Beskrivelse:
#### Eksempel:
```Python
function test() {
console.log("look ma’, no spaces");
}
```
## Neural Networks
#### Beskrivelse:
#### Eksempel:
```Python
function test() {
console.log("look ma’, no spaces");
}
```