Python İçin Excel'de loop döngüsü

Kodunuzda kullandığınız dxfwrite kütüphanesi ezdxf kütüphanesinin kullanılmasını öneriyor.

Kodunuzu çalıştırmayı deneyince bu hatayı alıyorum:

Warning (from warnings module):
  File "C:\Users\Dinçel\AppData\Local\Programs\Python\Python38\lib\site-packages\pyproj\crs\crs.py", line 53
    return _prepare_from_string(" ".join(pjargs))
FutureWarning: '+init=<authority>:<code>' syntax is deprecated. '<authority>:<code>' is the preferred initialization method. When making the change, be mindful of axis order changes: https://pyproj4.github.io/pyproj/stable/gotchas.html#axis-order-changes-in-proj-6

Warning (from warnings module):
  File "C:\Users\Dinçel\AppData\Local\Programs\Python\Python38\lib\site-packages\pyproj\crs\crs.py", line 294
    projstring = _prepare_from_string(" ".join((projstring, projkwargs)))
FutureWarning: '+init=<authority>:<code>' syntax is deprecated. '<authority>:<code>' is the preferred initialization method. When making the change, be mindful of axis order changes: https://pyproj4.github.io/pyproj/stable/gotchas.html#axis-order-changes-in-proj-6
Traceback (most recent call last):
  File "C:\Users\Dinçel\Desktop\Projects\voyager\1.py", line 144, in <module>
    inProj = Proj(init='epsg:5258')
  File "C:\Users\Dinçel\AppData\Local\Programs\Python\Python38\lib\site-packages\pyproj\proj.py", line 126, in __init__
    self.crs = CRS.from_user_input(projparams, **kwargs)
  File "C:\Users\Dinçel\AppData\Local\Programs\Python\Python38\lib\site-packages\pyproj\crs\crs.py", line 440, in from_user_input
    return CRS(value, **kwargs)
  File "C:\Users\Dinçel\AppData\Local\Programs\Python\Python38\lib\site-packages\pyproj\crs\crs.py", line 296, in __init__
    super().__init__(projstring)
  File "pyproj\_crs.pyx", line 2338, in pyproj._crs._CRS.__init__
pyproj.exceptions.CRSError: Invalid projection: +init=epsg:5258 +type=crs: (Internal Proj Error: proj_create: no database context specified)

Sanırım pyproj eksik sizde. Pyproj koorinat çevrimi için kullanılan bir kütüphane. Ondan ötürü hata vermiş olabilir.

Aynen öyle hocam. x4 ve y4 sürekli döngüye girmesi gereken.

Tamam, bir daha bakarım.

Gerekli bütün kütüphaneleri indirdim, zaten dikkat ederseniz yükseltilen hata ModuleNotFoundError değil.

Benim anlamadığım bir durum var. Siz her seferinde üç satırın kullanıldığını söylemiştiniz. Ama kodlarınıza bakıyorum, 6 satır kullanmışsınız. Bu değerlerin döngünün ikinci adımına geçtiğinde nasıl değişeceğini bir yazar mısınız?

nn1=sheet['a3']
nn2=sheet["a4"]
nn3=sheet["a5"]
nn4=sheet["a6"]
daci1=sheet["c4"]
daci2=sheet["c5"]
u1=sheet["d4"]
u2_1=sheet["d5"]
yaci1=sheet["b5"]
y1=sheet["b1"]
y2=sheet["b2"]
y3=sheet["b6"]
x1=sheet["c1"]
x2=sheet["c2"]
x3=sheet["c6"]

@EkremDincel

Şu linkteki dosyalardan birini indirince sorun devam ediyor mu?

https://www.lfd.uci.edu/~gohlke/pythonlibs/#pyproj

Diyelim bu x4 ve y4 değerlerini bulduk, sonra bunları nasıl kullanacağız? Bu x4 ve y4 değerleri ilk döngüdeki aşağıdaki hangi değişkenlere karşılık geliyor? Bu konuda biraz daha bilgi vermeniz gerekiyor.

nn1=sheet['a3']
nn2=sheet["a4"]
nn3=sheet["a5"]
nn4=sheet["a6"]
daci1=sheet["c4"]
daci2=sheet["c5"]
u1=sheet["d4"]
u2_1=sheet["d5"]
yaci1=sheet["b5"]
y1=sheet["b1"]
y2=sheet["b2"]
y3=sheet["b6"]
x1=sheet["c1"]
x2=sheet["c2"]
x3=sheet["c6"]

