Arama butonu
Bu konudaki kullanıcılar: 1 misafir
10
Cevap
437
Tıklama
0
Öne Çıkarma
for döngüsü
L
5 yıl
Yüzbaşı
Konu Sahibi

herkese merhaba for göngülerini yeni görmeye başladım pekiştirlmesi için verilen soruları tabi gene ciddi manada zorladı
soru biri 1 kaç saat deneme yanılma yoluyla bu sonuca vardım doğruda olduğunu düşünüyorum
soru 2 listeiçindeki sayıları nasıl toplayacağımı baya düşündüm ama bir sonuca ulaşmadım hergan gibi bir metotda yok aslında bir yol var listenin içindeki sayıları tek tek indexleyip toplaya bilrim ama bu yolla olurmu tamda emin değilim
soru 3 nasıl yağacağım konusunda çok fazla emin değilim soru 1 benzer bişey yapacam sanırım
soru 4 konusunda len metodu kullanılacak muhtemelen ama nasıl olucak tamda emin değilim
soru 5 de soru 2 ile bağlantılı onu nasıl yapacağımı bilseydim muhtemelen bunuda yapardım
soru 6 yüksek olasılıkla şöyle olucaktır for i in sayılar : print(i == 5000) başka türlü olurmu bilmiyorum
bu soruları nasıl yapabilcegime dair ip ucu rica edicem

not : Python şuana dek öğrendiklerim Python Objeleri ve Veri Yapıları Python Operatörleri Pythonda Koşul İfadeleri ve son olarak döngüler konusu yeni yeni görmeye başladım bu durumu dikkate alarak bilgi vermenizi rica edicem




sayilar = [1,3,5,7,9,12,19,21]


# 1- Sayilar listesindeki hangi sayılar 3'ün katıdır ?
# 2- Sayilar listesinde sayıların toplamı kaçtır ?
# 3- Sayilar listesindeki tek sayıların karesini alınız.
"""
for i in sayilar:
print(i %3 == 0)
"""
for i in sayilar:
print(i)


# sehirler = ['kocaeli', 'istanbul', 'ankara', 'izmir', 'rize']

# 4- Şehirlerden hangileri en fazla 5 karakterlidir ?


# urunler = [
# {"name": "samsung s6" , "price": "3000"}
# {"name": "samsung s7" , "price": "4000"}
# {"name": "samsung s8" , "price": "5000"}
# {"name": "samsung s9" , "price": "6000"}
# {"name": "samsung s10" , "price": "7000"}
# ]
# 5- ürünlerin fiyatları toplamı nedir
# 6- ürünlerin fiyarını en fazla 5000 olanı görüntüleyiniz





< Bu mesaj bu kişi tarafından değiştirildi layk5t -- 7 Ağustos 2020; 17:30:44 >

C
5 yıl
Çavuş

python unutacak kadar zaman girse de araya bildiklerimi yazayım:

Uyarını sonradan gördüm ve açıklama ekliyorum.

Python list comprehension da döngü ile liste oluşturmana yarar.
örneğin 1den 10a kadar sayıları yazdıralım
1.çözüm :
for i in range(10):
print(i)
2.çözüm:
print([i for i in range(10)])

iki çözümün farkı => 1.de direk sayıyı yazdırıyoruz , 2.de ise elimizde 1den 10a kadar sayıların olduğu bir liste olmuş oluyor.



1) çözüm doğru.Aynı şekilde liste oluşturucular ile de yapabilirsin.
print([i for i in sayilar if i % 3 == 0])

2)sum() metodunu kullanabilirsin
print(sum(sayilar))

3)Yine liste oluşturucular ile yazdırmak için: (** karesini alır)
print([i**2 for i in sayilar if i % 2 == 1])

Diğer çözüm:
for i in sayilar:
if(i % 2 == 1):
print(i**2)

4) print([i for i in sehirler if len(i) <= 5])

5) print(sum([int(i["price"]) for i in urunler]))

Diğer çözüm:

toplam=0
for i in urunler:
toplam+=int(i["price"])

6)
print([i["name"] for i in urunler if int(i["price"]) <= 5000])





< Bu mesaj bu kişi tarafından değiştirildi chnkyn -- 9 Ağustos 2020; 7:1:48 >
Bu mesaja 1 cevap geldi.
L
5 yıl
Yüzbaşı
Konu Sahibi

