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