(16)
python, listedeki degerleri numaralandirma
bi dosya var, dosya icinde sayilar var, o listedeki 1. sayi ile 2.sayiyi, 2. sayi ile 3.sayiyi toplayip, 3. ile 4. toplayip ... cikan degerleri baska bi doyaya yazmak istiyorum. dosyadaki degerleri okuyabilmeyi anladim da bi turlu o loop'u yazmaya basaramadim, kolaydir bence bilene de, bi el atin lu
bi dosya var, dosya icinde sayilar var, o listedeki 1. sayi ile 2.sayiyi, 2. sayi ile 3.sayiyi toplayip, 3. ile 4. toplayip ... cikan degerleri baska bi doyaya yazmak istiyorum. dosyadaki degerleri okuyabilmeyi anladim da bi turlu o loop'u yazmaya basaramadim, kolaydir bence bilene de, bi el atin lutfen.
tesekkur.
f=open("hop.txt","r")
num=f.readlines()
for i in range(lfor i in range(len(num)):
gibi seyler yapiyorum da olmuyor.
dosyanin icerigi de
1
2
3
4
5
olsun.
0
f=open("numbers.txt","r");
numbers=f.readlines();
resultList=[]
for i in range(1,len(numbers)):
-----resultList.append(int(numbers[i-1])+int(numbers+[i]));
buna benzer birşey olması lazım
0
selam.
ne yaptiginizi anladim. python bilmiyorum dediniz diye soyleme geregi hissetim, belki biliyorsunuz da python saymaya sifirdan basliyor. ben de bi seyler degistirdim, ettim de olmadi maalesef, "IndexError: list assignment index out of range" diyor, sanirim sinirlarla/saymayla ilgili sorun da onu da cozemedim maalesef. benim denedigim hali de su sekilde:
f=open("hop.txt","r")
numbers=f.readlines()
resultList=[]
for i in range(0,(len(numbers)-2)):
resultList[i]=float(numbers[i])+float(numbers[i+1])
print resultList()
-o da 5 sayi varya, len deyince 5 sayi oldugunu buluyor. iki cikardik, 3.
bize de 0, 1, 2, 3 kaliyo loop icin. ki zaten 5 deger oldugu icin 4 degerimiz olmasi lazim da olmadi maalesef.
0
selamlar,
ben kodu güncelledim bir de ona bakın.
0
maalesef olmadi o da: "ValueError: invalid literal for int() with base 10: '1.0\n'"
bi de son satirda yazdiginiz son satirda "int(numbers+[i]"da bi hata var mi?
0
dosyanın içinde sayı dışında birşey varsa onu integer'a cast ederken hata veriyor olabilir. gelen değerler için kontrol yapmak gerekir o zaman da:
for i in range(1,len(numbers)):
-----if math.isnan(numbers[i-1])==0 and math.isnan(numbers[i])==0:
-----------resultList.append(int(numbers[i-1])+int(numbers+[i]));
bu arada sayılar eğer küsüratlıysa int yerine float yazın.
0
-"name 'math' is not defined"
bi de: "&&" "math" ve "isnan" nedir?
0
&& logical AND anlamına gelir. ama python'da "and" yazmak lazımmış. isnan'da math librarysinde bir fonksiyon: "is not a number" anlamına gelir, true ya da false döndürür. dosyanın başını ve sonunu kopyalasanız buraya daha kolay olur.
kodun başına "import math" yazın
0
dosya o kadar. ben burda bunu becerip asil koduma koyucam bunlari, once sunu kotarmam gerek. o yuzden kod bu kadar. sunu anlasam, cok az benzerini mekanik bi seyi modellemede kullanicam.. deniyorum hemen.
0
File "liste.py", line 10, in <module>
if math.isnan(numbers[i-1])==0 and math.isnan(numbers[i])==0:
TypeError: a float is required
dedi simdi de.
denedigim son hal de su:
import math
f=open("hop.txt","r")
numbers=f.readlines()
resultList=[]
for i in range(1,len(numbers)):
if math.isnan(numbers[i-1])==0 and math.isnan(numbers[i])==0:
resultList.append(int(numbers[i-1])+int(numbers+[i]))
print resultList()
0
dediğim gibi, dosyada sayı dışında karakterler okundugu için hata veriyor convert ederken. şöyle çalışması lazım:
import re;
for i in range(1,(len(numbers))):
----resultList.append(float(re.sub(r'\s','',numbers[i-1])+float(re.sub(r'\s','',numbers[i]));
print resultList()
gelen her string'in içinde eğer \n,\t,\a gibi karakterler varsa onları kaldırıyor ardından float'a çevirip topluyor...
0
listede sayidan baska bi sey yok.
yine de calismadi, ve cok ilginc en sonda veriyor hatayi da. ki son satiri siliyim, son satir da print, hata yine oluyor:
hata veren hali de su:
import re
f=open("hop.txt","r")
numbers=f.readlines()
resultList=[]
for i in range(1,(len(numbers))):
resultList.append(float(re.sub(r'\s','',numbers[i-1])+float(re.sub(r'\s','',numbers[i]))
print (resultList)
0
eksik parantez koymuşum da o yüzden...
resultList.append(float(re.sub(r'\s','',numbers[i-1]))+float(re.sub(r'\s','',numbers[i])))
0
selam selam,
sizinkilerden de faydalanip soyle bi sey yazdim, sansin ve sonuna kadar yardiminiz yardimiyla calisti:
f=open("hop.txt","r")
numbers=f.readlines()
liste=[]
for i in range(0,(len(numbers)-1)):
toplam=float(numbers[i])+float(numbers[i+1])
print "toplam lan:", toplam
liste.append(toplam)
print("#######")
print(liste)
cidden cok saol!!
0
sadece tek sorun kaldi, bu listedekileri bi dosyaya yazmak gerek, bokunu cikarmis gibi olcam ama o nasil olacak?
soyle bi sey denedim, yemedi:
f=open("hop.txt","r")
numbers=f.readlines()
liste=[]
for i in range(0,(len(numbers)-1)):
file=open("data.txt","a")
toplam=float(numbers[i])+float(numbers[i+1])
print "toplam lan:", toplam
liste.append(toplam)
file.write(toplam)
file.close()
print("#######")
print(liste)
0
tamam işte onun için de ayrı bi file açıp write ile yazdıracaksınız, doğru olmuş. ama write sadece string kabul ediyor o nedenle de str kullanarak string'e typecast edeceksiniz. yazdıgınız değerden sonra satır başı yapmak istiyorsanız da "\n" karakterini ekleyeceksiniz. yani:
sayi=21.1212;
file=open("hede","w"); //"a" derseniz dosya varsa sonuna ekler
file.write(str(sayi)+"\n");
file.close();
resultList'e gerek yok o zaman.
append yapacağınız yerde file.write(str(total)+"\n"); deseniz de olur...
sayenizde python öğreniyorum ben de :}
0
oldu. son halini de koyim, biri bakar eder falan:
f=open("hop.txt","r")
numbers=f.readlines()
liste=[]
for i in range(0,(len(numbers)-1)):
file=open("hoppa.txt","a")
toplam=float(numbers[i])+float(numbers[i+1])
print "toplam lan:", toplam
liste.append(toplam)
file.write(str(toplam)+"\n")
file.close()
print("#######")
print(liste)
cok saol tekrar tekrar
0