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.

 

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

milistroke

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.

c non

selamlar,
ben kodu güncelledim bir de ona bakın.

milistroke

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?

c non

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.

milistroke

-"name 'math' is not defined"

bi de: "&&" "math" ve "isnan" nedir?

c non

&& 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

milistroke

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.

c non

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()

c non

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...

milistroke

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)

c non

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])))

milistroke

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!!

c non

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)

c non

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 :}

milistroke

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

c non
1

mobil görünümden çık