Kapitel 10, 11 och 12
This commit is contained in:
parent
accdeca47b
commit
dfe6ba8c30
13
kapitel10/antalet-dagar.py
Normal file
13
kapitel10/antalet-dagar.py
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
startdatum = input("Ange startdatumet (YYYY-MM-DD): ")
|
||||||
|
slutdatum = input("Ange slutdatumet (YYYY-MM-DD): ")
|
||||||
|
|
||||||
|
datum1 = datetime.datetime.strptime(startdatum, "%Y-%m-%d")
|
||||||
|
datum2 = datetime.datetime.strptime(slutdatum, "%Y-%m-%d")
|
||||||
|
skillnad = datum2 - datum1
|
||||||
|
|
||||||
|
print("Antalet dagar mellan de angivna datumen är",
|
||||||
|
skillnad.days)
|
||||||
|
|
16
kapitel10/forenkla-brak.py
Normal file
16
kapitel10/forenkla-brak.py
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
import math
|
||||||
|
|
||||||
|
try:
|
||||||
|
t = int(input("Ange täljaren: "))
|
||||||
|
n = int(input("Ange nämnaren: "))
|
||||||
|
except ValueError:
|
||||||
|
exit("Ange endast heltal")
|
||||||
|
|
||||||
|
sgd = math.gcd(t, n)
|
||||||
|
|
||||||
|
print("SGD är:", str(sgd))
|
||||||
|
print(str(t) + "/" + str(n), "=", \
|
||||||
|
str(int(t/sgd)) + "/" + str(int(n/sgd)))
|
||||||
|
|
16
kapitel10/hamta-data.py
Normal file
16
kapitel10/hamta-data.py
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import urllib.request
|
||||||
|
|
||||||
|
# Vi börjar med att skapa ett objekt
|
||||||
|
url = urllib.request.urlopen("http://jackbenny.se/test.html")
|
||||||
|
|
||||||
|
# Nu läser vi in HTML-dokumentet
|
||||||
|
html = url.read()
|
||||||
|
|
||||||
|
# Därefter måste vi omkoda byte till en sträng för att
|
||||||
|
# t.ex. radbrytningar ska fungera korrekt
|
||||||
|
htmlUtf = html.decode("utf-8")
|
||||||
|
|
||||||
|
# Visa HTML-dokumentet
|
||||||
|
print(htmlUtf)
|
||||||
|
|
12
kapitel10/julafton.py
Normal file
12
kapitel10/julafton.py
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
veckodagar = ["måndag", "tisdag", "onsdag",
|
||||||
|
"torsdag", "fredag", "lördag",
|
||||||
|
"söndag"]
|
||||||
|
|
||||||
|
ar = int(input("Ange år med fyra tecken: "))
|
||||||
|
|
||||||
|
print("Julafton år", str(ar), "är en",
|
||||||
|
veckodagar[datetime.date(ar, 12, 24).weekday()])
|
||||||
|
|
12
kapitel10/signalhantering.py
Normal file
12
kapitel10/signalhantering.py
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
import signal
|
||||||
|
import sys
|
||||||
|
|
||||||
|
def sigint_hanterare(signal, frame):
|
||||||
|
sys.exit("\nDu tryckte på Ctrl-C, hej då...")
|
||||||
|
|
||||||
|
signal.signal(signal.SIGINT, sigint_hanterare)
|
||||||
|
|
||||||
|
while True:
|
||||||
|
svar = input("Skriv något: ")
|
||||||
|
print("Du skrev:", str(svar))
|
||||||
|
|
43
kapitel11/husdjur.py
Normal file
43
kapitel11/husdjur.py
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
|
class Husdjur:
|
||||||
|
|
||||||
|
# Skapa grunden och attributen
|
||||||
|
def __init__(self, namn, art,
|
||||||
|
farg, laten, atit=0):
|
||||||
|
self.namn = namn
|
||||||
|
self.art = art
|
||||||
|
self.farg = farg
|
||||||
|
self.laten = laten
|
||||||
|
self.atit = atit
|
||||||
|
|
||||||
|
def gorLjud(self):
|
||||||
|
print(str(self.laten + " ") * 3)
|
||||||
|
|
||||||
|
def mata(self):
|
||||||
|
print(self.namn, "äter sin mat.")
|
||||||
|
self.atit = self.atit + 1
|
||||||
|
print(self.namn, "har ätit", self.atit, "gång(er).")
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return ("%s är en %s %s" %
|
||||||
|
(self.namn, self.farg, self.art))
|
||||||
|
|
||||||
|
class Hund(Husdjur):
|
||||||
|
def __init__(self, namn, farg, ras, atit=0):
|
||||||
|
Husdjur.__init__(self, namn=namn, farg=farg,
|
||||||
|
atit=atit, art="hund", laten="Voff")
|
||||||
|
self.ras = ras
|
||||||
|
|
||||||
|
def vilkenRas(self):
|
||||||
|
return (self.namn + " är en " + self.ras)
|
||||||
|
|
||||||
|
class Katt(Husdjur):
|
||||||
|
def __init__(self, namn, farg, ras, atit=0):
|
||||||
|
Husdjur.__init__(self, namn=namn, farg=farg,
|
||||||
|
atit=atit, art="katt", laten="Mjau")
|
||||||
|
self.ras = ras
|
||||||
|
|
||||||
|
def vilkenRas(self):
|
||||||
|
return (self.namn + " är en " + self.ras)
|
||||||
|
|
54
kapitel12/hitta-intrangsforsok.py
Normal file
54
kapitel12/hitta-intrangsforsok.py
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
import urllib.request
|
||||||
|
import sys
|
||||||
|
|
||||||
|
# Be användaren om en adress
|
||||||
|
adress = input("Ange adress till loggfilen: ")
|
||||||
|
|
||||||
|
# Om adressen är kortare än ett tecken angav
|
||||||
|
# användaren ingen adress, så vi kör på default
|
||||||
|
if (len(adress) < 1):
|
||||||
|
adress = "http://jackbenny.se/logg.txt"
|
||||||
|
|
||||||
|
# Try-block för att testa om adressen finns och är giltig.
|
||||||
|
try:
|
||||||
|
# Vi börjar med att skapa ett objekt
|
||||||
|
url = urllib.request.urlopen(adress)
|
||||||
|
except ValueError:
|
||||||
|
sys.exit("Ogiltigt adressformat")
|
||||||
|
except urllib.error.URLError:
|
||||||
|
sys.exit("Fel eller okänd adress")
|
||||||
|
except urllib.error.HTTPError:
|
||||||
|
sys.exit("Fel adress, det finns inget där")
|
||||||
|
|
||||||
|
# Nu läser vi in loggfilen
|
||||||
|
loggfil = url.read()
|
||||||
|
|
||||||
|
# Därefter måste vi omkoda byte till en sträng för att
|
||||||
|
# t.ex. radbrytningar ska fungera korrekt
|
||||||
|
loggfilUtf = loggfil.decode("utf-8")
|
||||||
|
|
||||||
|
# Testa ifall det är loggfil och om inte, avsluta.
|
||||||
|
if "]:" not in loggfilUtf:
|
||||||
|
sys.exit("Det där verkar inte vara en loggfil")
|
||||||
|
|
||||||
|
# Dela upp strängen i enstaka rader istället
|
||||||
|
rader = loggfilUtf.splitlines()
|
||||||
|
|
||||||
|
raknare = 0 # Räknare till antalet försök
|
||||||
|
ipLista = list() # I denna sparar vi IP-adresser
|
||||||
|
for rad in rader:
|
||||||
|
if "Invalid user" not in rad: # INTE har söksträngen
|
||||||
|
continue # hoppas över.
|
||||||
|
raknare = raknare + 1 # Addera 1 till antalet försök
|
||||||
|
ord = rad.split() # Dela upp raden i enskilda ord
|
||||||
|
ip = ord[9] # Fält 9 är IP-adressen
|
||||||
|
if ip not in ipLista: # Om inte adressen redan finns,
|
||||||
|
ipLista.append(ip) # så lägg till den
|
||||||
|
|
||||||
|
# Skriv ut resultatet på skärmen
|
||||||
|
print("\nTotalt antal försök:", raknare)
|
||||||
|
print("\nLista över IP-adresser")
|
||||||
|
for adress in ipLista:
|
||||||
|
print(adress)
|
||||||
|
|
Loading…
x
Reference in New Issue
Block a user