Zadatak upis i ispis iz fajla

Postovani,
Da li neko ima ideju kako moze da se resi ovaj zadatak na koji sam naisao?
Potrebno je ucitati falj primer.txt u program.
Fajl je takav da svaka linija predstavlja jedan izraz u formatu:
5-2
9-4
format je :
Treba napisati program koji cita fajl,liniju po liniju,primenjuje datu operaciju, i rezultat zajedno sa pripadajucim izrazom upisuje u faj ispis.txt
izgled fajla ispis.txt
5-2=3
9-4=5

Da li mozete da posaljete link zadatka?

Zdravo,

Da li znamo nešto više o sadržaju fajla ispis.txt? Na primer, da li je uvek oduzimanje, da li izraz uvek ima format x nekaoperacija y = z ili može sadržati i više operacija ili više članova, da li su brojevi uvek integeri ili ima i float, da li se pojavljuju zagrade…

Postovanje Lazare,
samo da je format i da treba voditi racuna karakteru novi red.
Znaci ispis je u dva reda , posle koda za otvaranje fajla verovatno idu print(operacija oduzimanja rezultat i to je u dva reda cim se spominje newline caracter .
verovatno su integeri i samo ti brojevi jer nemaju nikakve druge karakteristike zagrade ili navodnike.
to bi trebala da bude provera otvaranja fajla iz jednog upis i cuvanje u drugi fajl
nesto ovog tipa
with open (r’C:\Users\User\Desktop\primer.txt’, ‘r’) as f:
print(f.read())
with open(r’C:\Users\User\Desktop\izlaz.txt’, ‘w’) as k:
k.write(print(‘result’ 5-2 \n 9-4)
with open(r’C:\Users\User\Desktop\ispis.txt’, ‘r’) as k:
k.read()
Verovatno ima gresaka u sintaksi pa ocu da se posavetujem sa nekim
Pozdrav,
Pedja

nece da mi izadje kako format treba da izgleda ajd da probam ovako:
broj-operator-broj
nece sa vece i manje da mi se napise na sajtu

Postovanje,
Nisam sacuvao prekopirao sam ga u word, mozda sam nesto tu izgresio.

U redu,

Evo šaljem ovde jedno rešenje koje sam iskomentarisao i koje se odnosi samo na oduzimanje i samo na dobro formatirane fajlove, ako ima i drugih operacija u fajlu, neće raditi, ali možete se igrati i modifikovati ga dalje. Možete da ga dobudžite da radi za ostale operacije, da ume da se snađe sa slučajevima da se pojavljuju prazni redovi, redovi koji nisu dobro formatirani i sl.

izlaz = open("E:/Desktop/izlaz.txt", "w") #otvaramo izlazni fajl tako da u njega može da se piše i smetamo ga u varijablu izlaz 

with open("E:/Desktop/primer.txt") as fajl: #otvaramo ulazni fajl
    redovi = fajl.readlines() #varijabla u koju smeštamo svaki red ulaznog fajla koji čitamo pomoću metoda .readlines() Ako želite da vidite kako izgleda, stavite ovde ispod print(redovi) prilikom pokretanja programa. Tehnički se dobije lista stringova u kojoj je element liste string u koji je smešten ceo red iz originalnog fajla
    string='' # prazan string koji ćemo da popunjavamo traženim vredostima
    for i in redovi: #petlja u kojoj ćemo u svakom prolazu modifikovati jedan red iz ulaznog fajla i upisati novodobijeni red u izlazni fajl 
        i=i.rstrip("\n\r") #iz svakog reda sklanjamo karaktere za novi red i carrige return  (oni će uvek postjati u tekstualnom fajlu kada se prelazi u novi red) pomoću metoda .strip()
        x =int(i[0]) #pretvaramo prvi karakter stringa u broj 
        y = int(i[2])#pretvaramo treći karakter stringa u broj
        z = x-y #nalazimo razliku
        string = str(x)+'-'+str(y)+'='+str(z)+'\r' #vraćamo sve u str format i ažuriramo varijablu string - pravimo string koji treba da predstavlja jedan red novog fajla
        izlaz.write(string) #pišemo novi string u fajl izlaz
    izlaz.close() #zatvaramo fajl izlaz.

Postovani Lazare,
Evo ja sam malo ucio kroz Vas primer i preradio sam ga da se drukcije zatvara:
To za Vas sigurno nije nesto ali meni je znacilo.
Sad cu da probam one druge mogucnosti izmena i nadogradnje.
Pozdrav
Pedja

izlaz = open(“C:/Users/User\Desktop/izlaz.txt”, “w”) #otvaramo izlazni fajl tako da u njega može da se piše i smetamo ga u varijablu izlaz
try:
primer = open(“C:/Users/User\Desktop/primer.txt”) #otvaramo ulazni fajl
redovi = primer.readlines() #varijabla u koju smeštamo svaki red ulaznog fajla koji čitamo pomoću metoda .readlines() Ako želite da vidite kako izgleda, stavite ovde ispod print(redovi) prilikom pokretanja programa. Tehnički se dobije lista stringova u kojoj je element liste string u koji je smešten ceo red iz originalnog fajla
string=’’ # i ovo moze da se izbaci ali mislim da je onda samo za podatke koji su u ulaznom fajlu
for i in redovi: #petlja u kojoj ćemo u svakom prolazu modifikovati jedan red iz ulaznog fajla i upisati novodobijeni red u izlazni fajl
i=i.rstrip("\n\r") #iz svakog reda sklanjamo karaktere za novi red i carrige return (oni će uvek postjati u tekstualnom fajlu kada se prelazi u novi red) pomoću metoda .strip()
x =int(i[0]) #pretvaramo prvi karakter stringa u broj
y = int(i[2])#pretvaramo treći karakter stringa u broj
z = x-y #nalazimo razliku
string = str(x)+’-’+str(y)+’=’+str(z)+’\r’ #vraćamo sve u str format i ažuriramo varijablu string - pravimo string koji treba da predstavlja jedan red novog fajla
izlaz.write(string) #pišemo novi string u fajl izlaz
finally:
izlaz.close() #zatvaramo fajl izlaz.

Nije se bas dobro prekopirao, uvlacenja nisu dobra

Dragi Peđa,

Ja apsolutno razumem početničke probleme i značaj svakog novog detalja i tehnike pošto sam i sam počeo da učim prilično kasno i za sebe bih rekao da sam daleko od nekog ozbiljnog programerskog znanja. Nemojte da se obeshrabrite i slobno pitajte za pomoć kad god vam je potrebna. Vidim da jako lepo napredujete i ne sumnjam da ćete brzo savladati sve potrebne stvari.

Sećam se da kad sam učio da otvaram i pišem fajlove, najviše me je mučilo što sam zaboravljao da zatvaram fajlove i onda se stvari nisu lepo upisivale u njih. Pored toga, sećam se da mi je u početku bilo neudobno da se snađem sa putanjama u programima - da li da koristim apsolutnu ili relativnu putanju, da li da pišem / ili \ ili \\ i kada treba da upotrebljavam koje od toga. Sve su to neke stvari koje kroz rutinu postanu dosta lakše. Samo nemojte da se obeshrabrite na početku ako je nešto ne ide baš odmah glatko.

P. S.
U našem editoru možete koristiti opciju performated text - izgleda ovako </> i kada kliknete na to možete da unesete programski kod koji je uvučen kako treba.

Postovani Lazare,
Hvala veliko na podrsci koja mi znaci.
Mislim da niste kasno krenuli i imate dovoljno vremena da se usavrsite.
Ja imam 51 godinu i posle 25 godina staza ,a od toga 22 na istom poslu, sam krajem 2019 ostao bez posla, koji nije imao nikakve veze sa kompjuterima.
Mislio sam da cu sa tog posla da odem u penziju.
Sada evo pokusavam dok je ova pandemija da iskoristim vreme kvalitetno kako bih stekao neko predznaje iz IT oblasti da bih posle pandemije upisao neku dvogodisnju skolu za python i prekvalifikovao se. Mislim da je za dobro savladavanje ovog jezika potrebno jedno dve godine vodjenog ucenja.
U sledecih desetak godina python ce sigurno po onome kako sam ja shvatio razne clanke na internetu biti jedan od dominantnih programskih jezika.
Moram da naucim, algoritme, matrice i ko zna sta jos sto nisam ni ucio u srednjoj skoli iz logike i matematike.
Ovo Vam sve govorim iz razloga da vidite da nije kasno i da je samo bitno naci svoje mesto sto ste Vi i uradili na ovom sajtu.
Srdacan pozdrav,
Predrag

1 Like