Döngü kullanarak aldığımız verileri sıralı listelere ayırmak

ben endüstri mühendisliği öğrencisiyim. hocamız derste bir yöntem söyledi ve benim dikkatimi çekti biraz araştırdım ve kodunu yazmayı istedim ama bir noktada tıkandım. kullanıcıdan verileri aldıktan sonra liste içine kayıt ediyorum ve bir nevi matris haline getiriyorum. Ama liste içindeki verileri gruplandırmam lazım bunun için kullanıcıdan verileri alırken otomatik olarak listelere ayırsa daha güzel bir kod olur diye düşündüm. yazılımda yeniyim ama böyle bir şey var mı merak ettim.


burada girdiğim tüm verileri kriter ismine bağlı olarak farklı listeler haline getirmek istiyorum.

Bkz Soru Sorarken Sıkça Düşülen Hatalar


Kullanıcının sağlayacağı girdi ve elde etmek istediğiniz listelere örnek verirseniz sorunu daha kolay anlarız.

Ekran Görüntüsü (7)
bu şekilde örnek verileri girdiğimiz zaman;
yıl bilgileri ve teker büyüklüğü aynı liste içinde karmaşık bir şekilde, benim istediğim ise ben bu verileri girerken kendisi otomatik olarak listelere ayırsın. Yıl ve teker büyüklüğü gibi. bunu kendim yapamam çünkü alternatif ve kriter sayısı herhangi bir şey olabilir.
umarım kendimi ifade edebilmişimdir…

  • Mesela teker büyüklüğü ismindeki bir listede 80,70,65… gibi değerler tutarken yıl isimli bir değişkende 2012,2013,2015… gibi değerler mi tutmak istiyorsunuz?
  • Bu tuttuğunuz değerler birbirleri ile bağlantılı mı olacak? Yani yıl listesinin 1.sırasındaki eleman ile teker büyüklüğü listesinin 1.sırasındaki değerle ilişikili mi olacak? Sıralama önemsiz mi olacak?
  • Başka tür veriler de olacaksa aldığınız verileri hangi kritere göre gruplandıracaksınız?
  • Veriler sıralı bir şekilde mi girilecek?

Örnek olarak şu verileri gireceğim ve şu şekilde bir liste istiyorum diyebilir misiniz?
Mesela; kullanıcı sırası ile 2018-Opel-Astra-80 şeklinde veri girecek ve bu bilgilerden 1.girdiği yıllar isimli değişkende tutulacak,2.girdiği X değişkeninde,3.girdiği Y değişkeninde 4.girdiği Z değişkeninde tutulacak. gibi bir format verebilirseniz yardımcı olabiliriz.

Ayrıca yazmış olduğunuz kodu kod etiketleri içinde yazıp gönderirseniz kodunuzu deneme imkanımız olacaktır. Ekran fotoğrafı şeklinde paylaştığınız kodu resimden bakarak yazmayan kimse kodunuzu çalıştıramayacaktır.

Soru Sorarken Sıkça Düşülen Hatalar

Yanlış anlamadıysam eğer, sözlüğe benzer bir kullanım istiyorsunuz.

sözlük = {}

alternatif_sayısı = int(input("Alternatif sayısı: "))
kriter_sayısı = int(input("Kriter sayısı: "))
alternatifler = []
kriterler = []

for sayı in range(alternatif_sayısı):
    alternatif = input(f"{sayı + 1}. alternatif: ")
    alternatifler.append(alternatif)
    sözlük[alternatif] = {}
    
for sayı in range(kriter_sayısı):
    kriter = input(f"{sayı + 1}. kriter: ")
    kriterler.append(kriter)

for alternatif in alternatifler:
    for kriter in kriterler:
        değer = int(input(f"{alternatif} için {kriter} bilgisini giriniz: "))
        sözlük[alternatif].update({kriter: değer})

print(sözlük)
Alternatif sayısı: 2
Kriter sayısı: 2
1. alternatif: opel
2. alternatif: toyota
1. kriter: yıl
2. kriter: uzunluk
opel için yıl bilgisini giriniz: 2016
opel için uzunluk bilgisini giriniz: 500
toyota için yıl bilgisini giriniz: 2014
toyota için uzunluk bilgisini giriniz: 480
{'opel': {'yıl': 2016, 'uzunluk': 500}, 'toyota': {'yıl': 2014, 'uzunluk': 480}}
from pickle import TRUE

n=int(input("Alternatif sayısı: "))

m=int(input("kriter sayısı: "))

alternatifler=[]

kriterler=[]

veriler=[]

for k in range(0,n,1):

    alternatifİsmi=input("alternatifin ismini girin: ")

    alternatifler.append(alternatifİsmi)

for b in range(0,m,1):

    kriterİSMİ=input("kriterin ismini girin: ", )

    kriterler.append(kriterİSMİ)

x=0

for a in range(0,n,1):

    while TRUE:

        veri1=int(input(alternatifler[a]+" için "+kriterler[x]+" bilgisi girin : "))

        veriler.append(veri1)

        x=x+1

        if x==len(kriterler):

            break

    x=0

print("veri girme işlemi bitmiştir: ")

ilk sorum olduğu için yanlışlarım oluyor sabırla ilgilendiğiniz için teşekkürler.

  • Benim kriter olarak girdiğim ifade ne ise onun otomatik olarak bir liste haline getirilip sonrasında girdiğim verileri onun içine kayıt etmek istiyorum.

  • Bu tuttuğum değerlerin sırası önemsiz yani yıl listesinin 1. elemanı ile teker büyüklüğü listesinin 1. elemanı arasında herhangi bir ilişki yok.

  • Aldığım verileri kriter ismine göre gruplandıracağım ayrıca verileri girerken belli bir sıra ile giriyorum programı çalıştırdığınızda anlayacağınızı umuyorum.

  • evet. Veriler sayaç ve for döngüsünden dolayı sıralı bir şekilde giriliyor.

Ekran Alıntısı

bu şekilde bir excel tablosu olarak düşündüğünüzde, ben şu an verilerin hepsini aynı listeye giriyorum ama benim yıl sütununun tamamını işleme sokmam gereken hesaplamalar yapmam gerekiyor. Bunun için ben verileri girerken yıl isminde(yıl ismi olmasını en başta kriter ismine göre yazdık)bir liste haline getirsin ki ben sadece onları işleme alabileyim diğer türlü toplu bir veri listesinden tek tek yıl bilgilerini almam imkansız. Aynı şekilde teker adında bir liste açıp teker verilerini o liste içinde toplamasını istiyorum.
umarım kendimi ifade edebilmişimdir.

@Gok_Mavisi_Anka’nın yazdığı kod ile istediğin şekilde verileri tutabiliyorsun. for döngüsü ile istediğin kriter üzerinde istediğin işlemi yaptırabilirsin. İlgili kod üzerinde aşağıdaki kod ile belirttiğin kriter ismindeki verilere ulaşabilirsin. (Daha kolay bir yolu olabilir, sözlük yapısına ben de çok hakim değilim.)

for i,j in sözlük.items():
  print(j["kriter_ismi"])

İstersen liste ye çevirebilir liste olarak da kullanabilirsin.

liste = list(sözlük.items())