"En **streng** kan sees på som en sekvens av tegn (characters) som ligger på hver sin gitte plass. Strenger har dermed mange av de samme egenskapene som lister som vi skal se på under."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"min_streng = \"Hei, jeg heter Vilde\""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"For å aksessere elementene i strengen benytter vi indeksering. Indeksen forteller hvilken \"plass\" vi er på i strengen på samme måte som vi så med lister forrige uke. Den første indeksen i strengen er 0 og den siste er *antall elementer - 1*. Det vil si at det første elementet i `min_streng`, `'H'`, kan hentes ut slik:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"min_streng[0]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Det siste elementet av `min_streng` kan hentes ut slik: "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"min_streng[-1] "
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"På samme måter som med lister, kan man også benytte **slicing** for å hente ut en del av strengen. I kodenblokken under henter vi ut de første 4 charactersene av `min_streng`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"min_streng[0:4]"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Test deg frem med strenger selv\n",
"Kodeblokken under er lagt til for at du skal kunne leke deg litt frem med strenger selv. Gjerne kombiner det med konsepter du har lært tidligere som if-setninger, løkker og funksjoner."
"NumPy er en modul som gir oss lister som er mye mer effektive enn Python sine innebygde lister. I tillegg har NumPy mye funksjonalitet for liste- og matriseoperasjoner. Derfor er det kjempenyttig å ha kjennskap til NumPy hvis man jobber med store datamengder og/eller skal gjøre en del operasjoner på lister. Slike arbeidsområder er for eksempel matematikk, fysikk, kunstig intelligens, finans og data-analyse."
]
},
{
"cell_type": "markdown",
"metadata": {
"hidden": true
},
"source": [
"Vi importerer numpy som følgende, og refererer til det ved hjelp av `np`"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true,
"hidden": true
},
"outputs": [],
"source": [
"import numpy as np"
]
},
{
"cell_type": "markdown",
"metadata": {
"hidden": true
},
"source": [
"Kodeblokken under viser hvordan en liste kan opprettes med innebygde lister i Python, og hvordan en tilsvarende liste kan opprettes som en NumPy-array."
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true,
"hidden": true
},
"outputs": [],
"source": [
"# Oppretting a vanlige lister\n",
"liste = [1, 2, 3, 4, 5, 6]\n",
"\n",
"\n",
"# Oppretting av numpy array\n",
"import numpy as np\n",
"array = np.array([1, 2, 3, 4, 5, 6])"
]
},
{
"cell_type": "markdown",
"metadata": {
"hidden": true
},
"source": [
"## Test deg frem med NumPy selv\n",
"Kodeblokken under er lagt til for at du skal kunne leke deg litt frem med NumPy-arrays selv. "
"Du skal lage en funksjon som går gjennom listen weatherData og skriver ut\n",
"* Antall dager i perioden (Dvs. antall lister i weatherData)\n",
"* Total nedbørsmengde i perioden \n",
"* Høyeste temperatur og dagen denne forekom\n",
"* Laveste temperatur og dagen denne forekom \n",
"\n",
"*`weatherData`:*\n",
"* weatherData er en liste med lister i (matrise), hvor hver liste i weatherData er på formatet `[maximumstemperatur, minimumstemperatur, nedbørsmengde]`\n",
"* Den første lista i weatherData, dvs. `weatherData[0]` er vær-data for dag 1, den andre lista i weatherData, dv `weatherData[1]` er værdata for dag 2 osv. \n",
"\n",
"\n",
"*Hint:* Konsentrer deg om ett av punktene over om gangen, lagre informasjonen i variabler og skriv ut informasjonen til slutt.\n",
" \n",
" "
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true,
"hidden": true
},
"outputs": [],
"source": [
"def weatherStats(weatherData):\n",
" # Regner ut antall dager i perioden og lagre resultatet i variabelen n_days\n",
" n_days = len(weatherData)\n",
" \n",
" \n",
" # Regner ut total nedbørsmengde og lagre resultatet i variabelen rain\n",
" rain = 0 \n",
" \n",
" # Itererer gjennom dagene i weatherData\n",
" for i in range(n_days):\n",
" \n",
" # weatherData[i] er en liste med [maxtemp, mintemp, nedbørsmengde] for dag i\n",
" # dvs. at weatherData[i][2] gir nedbørsmengde for dag i \n",
" \n",
" rain += weatherData[i][2]\n",
"\n",
" \n",
" # Finn høyeste temperatur og dagen denne forekom og lagre i de respektive variablene max_temp og max_day\n",
" # Finn laveste temperatur og dagen denne forekom og lagre i de respektive variablene min_temp og min_day\n",
" \n",
" max_temp = weatherData[0][0] # maximumstemperatur for dag 1\n",
" max_day = 1\n",
" \n",
" min_temp = weatherData[0][1] # minimumstemperatur for dag 1\n",
" min_day = 1\n",
" \n",
" \n",
" # itererer gjennom hver dag i weatherData for å sjekke om dag i har lavere temp en min_temp eller høyere temp en max_temp\n",
" for i in range(n_days):\n",
" \n",
" if weatherData[i][0] > max_temp:\n",
" max_temp = weatherData[i][0]\n",
" max_day = i + 1\n",
" \n",
" \n",
" if weatherData[i][1] < min_temp:\n",
" min_temp = weatherData[i][1]\n",
" min_day = i + 1\n",
" \n",
" \n",
"\n",
" \n",
" \n",
" ########## Koden din slutter her ###########\n",
" # Printer sammendrag \n",
" print(\"There are\", n_days, \"in the period\")\n",
" print(\"The highest temperature was\", max_temp, \"on day number\", max_day)\n",
" print(\"The lowest temperature was\", min_temp, \"on day number\", min_day)\n",
" print(\"There was a total of\", round(rain,2) , \"mm rain in the period\")\n",
" \n",
" ## NB: Merk at det i den originale notebooken var en error i denne koden på linje 49. Der stod det nedbør, som skal være rain\n",
"*Du skal på butikken for moren din og har fått beskjed om å huske alle gjenstandene du skal kjøpe med.* <br><br>\n",
"\n",
"Du har gitt en liste, `handleliste`som sier gjenstandene du skal kjøpe, og en liste `priser` som gir prisene til alle elementene i handlelisten. Det vil si at prisen til `handleliste[i]`er gitt av `priser[i]`hvor `i` er indeksen (plassen) til elementet i listene."
"b) Lag en funksjon, `har_råd_til` som tar inn en handleliste og pris-liste. Funksjonen skal returnere en ny liste med elementer og en liste korresponderende priser som du har råd til hvis du har totalt 100 kr. <br><br>\n",
"*Hint:*\n",
"* Du trenger ikke tenke på rekkefølgen til elementene, men fjern det bakerste elementet så lenge summen er større enn 100.\n",
"* Bruk en while-løkke \n",
"* sum(liste) returnerer summen av alle elementene i liste\n",
"* liste.pop(indeks) fjerner elementet på indeks i liste"
"b) Lag en numpy-matrise (dvs. liste med lister i) på størrelse 3 x 3 ( 3 rader og 3 kolonner ) med enere i første rad, toere i andre rad og treere i tredje rad. Deretter lag en for-løkke som itererer gjennom matrisen og printer ut hver rad.\n",
"Lag en funksjon `check_equal_lenght` som tar inn to strenger, `string1` og `string2`, som sjekker om strengene er like lange. Den skal returnere `True` dersom strengene er like lange, og `False` ellers"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"False\n"
]
}
],
"source": [
"def check_equal_length(string1, string2):\n",
" return len(string1) == len(string2)\n",
"\n",
"a = \"streng\"\n",
"b = \"blablabla\"\n",
"\n",
"print(check_equal_length(a, b))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Oppgave 4 - Strenger"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"* Lag en funksjon som tar inn to ord og sjekker om de tre første bokstavene i ordene er like (ikke sensitivt for store/små bokstaver)\n",
"* Returner `True` hvis de tre første bokstavene er like, `False` ellers\n",
"* `«Fotball»` og `«fotografi»` skal i dette tilfellet gi `True`"
"Dobbeltklikk på blokken under for å skrive svaret ditt."
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"SVAR:"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"# Denne kodeblokken kan du bruke til å kladde"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Oppgave 6 - Strenger"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Lag en funksjon `funny_word` som tar inn inputparameteren `word`. `funny_word` skal bytte alle vokalene i `word` med en ny tilfeldig vokal. <br> <br>\n",
"*Hint*\n",
"* vokaler = `['a','e','i','o','u’]`, `for char in word:`, `if char in vokaler:` "
" if første_tre_like(morsomt_ord, morsomt_ord2):\n",
" print(f\"{morsomt_ord} og {morsomt_ord2} har de samme første tre bokstavene\")\n",
" \n",
"main()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.3"
}
},
"nbformat": 4,
"nbformat_minor": 2
}
%% Cell type:markdown id: tags:
# Øvingsforelesning 7
%% Cell type:markdown id: tags:
# Strenger
%% Cell type:markdown id: tags:
## Forklaring av Strenger
En **streng** kan sees på som en sekvens av tegn (characters) som ligger på hver sin gitte plass. Strenger har dermed mange av de samme egenskapene som lister som vi skal se på under.
%% Cell type:code id: tags:
``` python
min_streng="Hei, jeg heter Vilde"
```
%% Cell type:markdown id: tags:
For å aksessere elementene i strengen benytter vi indeksering. Indeksen forteller hvilken "plass" vi er på i strengen på samme måte som vi så med lister forrige uke. Den første indeksen i strengen er 0 og den siste er *antall elementer - 1*. Det vil si at det første elementet i `min_streng`, `'H'`, kan hentes ut slik:
%% Cell type:code id: tags:
``` python
min_streng[0]
```
%% Cell type:markdown id: tags:
Det siste elementet av `min_streng` kan hentes ut slik:
%% Cell type:code id: tags:
``` python
min_streng[-1]
```
%% Cell type:markdown id: tags:
På samme måter som med lister, kan man også benytte **slicing** for å hente ut en del av strengen. I kodenblokken under henter vi ut de første 4 charactersene av `min_streng`
%% Cell type:code id: tags:
``` python
min_streng[0:4]
```
%% Cell type:markdown id: tags:
## Test deg frem med strenger selv
Kodeblokken under er lagt til for at du skal kunne leke deg litt frem med strenger selv. Gjerne kombiner det med konsepter du har lært tidligere som if-setninger, løkker og funksjoner.
NumPy er en modul som gir oss lister som er mye mer effektive enn Python sine innebygde lister. I tillegg har NumPy mye funksjonalitet for liste- og matriseoperasjoner. Derfor er det kjempenyttig å ha kjennskap til NumPy hvis man jobber med store datamengder og/eller skal gjøre en del operasjoner på lister. Slike arbeidsområder er for eksempel matematikk, fysikk, kunstig intelligens, finans og data-analyse.
%% Cell type:markdown id: tags:
Vi importerer numpy som følgende, og refererer til det ved hjelp av `np`
%% Cell type:code id: tags:
``` python
importnumpyasnp
```
%% Cell type:markdown id: tags:
Kodeblokken under viser hvordan en liste kan opprettes med innebygde lister i Python, og hvordan en tilsvarende liste kan opprettes som en NumPy-array.
%% Cell type:code id: tags:
``` python
# Oppretting a vanlige lister
liste=[1,2,3,4,5,6]
# Oppretting av numpy array
importnumpyasnp
array=np.array([1,2,3,4,5,6])
```
%% Cell type:markdown id: tags:
## Test deg frem med NumPy selv
Kodeblokken under er lagt til for at du skal kunne leke deg litt frem med NumPy-arrays selv.
# Gjennomgang av oppgave 3 fra øvingsforelesning 6
## Oppgave 3: Eksamensoppgave Høst 2014
%% Cell type:markdown id: tags:
<imgsrc="E2014-3.jpg"style="width: 750px;">
%% Cell type:markdown id: tags:
<imgsrc="E2014-3a.jpg"style="width: 750px;">
%% Cell type:markdown id: tags:
<br><br>
**Sammendrag av oppgaven over:**<br>
Du skal lage en funksjon som går gjennom listen weatherData og skriver ut
* Antall dager i perioden (Dvs. antall lister i weatherData)
* Total nedbørsmengde i perioden
* Høyeste temperatur og dagen denne forekom
* Laveste temperatur og dagen denne forekom
*`weatherData`:*
* weatherData er en liste med lister i (matrise), hvor hver liste i weatherData er på formatet `[maximumstemperatur, minimumstemperatur, nedbørsmengde]`
* Den første lista i weatherData, dvs. `weatherData[0]` er vær-data for dag 1, den andre lista i weatherData, dv `weatherData[1]` er værdata for dag 2 osv.
*Hint:* Konsentrer deg om ett av punktene over om gangen, lagre informasjonen i variabler og skriv ut informasjonen til slutt.
%% Cell type:code id: tags:
``` python
defweatherStats(weatherData):
# Regner ut antall dager i perioden og lagre resultatet i variabelen n_days
n_days=len(weatherData)
# Regner ut total nedbørsmengde og lagre resultatet i variabelen rain
rain=0
# Itererer gjennom dagene i weatherData
foriinrange(n_days):
# weatherData[i] er en liste med [maxtemp, mintemp, nedbørsmengde] for dag i
# dvs. at weatherData[i][2] gir nedbørsmengde for dag i
rain+=weatherData[i][2]
# Finn høyeste temperatur og dagen denne forekom og lagre i de respektive variablene max_temp og max_day
# Finn laveste temperatur og dagen denne forekom og lagre i de respektive variablene min_temp og min_day
max_temp=weatherData[0][0]# maximumstemperatur for dag 1
max_day=1
min_temp=weatherData[0][1]# minimumstemperatur for dag 1
min_day=1
# itererer gjennom hver dag i weatherData for å sjekke om dag i har lavere temp en min_temp eller høyere temp en max_temp
foriinrange(n_days):
ifweatherData[i][0]>max_temp:
max_temp=weatherData[i][0]
max_day=i+1
ifweatherData[i][1]<min_temp:
min_temp=weatherData[i][1]
min_day=i+1
########## Koden din slutter her ###########
# Printer sammendrag
print("There are",n_days,"in the period")
print("The highest temperature was",max_temp,"on day number",max_day)
print("The lowest temperature was",min_temp,"on day number",min_day)
print("There was a total of",round(rain,2),"mm rain in the period")
## NB: Merk at det i den originale notebooken var en error i denne koden på linje 49. Der stod det nedbør, som skal være rain
*Du skal på butikken for moren din og har fått beskjed om å huske alle gjenstandene du skal kjøpe med.*<br><br>
Du har gitt en liste, `handleliste`som sier gjenstandene du skal kjøpe, og en liste `priser` som gir prisene til alle elementene i handlelisten. Det vil si at prisen til `handleliste[i]`er gitt av `priser[i]`hvor `i` er indeksen (plassen) til elementet i listene.
a) Lag en funkjson `print_handleliste` som printer ut handleliste-elementet med korresponderende pris med `:` mellom og `'kr'` på slutten.
%% Cell type:code id: tags:
``` python
defprint_handleliste(navneliste,prisliste):
iflen(navneliste)!=len(prisliste):
print("Listene må være like lange")
return
foriinrange(len(navneliste)):
print(navneliste[i]+": "+str(prisliste[i])+" kr")
print_handleliste(handleliste,priser)
```
%% Output
Melk: 17 kr
Bananer: 5 kr
Brus: 25 kr
Rundstykker: 15 kr
Godteri: 55 kr
Bønner: 10 kr
Nøtter: 30 kr
%% Cell type:markdown id: tags:
b) Lag en funksjon, `har_råd_til` som tar inn en handleliste og pris-liste. Funksjonen skal returnere en ny liste med elementer og en liste korresponderende priser som du har råd til hvis du har totalt 100 kr. <br><br>
*Hint:*
* Du trenger ikke tenke på rekkefølgen til elementene, men fjern det bakerste elementet så lenge summen er større enn 100.
* Bruk en while-løkke
* sum(liste) returnerer summen av alle elementene i liste
* liste.pop(indeks) fjerner elementet på indeks i liste
b) Lag en numpy-matrise (dvs. liste med lister i) på størrelse 3 x 3 ( 3 rader og 3 kolonner ) med enere i første rad, toere i andre rad og treere i tredje rad. Deretter lag en for-løkke som itererer gjennom matrisen og printer ut hver rad.
<br>
*Hint:*
* np.array-funksjonen kan også ta inn matriser
%% Cell type:code id: tags:
``` python
mat=np.array([[1,1,1],[2,2,2],[3,3,3]])
rep=np.repeat(7,15)
print(rep)
forradinmat:
print(rad)
```
%% Output
[7 7 7 7 7 7 7 7 7 7 7 7 7 7 7]
[1 1 1]
[2 2 2]
[3 3 3]
%% Cell type:markdown id: tags:
## Oppgave 3 - Strenger
%% Cell type:markdown id: tags:
Lag en funksjon `check_equal_lenght` som tar inn to strenger, `string1` og `string2`, som sjekker om strengene er like lange. Den skal returnere `True` dersom strengene er like lange, og `False` ellers
%% Cell type:code id: tags:
``` python
defcheck_equal_length(string1,string2):
returnlen(string1)==len(string2)
a="streng"
b="blablabla"
print(check_equal_length(a,b))
```
%% Output
False
%% Cell type:markdown id: tags:
## Oppgave 4 - Strenger
%% Cell type:markdown id: tags:
* Lag en funksjon som tar inn to ord og sjekker om de tre første bokstavene i ordene er like (ikke sensitivt for store/små bokstaver)
* Returner `True` hvis de tre første bokstavene er like, `False` ellers
*`«Fotball»` og `«fotografi»` skal i dette tilfellet gi `True`