Kezdőoldal » Számítástechnika » Programozás » Mi lehet a hiba ebben a...

Mi lehet a hiba ebben a Python 3 programkódban?

Figyelt kérdés

fname = input("Enter file name: ")

fh = open(fname)

fhText = fh.read()

count = 0

summary = 0

confidence = 'X-DSPAM-Confidence: 0.8475'

numberPosition = confidence.find('0')

for line in fhText:

if not line.startswith("X-DSPAM-Confidence:"):

continue

count = count + 1

number = float(line[numberPosition:])

summary = summary + number

average = summary / count

print("Average spam confidence:", average)


Többször is lefuttattam, jól írtam be az inputnál a fájl nevét.

Valamiért nem változik a count változó értéke, pedig a keresett string benne van a vizsgált fájl szövegében. (Traceback-nél azt írja, nullával való osztás van a kódban.)



2020. szept. 1. 19:32
 1/9 A kérdező kommentje:
Az két utolsó sor a for loopon kívül van, a continue meg az if-en belül
2020. szept. 1. 19:34
 2/9 anonim ***** válasza:

Erre semmi szükség:

fhText = fh.read()


a for pedig helyesen:

for line in fh:


Nem futattam le, de ránézésre ezzel van porbléma.

2020. szept. 1. 19:46
Hasznos számodra ez a válasz?
 3/9 anonim ***** válasza:
34%

Rosszul olvasod be a filet. Ezt nem igy kell. Ha kiiratod a line valtozot, akkor latni fogod, hogy a sorokat karakterekre szedte szet. Igy kell file/t beolvasni:


with open(fname) as fh:

for line in fh:

print(line)

2020. szept. 1. 19:47
Hasznos számodra ez a válasz?
 4/9 Ozmium42 ***** válasza:
Ha használod a read() metódust, akkor egyetlen összefüggő karakterláncot fogsz kapni, amin ha végigmész for ciklussal, akkor karakterenként fog végiglépkedni. Elhagyhatod a read-et, és csinálhatod úgy, ahogy fentebb írták, vagy kicserélheted a read()-et readline()-ra, ebben az esetben egy listát kapsz, amiben a file sorai az elemek. Ezen végig tudsz iterálni úgy, ahogy eredetileg akartál.
2020. szept. 1. 20:19
Hasznos számodra ez a válasz?
 5/9 A kérdező kommentje:
Köszi a válaszokat
2020. szept. 1. 20:54
 6/9 A kérdező kommentje:

Sajnos még mindig nem jó

[link]

[link]

2020. szept. 2. 09:27
 7/9 anonim ***** válasza:

Akkor kezd el debugolni.

Azt látod, hogy az átlag nem jó.

Hány sort talál meg? Megtalálja mindent?

Amikor a number változóba beolvasod a konfidencia értékeket, akkor ott jó értéke van?

2020. szept. 2. 10:21
Hasznos számodra ez a válasz?
 8/9 anonim ***** válasza:
Először is, nézd meg, hogy a jó soroket találja-e meg. Majd ellenőrizd, hogy a kiszedett float jó-e. Nézd meg, hogy a counter és summary értékek reálisak-e. Az elvárt érték 0.75 és nincs egy érték sem a file-ban, ami 1-nél nagyobb lenne.
2020. szept. 2. 10:43
Hasznos számodra ez a válasz?
 9/9 A kérdező kommentje:
Sikerült megoldanom, a confidence értékében volt a hiba. Köszi a segítséget.
2020. szept. 2. 12:32

Kapcsolódó kérdések:





Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!