9 svar
146 visningar
Tröttstudent7 8
Postad: 29 dec 2022 17:48

Filhantering och listor

Hej
Detta är en del av en uppgift som jag måste lösa. Jag är väldigt ny till programmering.

I en fil ”Race_results.txt” har resultatet samlats från ett antal tävlingar för ett antal (20 st.)
klubbkamrater som springer 100 meter. Resultatet är sparat med en rad per deltagare där
namnet, ex. ”Rune Robertsson” står först följt av 10 st. resultat. Resultatet kan se ut som ’10.74’
eller ’11.3’.

Uppgiften:
Det ni ska göra är:
1) Läsa in data från filen för varje deltagare och sedan dela upp denna data så att den sparas
i en lista (Tips: Använd den inbyggda funktionen split( )). På första och andra positionen
kommer då namnet att finnas följt av ett antal (10 st.) positioner med resultat.

 

lst = []

with open("Race_results.txt", 'r') as filehandle:
lst = [resultat.rstrip() for resultat in filehandle.readlines()]
print(lst)
#Här får jag upp filen i en lista.

 

Jag förstår inte hur jag ska använda split eller hur jag ska skriva in det. Jag har prövat split på olika sätt men det blir inte rätt. Se nedan min försök.

lines = [resultat.rstrip('\n') for resultat in filehandle]
print(lines)

print(lst.split("/n")

for i in filehandle:
split_lines=i.split(' ')
print(split_lines[0])

 

Förlåt om det är lite oklart som sagt är väldigt ny till detta och har lite svårt att formulera mina frågor. Tack i för hand!

Analys 1229
Postad: 29 dec 2022 22:15

Kan du visa några rader från filen?

Analys 1229
Postad: 29 dec 2022 22:22

Lite otydligt om listan som skall skapas. Finns det en fråga 2?

Analys 1229
Postad: 29 dec 2022 22:37

Vad händer om du kör denna kodsnutt:

with open("resultat.txt")  as fh:
    for line in fh:
        for word in line.split():
            print(word)
Fermatrix 7841 – Fd. Medlem
Postad: 30 dec 2022 11:07

Oklart vad det är som inte fungerar, du får visa oss din output och gärna en bild på textfilen. 

Jag skapade ett exempel nedan som kanske är till hjälp.

Min txt fil:

Min kod:

with open("ex.txt", "r") as f:
    f = [x.split() for x in f]
    print(f)

Utskrift till konsolen:

[['00', 'Karl', 'bob', '3993'], ['11', 'sdf', '333', 'saasas'], ['22', 'sdasd', 'wq', 'qwqwqqw'], ['33'], ['agg', 'sgsg', 'sggs23', 'sggs1', 'sggsds', 'gsgs']]

Analys 1229
Postad: 30 dec 2022 11:31

Du får gärna oxå speca vad förväntningarna är på ”sparas i en lista” . Hur skall denna lista se ut?

Tröttstudent7 8
Postad: 31 dec 2022 18:19
Analys skrev:

Vad händer om du kör denna kodsnutt:

with open("resultat.txt")  as fh:
    for line in fh:
        for word in line.split():
            print(word)

Hej, det var till stor hjälp. Tack så mycket.

Tröttstudent7 8
Postad: 1 jan 2023 17:30
Analys skrev:

Kan du visa några rader från filen?

 

Hej, så här ser min lista nu när jag har lyckats få in split.

 

Fråga 2: För varje deltagare; ta reda på:
a. den bästa tiden (bästatid)
b. den sämsta tiden (sämstatid)
c. medelvärdet för de tio resultaten (medelvärdet_av_tiderna)

Jag har prövat:

with open("Race_results.txt") as fh:
for line in fh:
for word in line.split():
#print(word)
Sämsta_tiden=max(fh)
print(Sämsta_tiden) 

Output blir:Har ni några ideer? Jag är tänker att även om det jag prövade hade fungerat så hade resultatet inte varit för varje deltagare utan alla resultat rangordnade tillsammans.

Analys 1229
Postad: 2 jan 2023 00:07

Fh har bara att göra med filen, inte alls med datat.

du skulle kunna bygga en lista av alla tider för en viss deltagare och sen köra min/max på den.

Laguna 30261
Postad: 2 jan 2023 00:13

max(fh) gör något som möjligen är användbart nån gång: den läser in alla textrader från fh och returnerar den som kommer sist i bokstavsordning.

Här är det inte det vi vill och dessutom har vi redan läst in allt från fh, så det misslyckas när man försöker läsa igen.

Svara
Close