cevabın için teşekürler anlaşılan algoritmanın mantığını tam anlamıyla oturtamadım soruların cevabını sonradan öğrendim cevapları gördğkten sonra nasıl bunu yapamadım dedirtdi range metodunu 3 aşşa 5 yukarı biliyorumda sum metodunu yeni görüyorum soruların cevapları burda 5 ve 6 sorulardaki algoritmayı ne yazkki hala anlayamadım ve kimsede if bloğlarınıda burlarda kullanabilirsin diye birşey demeyince baya bir sıkıntı çekdik

sayilar = [1,3,5,7,9,12,19,21]


# 1- Sayilar listesindeki hangi sayılar 3'ün katıdır ?
"""
for i in sayilar:
if i % 3 == 0:
print(i," sayısı 3'ün katıdır.")
"""
# 2- Sayilar listesinde sayıların toplamı kaçtır ?
"""
toplam = 0

for i in sayilar:
toplam += i

print("Sayıların toplamı : ",toplam)
"""
# 3- Sayilar listesindeki tek sayıların karesini alınız.
"""
for i in sayilar:
if i % 2 != 0:
print(i," sayısının karesi : ", i**2)
"""
"""
sehirler = ['kocaeli', 'istanbul', 'ankara', 'izmir', 'rize']
sonuc = list()

for i in sehirler:
if len(i) <= 5:
sonuc.append(i)

print(sonuc)
"""
# 4- Şehirlerden hangileri en fazla 5 karakterlidir ?


urunler = [
{"name": "samsung s6" , "price": "3000"},
{"name": "samsung s7" , "price": "4000"},
{"name": "samsung s8" , "price": "5000"},
{"name": "samsung s9" , "price": "6000"},
{"name": "samsung s10" , "price": "7000"}
]
# 5- ürünlerin fiyatları toplamı nedir
"""
toplam = 0

for i in urunler:
a = int(i["price"])
toplam += a

print(toplam," TL")
"""
# 6- ürünlerin fiyarını en fazla 5000 olanı görüntüleyiniz
"""
for i in urunler:
a = int(i["price"])

if a <= 5000:
print(i["name"], a, "TL")
"""





< Bu mesaj bu kişi tarafından değiştirildi layk5t -- 10 Ağustos 2020; 0:17:26 >


Bu mesajda bahsedilenler: @chnkyn
C
5 yıl
Çavuş

5. ve 6. soru için elindde ürünler adında bir DİZİ var ve bu dizinin her elemanı DİCT(dictionary,sözlük) tipinde.dictionaryler key,value tipinde çalışır.Her key için karşılık gelen bir value var.adı üstünde sözlük.ing türkçe sözlük olarak örnek vereyim
sozluk={"elma":"apple"}
yazım şekli { key : value , } "," virgül ile bir sonraki eleman eklenir.sozluk["elma"] dediğimde bana ingilizcedeki karşılığı yani apple verecektir.

cevaplara bakalım:

5.soru için =>
toplam=0
for i in urunler:
toplam+=int(i["price"])

bu şekilde çözebilirsin.
toplam = 0 değişkeni atadık.
for i in urunler: ile urunler DİZİMİZİN üstünde döngü kuruyoruz.
toplam += int(i["price"]) ile de dizinin içinde i. eleman(ki kendisi bir dictionary oluyor) için i["price"] key'ine karşılık gelen value.

Şimdi döngü ilk turunda farzedelim.
i elemanımız => {"name": "samsung s6" , "price": "3000"}, olacaktır. i["price"] => 3000 verdi ve biz bunu integera çevirip toplama ekledik.

2.turda:
i elemanımız => {"name": "samsung s7" , "price": "4000"},, olacaktır. i["price"] => 4000 verdi ve biz bunu integera çevirip toplama ekledik.

Benzer şekilde kaç eleman varsa o kadar dönecektir.


6.soru :
5.soruyu anladıysan her eleman üzerinde gezdiğinde elinde olan nesnenin bir dictionary nesnesi olduğunu anlarsın.burada her turda price değerini integera çevirip <=5000 kontrolünü sağlıyorsa yazdırıyoruz.



L
5 yıl
Yüzbaşı
Konu Sahibi

cevabın için teşekürler ve tane tane anlatığınız için ayrı bir teşekürler ufak bir noktaya takıldım sadece i degişkeni tek tek ürünleri gezip ordan sonra edindiği bilgileri a degişkenin içine atıyor degilmi