Ben kütüphaneyi indirdim ve import edebiliyorum.

1 Beğeni

Yazdığınız kodlar öncelikle aşağıdaki verilerle hesap yapıyor.
index
Hesaplardan sonra x4 ve y4 dediğiniz değerler hesaplanıyor. Onlar da şu:

4199484.755628332 425246.7022847795

Siz bize bu elde edilen verilerle ne yapılması gerektiğini anlatmadınız henüz. Ve kusura bakmayın ama ben bu işten biraz sıkılmaya başladım.

[quote=“dildeolupbiten, post:28, topic:6031”]
nn1=sheet[‘a3’]
Çok özür diliyorum zamanınızı alıyorum bu şekilde. Bu dediğiniz verinin nasıl kullanıldığını ne işe yaradığını aslında şuradaki videoda anlatmaya çalışmıştım dilim döndüğünce; https://www.youtube.com/watch?v=pglP-Q50PjQ

Asıl itibari ile benim tüm isteğim şu yukardaki durumun loop a sokulması. Bunu nasıl yapabileceğim belliyse gerisini ben halledebilirim. Yani list içerisindeki bir veriyi düzenli olarak arttırabilmek. Burdaki arttırma dediğim de şu şekilde;
Loop1:
nn1=sheet[‘a3’]
Loop2:
nn1=sheet[‘a6’]
Loop3:
nn1=sheet[‘a9’]
Loop3:
nn1=sheet[‘a12’]
Loop ∞
.
.
.
.
.
Bu şekilde bu verileri her loopda istediğim sayıda arttırabilirsem olay benim için sonlanacak. Tek derdim burası açıkcası. Bu excelden list şeklinde veri çektiğimde, bu kısımları herhangi bir şekilde otomatik olarak arttıramıyorum, dolayısıyla loop a sokamıyorum. Denemelerimde hep list içerisindeki veriyi arttırabildim. Yani örnek olarak B1 kısmında B1’i 3 arttırıp B4 yapamıyorum, içerisindeki 425310.181 değerini 3 arttırabilip 425313.181 yapabiliyorum. Çünkü int veya float bir sayı istiyor python, loopta hep toplama gibi algılatabiliyorum, hücre değerleri olarak algılatamıyorum. Bu kısmı yapamıyorum bir türlü. Tüm derdim bu B1 i loopa sokup, örneğin 3 arttırarak B4 ve sonrasında B7 gibi otomatik arttırabilmek hocam.
Rahatsızlık veriyorsam özür dilerim.

Eğer kodlarınız aşağıdaki gibiyse ve sadece nn1’in değerinin değişmesi gerekiyorsa:

nn1 = sheet["a3"]
...
...
...
...
...
...
print(sonuc)

Bu ikisi arasında kalan kodları döngüye alabilirsiniz. Böyle bir şey mi yapmak istiyorsunuz?

for i in range(100):  # döngü sayısını siz belirlersiniz.
    nn1 = sheet[f"a{3 * (i + 1)}"]
    ...
    ...
    ...
    ...
    ...
    ...
    print(sonuc)

"B1"'i, "B4" yapmak için yukarıdaki döngü işinizi görür aslında.

for i in range(10):
    print(f"B{1 + (3 * i)}")

Çıktı:

B1
B4
B7
B10
B13
B16
B19
B22
B25
B28
1 Beğeni

Bunu yapamamanızın sebebi temel python bilgilerinizin eksik olması, türleri birbirine çevirmek çok kolay.

>>> str(12)
'12'
>>> int("12")
12

Stringlerin belli bir kısmını almak da kolay.
https://python-istihza.yazbel.com/karakter_dizileri.html#karakter-dizilerini-dilimlemek

İşlemi bir fonksiyon haline getirirsek şöyle bir şey yazabiliriz:

>>> def arttır(hücre, n):
	harf = hücre[0]
	sayı = int(hücre[1:])
	sayı += n
	return harf + str(sayı)

>>> arttır("B1", 3)
'B4'
>>> arttır("B4", 3)
'B7'
>>> arttır("A4", 3)
'A7'
>>> arttır("C2", 1)
'C3'
2 Beğeni