Python for döngüsü toplama

merhaba
girilen n sayısının toplamını bulan programı range kullanmadan for döngüsü ile nasıl yazabilirim.
n = int(input())
toplam = 0
for i in range(n):
x = int(input())
toplam = toplam + x
print(toplam)

1 Beğeni

while döngüsü olur mu

1 Beğeni

while döngüsü ile bende yazabildim. fakat for döngüsü ile yazamayınca forumda paylaşmak istedim. teşekkür ederim.
i=0

toplam=0

n=int(input(“bir sayı giriniz:”))

while i<n:

sayi=int(input("bir sayı giriniz:"))

toplam=toplam+sayi

i+=1

print(toplam)

Neden range kullan(a)mıyoruz ?
İstediğin python’da pek mümkün değil (tabi kendi fonksiyonunuzu yazmazsanız) .

sizin bu kod while döngüsünden çıkamadı. Kodlarınızı yanıtla kısmında </> simgesine basarak oluşan yere yazınız.

i=0

toplam=0

n=int(input("bir sayı giriniz:"))

while i<n:
    sayi=int(input("bir sayı giriniz:"))
    toplam=toplam+sayi
    i+=1
print(toplam)
1 Beğeni

python ı yeni öğreniyorum, programdaki fonksiyonlardan ziyade öğrendiğim for döngüsüyle yazmak istedim. belkide yazılamaz fikrim yok :slight_smile:

i=0
toplam=0
n=int(input("bir sayı giriniz:"))
while i<n:
    sayi=int(input("bir sayı giriniz:"))
    toplam=toplam+sayi
    i+=1
print(toplam)
1 Beğeni

tamam sorun düzeldi. 2 inputun da yazıları aynı olunca fark edemedim.

1 Beğeni

İmkansız değil ama kendi fonksiyonlarınızı yazmanız gerekiyor:

def dön(n):
	i = 0
	array = []
	while i < n:
		array.append(i)
		i += 1
	return array

n = int(input("Kaç sayı girmek istediğiniz giriniz : "))
toplam = 0
for i in dön(n):
	x = int(input("Sayı giriniz : "))
	toplam+= x

print(toplam)

Ama tekerleği tekrar icat etmeye gerek yok :slight_smile:

Maalesef python’da kullanabileceğimiz çok fazla döngü bulunmuyor ki istediğiniz gibi range kullanmadan kodu yazabilelim.

2 Beğeni

teşekkür ederim cevap için :handshake:

2 Beğeni
def range_degil(n):
	i = 0
	while i < n:
		yield i
		i += 1

n = int(input())
toplam = 0
for i in range_degil(n):
print(i)
x = int(input())
toplam = toplam + x
print(toplam)

2 Beğeni

Merhaba;

for döngüsü, in ile bir liste kullanır. Range kullanmak zorunda değilsiniz. Range fonksiyonu size listeyi elle doldurma zorluğunu kolaylaştırmak için vardır.

Aldığınız input ile bir liste doldurup bunu da doğrudan for da indeks olarak kullanabilirsiniz.

numbers=[0,1,2,3,4,5,6,7,8,9,10]

n=int(input("Bir sayı giriniz:"))


index= numbers[:n]


for i in index:
    n=n+i
print(n)

Örnek olarak elle 0-10 arasındaki rakamlar olan bir index listesi ile kodladım.

Bu listeyi bir while yada foor döngüsüyle yada numpy kütüphanesi komutlarıyla da hızla doldurabilirsiniz.

Python nesne yönelimli bir dildir ve operatörler ve keywordler class gibi tanımlanır. C gibi dillerde sadece int kullanırken, for için pythonda istediğiniz listeyi kullanabilmeniz harf ve kelimelerle de çalışmada kolaylık sağlaması için bu tercih edilmiştir.

range kullanmamak gibi bir şarta neden ihtiyaç duyduğunuzu bilmiyorum, ama range size bir listeyi kolay yoldan doldurmayı ve for döngüsüne parametre sağlamayı kolaylaştırır.

numpy kütüphanesi ile arrange fonksiyonu ile de liste doldurabilirsiniz.

Daha da basiti for yada while kullanmadan da sorunun çözümü var.

n sayının toplamı:
( n*(n+1))/2
dir zaten.

Bu kısmı for öğrenmekten bağımsız, bir sorunun çözümünün birden çok yolu olabileceğini hatırlatmak için yazım sadece.

EDIT 1:

Bu da liste oluşturup listeyi sıfırlarla doldurup, listenin indeksini enumerate ile alarak liste boyunu sayarak toplama için bir örnek.

n=int(input("Bir sayı giriniz:"))

index= [0]*n

for idx, item in enumerate(index):
  n=n+idx

print("Sonuc:", n) 
1 Beğeni

verdiğiniz cevaplar konuyu daha iyi kavramamı sağladı cevabınız için teşekkür ederim.

1 Beğeni