For i in döngüsü python

Arkadaşlar bir kod yazmak istiyorum yeni başladım ama mantığını anlamak için önce kodu görmek isityorum yazıp atarsanız sevinirim. Kod şu 1 den 100 e kadar olan çift sayıları çarpıcak 1 den 100 e kadar olan tek sayıları toplıcak büyük olanı küçük olanı çıkartıcak arasındaki farkı 3 e bölücek. Lütfen yardım edin.

ciftler_carpimi = 1 # carpmada etkisiz eleman
for i in range(2, 101, 2):
   ciftler_carpimi = ciftler_carpimi * i

yada [2, 4, 6 ... 100] = (2^50) * 50! bilgisini ve math.factorial() fonksiyonunu kullanabilirsin.

tekler_toplam = 0 # toplamada etkisiz eleman
for i in range(1, 101, 2):
   tekller_toplam =  tekller_toplam + i
if ciftler_carpimi >= tekler_toplam:
    fark = ciftler_carpimi - tekler_toplam
else:
    fark = tekler_toplam - ciftler_carpimi

ya da abs() kullanabilirsin.

sonuc = fark / 3
print(sonuc)

denemedim. yazım hatası varsa düzeltebilirsin. ya da sorunu yanlış anlamışsam tekrar açıklarsın.

1-100 arası sayılarda, Çift sayıların çarpımı, tek sayıların toplamından elbette büyük olacaktır. Bunun için koşul yazmaya bile gerek görmedim.
Sorunu doğru anladıysam aşağıdaki kod sana yardımcı olacaktır.

ciftler = 1
tekler = 0

for sayi in range(1,101):
    if sayi % 2 == 0:
        ciftler *= sayi
    else:
        tekler += sayi

print("çiftlerin çarpım işlemi sonucu:",ciftler, "\nTeklerin toplamı sonucu:",tekler,"\nciftler - tekler sonucu:", ciftler - tekler, "\nFark / 3 sonucu:", ((ciftler-tekler)/3))
(lambda ps: print((ps[0] - ps[1]) / 3))(functools.reduce(lambda a, e: (a[0], a[1] + e) if e % 2 else (a[0] * e, a[1]), range(1, 100), (1, 0)))

For i in döngüsü python

Önce kodu görüp yeni başlanmaz. Önce kod yazılır denenir sonra anlaşılmayan yer sorulur.

Python için dünyanın her yerinde for döngüsü python için aynı şekilde yazılır.

Bir range içinde tek yada çift saydırıp, altında ister çarpar ister toplarsın.

Neyin mantığını öğreneceksin? Toplamanın mantığını mı çarpmanın mantığını mı?

For döngüsünü mü?

Range i 2 den 100 e kadar başlat adımı da 2 seç altında sayını çarparsın. 100 e kadar çarpılan sayı ciddi büyük bir rakam olacaktır.

Aynı şekilde başlangıç değerini 1 den başlat, 99’a kadar 2 şer artırarak toplamlarını yap.

for’un öğrenilecek bir durumu yok.

Python – (1-N) arası Tek ve Çift Sayıların Toplamını Bulma – Web Tasarım & Programlama (yazilimkodlama.com)

Bir google araması ile dahi bulabilirsin bu tür kodları.

Hatta google’dan bunu bile buldum.

N e kadar olan çift sayıların toplamı ve çarpımını bulmak? - Python - YazBel forumu

Sence 1 den 100’e kadar çift sayıları çarparsan mı büyük olur, yoksa tek sayıları toplarsan mı?

Hadi oldu ki tereddüte düştün.

3’e bölmede ne gibi bir sorun yaşadın da kodunu görmek istiyorsun?

/3

yazmak mı zor farkına?

Yeni başlamak mazereti değil bunlar, öğrenme metodun yanlış.

Aşağıda parça parça vermişler basit bir for için bu kadar yazmaya gerek var mıydı bilmiyorum.

Aslına bakarsan for a bile gerek yok.

Lise matematiği bilsen yeterdi. Tabi for’u öğrenemeyeceğine ikna oldum bari lise matematiği öğrenebil diye.

Nümerik yöntem yerine analitik çözüm bari yapalım. Nasıl olsa, forsuz cevaplar da gördüm.

Gideri var demek ki.

import math

def gauss_even_factorial(n):
    k = n // 2
    return int(math.pow(2, k) * math.factorial(k))



def gauss_odd_sum(n):
   
    return int((n*(n+1))/2)
    
    
print((gauss_even_factorial(100)-gauss_odd_sum(99))//3) 

Onca bilgi ile for sorandan ümidi kesince, bari lise matematiği ile gauss teoremi anlatatalım da,

Ardışık sayılarda analitik işlemler konusunda for kullananların da belki bakış açısı değişir.

Tek satıra sığdırmak istesem def leri çıkarır tek satıra da sığdırırım da, insan okuyacak bunu diye fonksiyonları ayrı ayrı yazdım.

Kolay gelsin.

1 Beğeni