C
5 yıl
Çavuş

Örnekte a değişkenine ihtiyaç olmasa da kullanabilirsin.

a=int(i["price"])

if a<10:

mesela bu örnekte önce a'ya atıyoruz daha sonra a'yı kontrol ediyoruz ama tek satırda da yazılabilir.

if int(i["price"]) < 10:

bu şekilde.



L
5 yıl
Yüzbaşı
Konu Sahibi

şimdiden kusra bakmayın geç cevap verdim a değşkeni olmadanda bu işlem yapılabilir olarak anladım sanırım doğru anladım



C
5 yıl
Çavuş

evet.bir üstte yazdığım cevapta zaten buna örnek verdim


Bu mesaja 1 cevap geldi.
L
5 yıl
Yüzbaşı
Konu Sahibi

tekrardan merhaba gene 6 soruda takıldığım bir nokta var
urunler = [
{"name": "samsung s6" , "price": "3000"},
{"name": "samsung s7" , "price": "4000"},
{"name": "samsung s8" , "price": "5000"},
{"name": "samsung s9" , "price": "6000"},
{"name": "samsung s10" , "price": "7000"}
]
for i in urunler:
if int(i["price"]) <= 5000:
print(i)

şimdi burda benim anladığım i değiişkeni bütün listeyi(bu listeyi bile tam anlamış değilim liste içinde sets listemi yoksa sözlük tipi listemi var tam olarak bilmiyorum) sadece fiyat bölümünü dolaşıp 5000 az veya eşit bilgisini yazdır ama tabi böyle olmadı hem telefonların fiyatını hemde isminlerini yazdırdı mantiken sadece fiyatı yazdırması gerekmiyormu bu benim ister istemez kafamı karıştırdı benim bilmediğm bişey var burda ama ne





< Bu mesaj bu kişi tarafından değiştirildi layk5t -- 21 Ağustos 2020; 23:4:32 >


Bu mesajda bahsedilenler: @chnkyn
C
5 yıl
Çavuş

print(type(urunler)) => <class 'list'> döner.Yani urunler bir listedir.

Ama for içinde i'nin türüne bakarsan:
print(type(i)) => <class 'dict'> döner.

Yani urunler listesinin her elemanı bir dictionary'dir.For döngüsü ile urunlerin elemanları üzerinden dönüyorsun.

for i in urunler:
print(i)

Dersek çıktı şöyle olur:
{'name': 'samsung s6', 'price': '3000'}
{'name': 'samsung s7', 'price': '4000'}
{'name': 'samsung s8', 'price': '5000'}
{'name': 'samsung s9', 'price': '6000'}
{'name': 'samsung s10', 'price': '7000'}

Ama biz for döngüsü içinde bir if kontrolü yapıyoruz.
if int(i["price"]) <= 5000

Bununla dictionary olan i içinde price hücresini bul,oradaki değeri integer'a çevir ve 5.000 den küçük mü değil mi kontrolü yapıyoruz.

Eğer koşul sağlanıyorsa i'nin tamamını yazdır demişiz => print(i) satırı ile.

İstediğin sadece o koşulu sağlayan ürünün adı ise; print(i["name"]) veya ürünün fiyatını görmek istiyorsan print(i["price"]) dersin.Yani biz i'nin tamamını yazdırdık.İf içinde yazdırmak istediğin bilgi sana kalmış.


Bu mesaja 1 cevap geldi.
L
5 yıl
Yüzbaşı
Konu Sahibi

gerçekden çok teşekür ederim doğru orda if koşulu koyduk bu koşul salanıyorsa i nin yanı dick listenin tamanını yazdır dedik bunu fark edemedim sayenizde kafamdakı soru işaretleri tek tek azaldı burayı tam çözemediğim için while döngülerine geçemedim sayenizde gönül rahatlıyla geçebilicem birde bu tür uygulamaları bulabilecigim bir türkçe site varmı iyi hoş öğrendim ama unutma ihtimalim var unutmamak için böyle bir kaç tane daha algoritma yazmam gerekiyor




Bu mesajda bahsedilenler: @chnkyn
DH Mobil uygulaması ile devam edin. Mobil tarayıcınız ile mümkün olanların yanı sıra, birçok yeni ve faydalı özelliğe erişin. Gizle ve güncelleme çıkana kadar tekrar gösterme.