Föreläsning 5 Läsa och skriva på fil Exempel

Föreläsning 5
Python: argument från kommando-tolken
, inläsning av fil, listor och + operatorn,
linjärsökning,
binärsökning
1
Läsa och skriva på fil
Man kan hämta indata från fil eller skriva
utdata på en fil, detta är möjligt med
funktionerna:
open(”fil.txt”) öppnar fil.txt för läsning
open(”fil.txt”,”w”) öppnar filen fil.txt för skrivning
open(”fil.txt”,”a”) öppnar filen fil.txt för att lägga
till.
readline() läser en rad och returnerar raden som en sträng
readlines() läser alla rader och returnerar en lista som varje
element i listan är en rad från filen.
write(”en sträng”) skriver texten ”en sträng” på filen
2
Exempel
fil = open(”namnlista.txt”)
namnlista = fil.readlines()
3
Exempel
fil = open(”namnlista.txt”)
namn = fil.readline()
namnlista = []
while namn!=”” :
namnlista.append(namn)
namn = fil.readline()
4
Argument från kommando-tolken
Man kan få in strängar från kommandotolken på terminalen in till programmet
genom att använda fördefinierade listan
sys.argv.
datorn~> python prg.py arg1 arg2…
5
Exempel
# -*- coding: latin-1 -*import sys
print ”du startade det här programmet med”,\
len(sys.argv)-1 ,”argument(er)”
# -*- coding: latin-1 -*import sys
print ”följande är en lista av argumenter:”
for element in sys.argv:
print element
6
Datalogi
• Datalogi är läran om behandling av data.
• För att behandla en mängd data måste
man göra val av datastrukturer och
algoritm. Beroende på vilken algoritm och
datastruktur man väljer påverkas
effektivitet av programmet.
• För att kunna mäta effektivitet hos ett
program använder man måtten
tidskomplexitet och rumskomplexitet.
7
Grundläggande datalogi
• Algoritmet
– Rekursion,
– Sökning: linjär sökning, binärsökning,
breddenförstsökning, djupetförstsökning,
bästaförstsökning
– Sortering: urvalssortering, bubbelsortering,
Insättningssortering, damerna först sortering,
kvicksortering(quicksort), samsortering (mergesort)
• Datastruktur: Lista, kö, stack, länkade listor,
binära träd, allmänna träd, hashtabeller,
prioritetskö, allmänträd, Trappor
8
Linjärsökning
Linjärsökning : Linjärsökning eller sekventiell
sökning kallas när man söker element för
element från första elementet i listan.
soktal = 8
lista = [1,3,6,4,2,7,9,8,0]
for element in lista :
if element == soktal :
print soktal,”finns i listan”
break
9
Binärsökning
Om man har en sorterad lista kan man
använda binärsökning som är snabbare
än linjärsökning:
Binär sökning går på det viset att man börjar
söka från mitten av den sorterade listan.
Om det man söker är mindre än elementet
i mitten då ska man söka i vänstra delen
av listan, annars om det är större ska man
söka i högra delen av listan.
10
Exempel
Skriv ett program som med hjälp av
binärsökning hittar index för talet
8 i listan nedan, ditt program ska
fungera med vilken lista som helst
bara listan är sorterad och
innehåller tal.
lista = [1,3,4,6,7,8,18,100]
11
Exempel
Vi har en fil i varannan rad står ett namn och
i raden efter namnet står skonummer för
alla personer, skriv ett program som
skriver namn för alla som har skonummer
43. Observera filen är inte sorterad
12
Exempel
Skriv ett program som läser alla namn till en
lista och skriver ut alla namn som börjar
med ’j’ och har ett ’a’ i namnet.
13