Lagt till kapitel 8
This commit is contained in:
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
*.txt
|
||||||
|
*.p
|
41
kapitel8/alice-ver1.py
Normal file
41
kapitel8/alice-ver1.py
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
# Skapa en ordlista som ska användas för att räkna ord
|
||||||
|
rakna = dict()
|
||||||
|
|
||||||
|
# Öppna filen med open, läs in innehållet till 'innehall'
|
||||||
|
# och byt ut tecknen ,.' mot mellanslag. Gör sen om
|
||||||
|
# allt till små bokstäver
|
||||||
|
fil = open("alice.txt")
|
||||||
|
innehall = fil.read()
|
||||||
|
innehall = innehall.replace(",", " ").replace(".", " ")\
|
||||||
|
.replace("'", " ").lower()
|
||||||
|
|
||||||
|
# Dela upp hela innehållet i enstaka ord i en lista
|
||||||
|
ord = innehall.split()
|
||||||
|
|
||||||
|
# Loopa igenom ord för ord. Om ordet inte redan finns
|
||||||
|
# i 'rakna' läggs det in och sätts till 1. Om det
|
||||||
|
# redan finns, addera med 1.
|
||||||
|
for o in ord:
|
||||||
|
if (o not in rakna):
|
||||||
|
rakna[o] = 1
|
||||||
|
else:
|
||||||
|
rakna[o] = rakna[o] + 1
|
||||||
|
|
||||||
|
# Vänd på nyckel och värde
|
||||||
|
omvand = dict()
|
||||||
|
for k, v in rakna.items():
|
||||||
|
omvand[v] = k
|
||||||
|
|
||||||
|
# Sortera i omvänd ordning
|
||||||
|
sorterad = sorted(omvand.items(), reverse=True)
|
||||||
|
|
||||||
|
# Skriv ut de 10 mest frekventa orden och hur
|
||||||
|
# hur många gånger de förekommer
|
||||||
|
hogsta = 0
|
||||||
|
for i, j in sorterad:
|
||||||
|
print(j, "\t", i)
|
||||||
|
hogsta = hogsta + 1
|
||||||
|
if hogsta == 10:
|
||||||
|
break
|
36
kapitel8/alice-ver2.py
Normal file
36
kapitel8/alice-ver2.py
Normal file
@@ -0,0 +1,36 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
# Skapa en ordlista som ska användas för att räkna ord
|
||||||
|
rakna = dict()
|
||||||
|
|
||||||
|
# Öppna filen med open, läs in innehållet till 'innehall'
|
||||||
|
# och byt ut tecknen ,.' mot mellanslag samt gör om allt
|
||||||
|
# till små bokstäver.
|
||||||
|
fil = open("alice.txt")
|
||||||
|
innehall = fil.read().replace(",", " ").replace(".", " ")\
|
||||||
|
.replace("'", " ").lower()
|
||||||
|
|
||||||
|
# Dela upp hela innehållet i enstaka ord i en lista
|
||||||
|
ord = innehall.split()
|
||||||
|
|
||||||
|
# Loopa igenom ord för ord, om ordet inte redan finns lägg
|
||||||
|
# in ordet, sätt standardvärde 0 och addera 1. Om ordet
|
||||||
|
# redan finns, addera bara 1 till ordet.
|
||||||
|
for o in ord:
|
||||||
|
rakna[o] = rakna.get(o, 0) + 1
|
||||||
|
|
||||||
|
# Specialfunktion som gör att nyckeln hämtas från en ny
|
||||||
|
# egen funktion och returneras direkt från ordlistan
|
||||||
|
# (värdet).
|
||||||
|
sorterad = sorted(rakna.items(), key=lambda x: x[1], \
|
||||||
|
reverse=True)
|
||||||
|
|
||||||
|
# Skriv ut de 10 mest förekommande orden tillsammans med
|
||||||
|
# antalet.
|
||||||
|
hogsta = 0
|
||||||
|
for i, j in sorterad:
|
||||||
|
print(i, "\t", j)
|
||||||
|
hogsta += 1
|
||||||
|
if hogsta == 10:
|
||||||
|
break
|
||||||
|
|
4
kapitel8/filer-ex1.py
Normal file
4
kapitel8/filer-ex1.py
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
fil = open('filtest.txt', 'w')
|
||||||
|
fil.write('Hejsan svejsan\nHur är läget?\n')
|
||||||
|
fil.close()
|
||||||
|
|
4
kapitel8/filer-ex2.py
Normal file
4
kapitel8/filer-ex2.py
Normal file
@@ -0,0 +1,4 @@
|
|||||||
|
fil = open("filtest.txt")
|
||||||
|
print(fil.read())
|
||||||
|
fil.close()
|
||||||
|
|
8
kapitel8/filer-ex3.py
Normal file
8
kapitel8/filer-ex3.py
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
fil = open("filtest.txt")
|
||||||
|
print(fil.read())
|
||||||
|
print("Filens namn:", fil.name)
|
||||||
|
print("Filens läge:", fil.mode)
|
||||||
|
print("Är filen stängd?", fil.closed)
|
||||||
|
fil.close()
|
||||||
|
print("Är filen stängd?", fil.closed)
|
||||||
|
|
13
kapitel8/finally-ex1.py
Normal file
13
kapitel8/finally-ex1.py
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import sys
|
||||||
|
|
||||||
|
try:
|
||||||
|
print(b)
|
||||||
|
except NameError:
|
||||||
|
print("'b' finns inte")
|
||||||
|
sys.exit("Nu avslutar vi...")
|
||||||
|
else:
|
||||||
|
print("'b' finns visst det")
|
||||||
|
finally:
|
||||||
|
print("Jag exekveras alltid, oavsett vad")
|
||||||
|
|
14
kapitel8/finally-ex2.py
Normal file
14
kapitel8/finally-ex2.py
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import sys
|
||||||
|
b = "Hejsan"
|
||||||
|
|
||||||
|
try:
|
||||||
|
print(b)
|
||||||
|
except NameError:
|
||||||
|
print("'b' finns inte")
|
||||||
|
sys.exit("Nu avslutar vi...")
|
||||||
|
else:
|
||||||
|
print("'b' finns visst det")
|
||||||
|
finally:
|
||||||
|
print("Jag exekveras alltid, oavsett vad")
|
||||||
|
|
3
kapitel8/sys-exit-test1.py
Normal file
3
kapitel8/sys-exit-test1.py
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
import sys
|
||||||
|
sys.exit("Något gick fel")
|
||||||
|
|
3
kapitel8/sys-exit-test2.py
Normal file
3
kapitel8/sys-exit-test2.py
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
import sys
|
||||||
|
sys.exit()
|
||||||
|
|
17
kapitel8/valutaomrakning-ver1.py
Normal file
17
kapitel8/valutaomrakning-ver1.py
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import pickle
|
||||||
|
import sys
|
||||||
|
|
||||||
|
ladda = input("Vill du ladda tidigare kurs? (j/n): ")
|
||||||
|
if (ladda == "j"):
|
||||||
|
kurs = pickle.load(open('kurs.p', 'rb'))
|
||||||
|
elif (ladda == "n"):
|
||||||
|
kurs = float(input("Ange ny USD-kurs: "))
|
||||||
|
pickle.dump(kurs,open('kurs.p', 'wb'))
|
||||||
|
else:
|
||||||
|
sys.exit("Var god svara (j)a eller (n)ej")
|
||||||
|
|
||||||
|
usd = float(input("Ange summa i USD: "))
|
||||||
|
print("%.2f USD motsvarar %.2f SEK" \
|
||||||
|
%(usd, usd*kurs))
|
||||||
|
|
22
kapitel8/valutaomrakning-ver2.py
Normal file
22
kapitel8/valutaomrakning-ver2.py
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import pickle
|
||||||
|
import sys
|
||||||
|
|
||||||
|
ladda = input("Vill du ladda tidigare kurs? (j/n): ")
|
||||||
|
if (ladda == "j"):
|
||||||
|
try:
|
||||||
|
kurs = pickle.load(open('kurs.p', 'rb'))
|
||||||
|
except FileNotFoundError:
|
||||||
|
print("Det finns ingen tidigare sparad kurs.")
|
||||||
|
kurs = float(input("Ange ny USD-kurs: "))
|
||||||
|
pickle.dump(kurs,open('kurs.p', 'wb'))
|
||||||
|
elif (ladda == "n"):
|
||||||
|
kurs = float(input("Ange ny USD-kurs: "))
|
||||||
|
pickle.dump(kurs,open('kurs.p', 'wb'))
|
||||||
|
else:
|
||||||
|
sys.exit("Var god svara (j)a eller (n)ej")
|
||||||
|
|
||||||
|
usd = float(input("Ange summa i USD: "))
|
||||||
|
print("%.2f USD motsvarar %.2f SEK" \
|
||||||
|
%(usd, usd*kurs))
|
||||||
|
|
53
kapitel8/valutaomrakning-ver3.py
Normal file
53
kapitel8/valutaomrakning-ver3.py
Normal file
@@ -0,0 +1,53 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import pickle
|
||||||
|
import sys
|
||||||
|
|
||||||
|
# Fråga användaren om han vill ladda en tidigare kurs
|
||||||
|
ladda = input("Vill du ladda tidigare kurs? (j/n): ")
|
||||||
|
if (ladda == "j"):
|
||||||
|
# Påbörja felhanteringen för filöppningen
|
||||||
|
try:
|
||||||
|
kurs = pickle.load(open('kurs.p', 'rb'))
|
||||||
|
# Om filen inte finns, skriv ut ett meddelande
|
||||||
|
# och fråga användaren om en ny kurs (om och om
|
||||||
|
# igen till tills ett tal har lästs in). Spara
|
||||||
|
# sedan den nya kursen.
|
||||||
|
except FileNotFoundError:
|
||||||
|
print("Det finns ingen tidigare sparad kurs.")
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
|
kurs = float(input("Ange ny USD-kurs: "))
|
||||||
|
except ValueError:
|
||||||
|
print("Ange endast flyttal eller heltal")
|
||||||
|
else:
|
||||||
|
pickle.dump(kurs,open('kurs.p', 'wb'))
|
||||||
|
break
|
||||||
|
# Om vi inte har rättigheter att läsa filen, avsluta
|
||||||
|
# och skriv ut ett felmeddelande.
|
||||||
|
except PermissionError:
|
||||||
|
sys.exit("Något är fel med rättigheterna för kurs.p")
|
||||||
|
elif (ladda == "n"):
|
||||||
|
# Repetera tills ett flyttal har lästs in.
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
|
kurs = float(input("Ange ny USD-kurs: "))
|
||||||
|
except ValueError:
|
||||||
|
print("Ange endast flyttal eller heltal")
|
||||||
|
else:
|
||||||
|
pickle.dump(kurs,open('kurs.p', 'wb'))
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
sys.exit("Var god svara (j)a eller (n)ej")
|
||||||
|
|
||||||
|
# Repetera tills ett flytttal har lästs in som SEK
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
|
usd = float(input("Ange summa i USD: "))
|
||||||
|
except ValueError:
|
||||||
|
print("Ange endast flyttal eller heltal")
|
||||||
|
else:
|
||||||
|
break
|
||||||
|
# Skriv ut svaret
|
||||||
|
print("%.2f USD motsvarar %.2f SEK" \
|
||||||
|
%(usd, usd*kurs))
|
||||||
|
|
61
kapitel8/valutaomrakning-ver4.py
Normal file
61
kapitel8/valutaomrakning-ver4.py
Normal file
@@ -0,0 +1,61 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import pickle
|
||||||
|
import sys
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
# Fråga användaren om han vill ladda en tidigare kurs
|
||||||
|
ladda = input("Vill du ladda tidigare kurs? (j/n): ")
|
||||||
|
if (ladda == "j"):
|
||||||
|
# Påbörja felhanteringen för filöppningen
|
||||||
|
try:
|
||||||
|
kurs = pickle.load(open('kurs.p', 'rb'))
|
||||||
|
# Om filen inte finns, skriv ut ett meddelande
|
||||||
|
# och fråga användaren om en ny kurs (om och om
|
||||||
|
# igen till tills ett tal har lästs in). Spara
|
||||||
|
# sedan den nya kursen.
|
||||||
|
except FileNotFoundError:
|
||||||
|
print("Det finns ingen tidigare sparad kurs.")
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
|
kurs = float(input("Ange ny USD-kurs: "))
|
||||||
|
except ValueError:
|
||||||
|
print("Ange endast flyttal eller heltal")
|
||||||
|
else:
|
||||||
|
pickle.dump(kurs,open('kurs.p', 'wb'))
|
||||||
|
break
|
||||||
|
# Om vi inte har rättigheter att läsa filen, avsluta
|
||||||
|
# och skriv ut ett felmeddelande.
|
||||||
|
except PermissionError:
|
||||||
|
sys.exit("Något är fel med rättigheterna för kurs.p")
|
||||||
|
# Logga alla läsförsök
|
||||||
|
finally:
|
||||||
|
logg = open('loggfil.txt', 'a')
|
||||||
|
logg.write("Läsförsök gjordes: " +
|
||||||
|
str(datetime.datetime.now()) + "\n")
|
||||||
|
logg.close()
|
||||||
|
|
||||||
|
elif (ladda == "n"):
|
||||||
|
# Repetera tills ett flyttal har lästs in.
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
|
kurs = float(input("Ange ny USD-kurs: "))
|
||||||
|
except ValueError:
|
||||||
|
print("Ange endast flyttal eller heltal")
|
||||||
|
else:
|
||||||
|
pickle.dump(kurs,open('kurs.p', 'wb'))
|
||||||
|
break
|
||||||
|
else:
|
||||||
|
sys.exit("Var god svara (j)a eller (n)ej")
|
||||||
|
|
||||||
|
# Repetera tills ett flytttal har lästs in som SEK
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
|
usd = float(input("Ange summa i USD: "))
|
||||||
|
except ValueError:
|
||||||
|
print("Ange endast flyttal eller heltal")
|
||||||
|
else:
|
||||||
|
break
|
||||||
|
# Skriv ut svaret
|
||||||
|
print("%.2f USD motsvarar %.2f SEK" \
|
||||||
|
%(usd, usd*kurs))
|
||||||
|
|
11
kapitel8/while-true-ex2.py
Normal file
11
kapitel8/while-true-ex2.py
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
while True:
|
||||||
|
try:
|
||||||
|
tal = int(input("Skriv ett heltal: "))
|
||||||
|
except:
|
||||||
|
print("Skriv endast heltal")
|
||||||
|
else:
|
||||||
|
print("Du skrev", tal)
|
||||||
|
break
|
||||||
|
|
Reference in New Issue
Block a user