Takip et

Python’da Listeler ve Rastgelelik: Veri Yönetimi ve Oyun Geliştirme

Python’da Listeler ve Rastgelelik: Veri Yönetimi ve Oyun Geliştirme Python’da veri yönetimi ve dinamik uygulamalar geliştirmenin temel taşlarından ikisi olan listeler ve rastgelelik modülü, programcıların iş akışını büyük ölçüde kolaylaştırır.

Python’da Listeler ve Rastgelelik: Veri Yönetimi ve Oyun Geliştirme

Python’da veri yönetimi ve dinamik uygulamalar geliştirmenin temel taşlarından ikisi olan listeler ve rastgelelik modülü, programcıların iş akışını büyük ölçüde kolaylaştırır. Bu makalede, bu iki güçlü aracı sıfırdan başlayarak derinlemesine inceleyecek, gerçek dünya senaryoları üzerinden uygulamalı örneklerle pekiştirecek ve ileri düzey kullanıcılar için bazı püf noktalarını paylaşacağız. Özellikle veri setlerini düzenlemek, şans faktörünü oyunlara dahil etmek veya rastgele seçimler yapmak gibi konularda Python’ın sunduğu imkanları keşfedeceğiz.

Listeler: Python’ın Esnek Veri Yapısı

Python’daki listeler, farklı veri tiplerini (sayılar, metinler, hatta diğer listeler) bir arada barındırabilen, sırası önemli olan ve değiştirilebilir (mutable) veri koleksiyonlarıdır. Diğer programlama dillerindeki dizilere (array) benzese de, Python listeleri çok daha esnektir. Bir liste oluşturmak oldukça basittir; köşeli parantezler [] içine elemanları virgülle ayırarak yerleştiririz. Örneğin, bir öğrenci listesi oluşturmak istediğimizde şöyle bir yol izleyebiliriz:

ogrenciler = ["Ali", "Ayşe", "Mehmet", "Zeynep"]
sayilar = [10, 25, 7, 42, 15]
karisik_liste = ["Merhaba", 123, True, 3.14, [1, 2, 3]]

Listelerin en önemli özelliklerinden biri, elemanlarına indeks (index) numaraları aracılığıyla erişebilmemizdir. İndeksler 0'dan başlar. Yani, ogrenciler listesindeki ilk elemana ("Ali") ulaşmak için ogrenciler[0] yazarız. Benzer şekilde, son elemana ulaşmak için negatif indeksleme kullanabiliriz; ogrenciler[-1] bize "Zeynep"'i verecektir.

Listelerle yapılabilecek temel işlemler şunlardır:

* Eleman Ekleme: append() metodu listenin sonuna yeni bir eleman ekler. insert(index, eleman) metodu ise belirli bir indekse eleman eklememizi sağlar.

ogrenciler.append("Can")
    print(ogrenciler) # Çıktı: ['Ali', 'Ayşe', 'Mehmet', 'Zeynep', 'Can']
    ogrenciler.insert(1, "Elif")
    print(ogrenciler) # Çıktı: ['Ali', 'Elif', 'Ayşe', 'Mehmet', 'Zeynep', 'Can']


* Eleman Silme: remove(eleman) metodu belirtilen değeri listeden siler (ilk karşılaştığı elemanı). pop() metodu ise belirtilen indeksteki elemanı siler ve onu döndürür (varsayılan olarak son elemanı siler). del liste[index] ile de belirli bir indeksteki elemanı silebiliriz.

ogrenciler.remove("Mehmet")
    print(ogrenciler) # Çıktı: ['Ali', 'Elif', 'Ayşe', 'Zeynep', 'Can']
    silinen_ogrenci = ogrenciler.pop(2) # Ayşe'yi siler
    print(silinen_ogrenci) # Çıktı: Ayşe
    print(ogrenciler) # Çıktı: ['Ali', 'Elif', 'Zeynep', 'Can']
    del ogrenciler[0] # Ali'yi siler
    print(ogrenciler) # Çıktı: ['Elif', 'Zeynep', 'Can']


* Listeleri Birleştirme: + operatörü ile iki listeyi birleştirebiliriz.

yeni_ogrenciler = ["Deniz", "Ece"]
    tum_ogrenciler = ogrenciler + yeni_ogrenciler
    print(tum_ogrenciler) # Çıktı: ['Elif', 'Zeynep', 'Can', 'Deniz', 'Ece']


* Dilimleme (Slicing): Listenin belirli bir bölümünü almak için dilimleme kullanılır. liste[baslangic:bitis:adim] şeklinde bir yapısı vardır. baslangic dahil, bitis hariçtir.

sayilar = [10, 25, 7, 42, 15, 30, 5, 20]
    ilk_uc = sayilar[0:3] # veya sayilar[:3]
    print(ilk_uc) # Çıktı: [10, 25, 7]
    ortanca_bes = sayilar[2:7]
    print(ortanca_bes) # Çıktı: [7, 42, 15, 30, 5]
    her_ikinci = sayilar[::2] # Baştan sona her ikinci elemanı alır
    print(her_ikinci) # Çıktı: [10, 7, 15, 5]
    ters_liste = sayilar[::-1] # Listeyi ters çevirir
    print(ters_liste) # Çıktı: [20, 5, 30, 15, 42, 7, 25, 10]


* Uzunluk Bulma: len() fonksiyonu listenin eleman sayısını verir.

print(len(ogrenciler)) # Çıktı: 3


* Sıralama: sort() metodu listeyi kendi içinde sıralar. sorted() fonksiyonu ise orijinal listeyi değiştirmeden sıralanmış yeni bir liste döndürür.

sayilar.sort()
    print(sayilar) # Çıktı: [5, 7, 10, 15, 20, 25, 30, 42]
    sirali_ogrenciler = sorted(ogrenciler)
    print(sirali_ogrenciler) # Çıktı: ['Can', 'Elif', 'Zeynep']

Listeler, veri analizi, kullanıcı girdilerini saklama, ayarların yönetimi gibi birçok alanda temel bir araçtır. Örneğin, bir e-ticaret sitesinde sepete eklenen ürünleri bir liste içinde saklayabilir, bir oyunun en yüksek skorlarını bir liste ile takip edebiliriz.

Rastgelelik: Şans Faktörünü Python'a Dahil Etmek

Python'ın random modülü, rastgele sayılar üretmek, rastgele seçimler yapmak ve dizileri karıştırmak gibi çeşitli rastgelelik işlemleri için güçlü araçlar sunar. Bu modül, özellikle simülasyonlar, oyunlar, şifreleme ve veri örneklemesi gibi alanlarda kritik öneme sahiptir.

Temel random modülü fonksiyonlarından bazıları şunlardır:

* random.random(): 0.0 (dahil) ile 1.0 (hariç) arasında rastgele bir ondalık sayı üretir.

import random
    rastgele_ondalik = random.random()
    print(rastgele_ondalik) # Örneğin: 0.783456789


* random.randint(a, b): a ve b (her ikisi de dahil) arasında rastgele bir tam sayı üretir.

rastgele_tam_sayi = random.randint(1, 100)
    print(rastgele_tam_sayi) # Örneğin: 47


* random.uniform(a, b): a ve b arasında rastgele bir ondalık sayı üretir. a ve b'nin dahil olup olmaması, yuvarlama hassasiyetine bağlı olabilir.

rastgele_gercek_sayi = random.uniform(10.5, 25.5)
    print(rastgele_gercek_sayi) # Örneğin: 18.2345678


* random.choice(sequence): Verilen bir diziden (liste, demet vb.) rastgele bir eleman seçer.

meyveler = ["Elma", "Armut", "Muz", "Çilek", "Portakal"]
    rastgele_meyve = random.choice(meyveler)
    print(rastgele_meyve) # Örneğin: Muz


* random.choices(sequence, k=n): Verilen bir diziden rastgele n adet eleman seçer. Elemanlar tekrarlı seçilebilir. weights parametresi ile olasılıkları belirleyebilirsiniz.

renkler = ["Kırmızı", "Mavi", "Yeşil"]
    rastgele_renkler = random.choices(renkler, k=5)
    print(rastgele_renkler) # Örneğin: ['Mavi', 'Kırmızı', 'Mavi', 'Yeşil', 'Kırmızı']


* random.sample(population, k): Verilen bir popülasyondan (liste, küme vb.) rastgele k adet benzersiz eleman seçer. Tekrarlı seçim yapmaz.

sayilar_ornek = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    rastgele_bes_benzersiz = random.sample(sayilar_ornek, k=5)
    print(rastgele_bes_benzersiz) # Örneğin: [7, 2, 10, 4, 1]


* random.shuffle(x): Verilen bir listeyi kendi içinde rastgele karıştırır. Orijinal liste değiştirilir.

kartlar = ["As", "Papaz", "Kız", "Vale", "10"]
    random.shuffle(kartlar)
    print(kartlar) # Örneğin: ['Kız', '10', 'As', 'Vale', 'Papaz']

Bu fonksiyonlar, rastgelelik gerektiren her türlü senaryoda hayat kurtarıcıdır.

Vaka Analizi 1: Basit Bir Zar Oyunu Geliştirme

Diyelim ki, iki oyuncunun zar atarak yarıştığı basit bir oyun geliştirmek istiyoruz. Kim daha yüksek atarsa o kazanır. Bu oyunu Python'da random modülünü kullanarak kolayca yapabiliriz.

Öncelikle, her oyuncunun zar atma işlemini simüle etmeliyiz. Bir zarın 1 ile 6 arasında rastgele bir sayı ürettiğini biliyoruz.

import random

def zar_at():
  """1 ile 6 arasında rastgele bir zar atışı sonucu döndürür."""
  return random.randint(1, 6)

def oyun_baslat():
  print("Zar Oyununa Hoş Geldiniz!")

  oyuncu1_zar = zar_at()
  oyuncu2_zar = zar_at()

  print(f"Oyuncu 1 zar attı: {oyuncu1_zar}")
  print(f"Oyuncu 2 zar attı: {oyuncu2_zar}")

  if oyuncu1_zar > oyuncu2_zar:
    print("Oyuncu 1 kazandı!")
  elif oyuncu2_zar > oyuncu1_zar:
    print("Oyuncu 2 kazandı!")
  else:
    print("Berabere!")

oyun_baslat()

Bu kod, her çalıştırmada farklı sonuçlar üretecek ve rastgeleliğin oyunlara nasıl eğlence katabileceğini gösterecektir. Oyunu daha da geliştirebilir, birden fazla tur ekleyebilir, puanlama sistemleri kurabiliriz. Örneğin, oyuncuların isimlerini alıp sonuçları daha kişisel hale getirebiliriz.

import random

def zar_at():
  return random.randint(1, 6)

def oyun_baslat():
  oyuncu1_adi = input("Oyuncu 1'in adı: ")
  oyuncu2_adi = input("Oyuncu 2'nin adı: ")

  print(f"\n{oyuncu1_adi} ve {oyuncu2_adi} zar atıyor!")

  oyuncu1_zar = zar_at()
  oyuncu2_zar = zar_at()

  print(f"{oyuncu1_adi} zar attı: {oyuncu1_zar}")
  print(f"{oyuncu2_adi} zar attı: {oyuncu2_zar}")

  if oyuncu1_zar > oyuncu2_zar:
    print(f"{oyuncu1_adi} kazandı!")
  elif oyuncu2_zar > oyuncu1_zar:
    print(f"{oyuncu2_adi} kazandı!")
  else:
    print("Berabere kaldınız!")

oyun_baslat()

Bu basit örnek, random.randint ve kullanıcı girdisi almayı birleştirerek temel bir oyun mekaniği oluşturmanın ne kadar kolay olduğunu gösteriyor.

Vaka Analizi 2: Rastgele Şifre Oluşturucu

Güvenlik açısından güçlü ve rastgele şifreler oluşturmak önemlidir. Python ile bunu otomatikleştirebiliriz. Bir şifre oluşturucu, büyük ve küçük harfler, rakamlar ve özel karakterlerden oluşan bir havuzdan rastgele seçimler yaparak benzersiz ve tahmin edilmesi zor şifreler üretebilir.

import random
import string

def rastgele_sifre_olustur(uzunluk=12):
  """Belirtilen uzunlukta rastgele bir şifre oluşturur."""
  karakterler = string.ascii_letters + string.digits + string.punctuation
  # string.ascii_letters: 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
  # string.digits: '0123456789'
  # string.punctuation: '!"#$%&\'()*+,-./:;<=>?@[\\]^_{|}~'

  if uzunluk < 4:
    print("Şifre uzunluğu en az 4 olmalıdır.")
    return None

  # Şifrenin en az bir büyük harf, bir küçük harf, bir rakam ve bir özel karakter içermesini sağlamak
  sifre_listesi = []
  sifre_listesi.append(random.choice(string.ascii_uppercase))
  sifre_listesi.append(random.choice(string.ascii_lowercase))
  sifre_listesi.append(random.choice(string.digits))
  sifre_listesi.append(random.choice(string.punctuation))

  # Kalan karakterleri rastgele doldur
  for _ in range(uzunluk - 4):
    sifre_listesi.append(random.choice(karakterler))

  # Listeyi karıştırarak karakterlerin yerini rastgeleleştir
  random.shuffle(sifre_listesi)

  # Listeyi birleştirerek şifreyi string'e dönüştür
  return "".join(sifre_listesi)

# 16 karakterli rastgele bir şifre oluşturalım
yeni_sifre = rastgele_sifre_olustur(16)
if yeni_sifre:
  print(f"Oluşturulan rastgele şifre: {yeni_sifre}")

Bu örnektestringmodülünden faydalandık.string.ascii_letters,string.digitsvestring.punctuationgibi sabitler, yaygın olarak kullanılan karakter kümelerini kolayca elde etmemizi sağlar. Şifrenin en az birer adet büyük harf, küçük harf, rakam ve özel karakter içermesini sağlamak için önce bu karakterlerden birer tane ekleyip, ardından kalan uzunluğu rastgele karakterlerle tamamladık. Son olarakrandom.shuffleile karakterlerin sırasını karıştırarak daha güvenli bir şifre elde ettik.

Listeleri ve Rastgeleliği Birlikte Kullanma

Listeler verandommodülü, birbirini tamamlayan güçlü araçlardır. Listeler veriyi yapılandırırken,randommodülü bu yapılandırılmış veriye dinamizm ve öngörülemezlik katar.

Örneğin, bir anket uygulamasında rastgele sorular sormak isteyebiliriz. Soruları bir listeye koyup, her seferinde listeden rastgele bir soru seçebiliriz.

import random

sorular = [
  "En sevdiğiniz renk nedir?",
  "Hafta sonu en çok ne yapmaktan hoşlanırsınız?",
  "Python öğrenmek size ne hissettiriyor?",
  "En son okuduğunuz kitap hangisiydi?",
  "Hayalinizdeki tatil yeri neresi?"
]

def rastgele_soru_sor():
  secilen_soru = random.choice(sorular)
  print(f"Soru: {secilen_soru}")
  cevap = input("Cevabınız: ")
  print(f"Teşekkürler, cevabınız kaydedildi: {cevap}\n")

# Kullanıcıya 5 farklı rastgele soru soralım
for i in range(5):
  rastgele_soru_sor()

# Eğer aynı sorunun tekrar sorulmasını istemiyorsak,
# sorular listesinden seçilen soruyu çıkarabiliriz.
# Ancak bu durumda sorular listesi zamanla kısalacaktır.
# Alternatif olarak, sorulan soruları ayrı bir listede takip edebiliriz.

sorulan_sorular = []
def rastgele_benzersiz_soru_sor(mevcut_sorular):
    if not mevcut_sorular:
        print("Tüm sorular soruldu!")
        return None

    secilen_soru = random.choice(mevcut_sorular)
    print(f"Soru: {secilen_soru}")
    cevap = input("Cevabınız: ")
    print(f"Teşekkürler, cevabınız kaydedildi: {cevap}\n")
    return secilen_soru

# Benzersiz soru sorma örneği
kalan_sorular = list(sorular) # Orijinal listeyi kopyalıyoruz ki orijinali bozulmasın
for _ in range(len(sorular)): # Tüm sorular sorulana kadar döngü
    sorulan = rastgele_benzersiz_soru_sor(kalan_sorular)
    if sorulan:
        kalan_sorular.remove(sorulan)
    else:
        break

Bu örnek,random.choiceile bir listeden rastgele eleman seçmenin ne kadar basit olduğunu gösteriyor. Ayrıca,kalan_sorularlistesini kullanarak aynı sorunun tekrar sorulmasını engelleme mantığını da ekledik. Bu, veri setlerinden rastgele örnekler çekerken veya bir testteki soruları rastgele sıralarken sıkça karşılaşılan bir durumdur.

Veri Analizi ve Manipülasyonunda Listeler

Gerçek dünya veri analizi senaryolarında, veriler genellikle listeler (veya daha karmaşık veri yapıları olan DataFrame'ler) halinde gelir. Bu verileri işlemek, filtrelemek, sıralamak ve özetlemek için listeler ve listeler üzerinde çalışan fonksiyonlar kullanılır.

Örneğin, bir şirketin aylık satışlarını tutan bir listemiz olduğunu varsayalım:

aylik_satislar = [15000, 18000, 22000, 20000, 25000, 23000, 28000, 30000, 29000, 32000, 35000, 33000]

# Ortalama satışı hesaplama
toplam_satis = sum(aylik_satislar)
ay_sayisi = len(aylik_satislar)
ortalama_satis = toplam_satis / ay_sayisi
print(f"Yıllık Ortalama Satış: {ortalama_satis:.2f} TL")

# En yüksek ve en düşük satışları bulma
en_yuksek_satis = max(aylik_satislar)
en_dusuk_satis = min(aylik_satislar)
print(f"En Yüksek Aylık Satış: {en_yuksek_satis} TL")
print(f"En Düşük Aylık Satış: {en_dusuk_satis} TL")

# Belirli bir satışın (örneğin 25000 TL) kaçıncı ayda gerçekleştiğini bulma
try:
    ay_index = aylik_satislar.index(25000)
    print(f"25000 TL'lik satış {ay_index + 1}. ayda gerçekleşmiştir.") # Index 0'dan başladığı için +1 ekliyoruz
except ValueError:
    print("25000 TL'lik satış bulunamadı.")

# Satışları azalan sırada sıralama
aylik_satislar.sort(reverse=True)
print(f"Aylık Satışlar (Azalan Sıra): {aylik_satislar}")

Bu örnek,sum(),len(),max(),min()gibi yerleşik Python fonksiyonlarının ve listelerinindex(),sort()gibi metotlarının veri analizi için ne kadar güçlü olduğunu gösteriyor. Ayrıca,try-exceptbloğu ileindex()metodunun eleman bulunamadığındaValueErrorhatası verme durumunu ele aldık.

İleri Düzey: List Comprehensions ve Rastgelelik İpuçları

Deneyimli Python kullanıcıları için, list comprehension'lar listelerle çalışmayı daha verimli ve okunabilir hale getirir. Bu söz dizimi, döngüler veappendmetotları yerine tek bir satırda liste oluşturmayı sağlar.

Örneğin, 1'den 10'a kadar olan sayıların karelerini içeren bir liste oluşturmak için:

Klasik Yöntem:

kareler = []
for i in range(1, 11):
  kareler.append(i**2)
print(kareler) # Çıktı: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

List Comprehension ile:

kareler_lc = [i**2 for i in range(1, 11)]
print(kareler_lc) # Çıktı: [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

List comprehension'lar, koşullu ifadelerle de kullanılabilir:

# Sadece çift sayıların karelerini alalım
cift_kareler = [i**2 for i in range(1, 11) if i % 2 == 0]
print(cift_kareler) # Çıktı: [4, 16, 36, 64, 100]

Rastgelelik konusunda ise bazı önemli noktalar vardır:

* Rastgelelik Tohumu (Seed):random.seed(a)fonksiyonu, rastgele sayı üretecinin başlangıç noktasını belirler. Aynı tohum değeriyle başlatılan rastgele sayı dizileri her zaman aynı olacaktır. Bu, testlerde veya hata ayıklama süreçlerinde tekrarlanabilir sonuçlar elde etmek için çok kullanışlıdır.

import random

    random.seed(42) # Tohumu belirle
    print(random.randint(1, 100)) # Her zaman aynı sayıyı üretir (örn: 82)
    print(random.randint(1, 100)) # Her zaman aynı sayıyı üretir (örn: 14)

    random.seed(42) # Aynı tohumu tekrar ayarla
    print(random.randint(1, 100)) # Yine 82 üretir

* Kriptografik Güvenlik:randommodülü genel amaçlı rastgelelik için uygundur ancak yüksek güvenlik gerektiren kriptografik uygulamalar içinsecretsmodülünü kullanmak daha doğrudur.secretsmodülü, işletim sisteminin güvenli rastgele kaynaklarını kullanarak daha güvenli rastgele sayılar üretir.

import secrets

    guvenli_rastgele_sayi = secrets.randbelow(100) # 0 ile 99 arasında güvenli rastgele sayı
    print(guvenli_rastgele_sayi)

    guvenli_token = secrets.token_hex(16) # 16 byte'lık güvenli hex token
    print(guvenli_token)

Sonuç

Python'da listeler, verileri düzenlemek, saklamak ve işlemek için temel ve çok yönlü bir veri yapısıdır.randommodülü ise bu listelere ve genel olarak programlarınıza rastgelelik, dinamizm ve öngörülemezlik katmanın en etkili yoludur. Basit bir zar oyunundan karmaşık veri analizi görevlerine kadar, bu iki konsepti iyi anlamak, daha güçlü ve ilgi çekici Python uygulamaları geliştirmenizi sağlayacaktır. List comprehension'lar gibi ileri düzey teknikler, kodunuzu daha verimli hale getirirken, rastgelelik tohumu gibi kavramlar test ve hata ayıklama süreçlerinizde size yardımcı olacaktır.

Sıkça Sorulan Sorular

* Python'da liste ile dizi (array) arasındaki fark nedir?
Python'da "dizi" terimi genellikle
arraymodülündeki veri yapıları veya NumPy kütüphanesindeki diziler için kullanılır. Standart Python listeleri daha esnektir; farklı veri tiplerini barındırabilirler ve boyutları dinamik olarak değişebilir.arraymodülündeki diziler ise yalnızca tek bir veri tipini barındırır ve daha hafıza verimlidir. NumPy dizileri ise sayısal hesaplamalar için optimize edilmiştir.
*
random.shuffle()neden orijinal listeyi değiştirir?random.shuffle()fonksiyonu, bir listeyi "yerinde" (in-place) karıştırır. Bu, orijinal listenin kendisinin değiştirildiği anlamına gelir. Eğer orijinal listeyi korumak istiyorsanız, önce listenin bir kopyasını oluşturup sonra bu kopya üzerindeshuffleişlemini yapmalısınız. Örneğin:karistirilmismis_liste = list(orijinal_liste); random.shuffle(karistirilmismis_liste).
*
random.sample()verandom.choices()arasındaki temel fark nedir?random.sample(population, k)metodu,population'dankadet *benzersiz* eleman seçer. Yani, seçilen elemanlar tekrar etmez.random.choices(population, k=n)metodu isepopulation'dannadet eleman seçer ve bu seçimler *tekrarlı* olabilir. Ayrıcachoicesmetodu,weightsparametresi ile her elemanın seçilme olasılığını belirlemenize olanak tanır.
* Rastgele şifre oluştururken neden
secretsmodülü daha iyidir?
Standart
randommodülü, tahmin edilebilir rastgelelik algoritmaları kullanır ve genellikle simülasyonlar veya oyunlar gibi genel amaçlı rastgelelik gerektiren durumlar için yeterlidir. Ancak, parola üretimi, güvenlik token'ları veya kriptografik anahtarlar gibi yüksek güvenlik gerektiren durumlar içinsecretsmodülü, işletim sisteminin sağladığı daha güvenli ve tahmin edilemez rastgele kaynakları kullanır. Bu nedenle, güvenlik açısından kritik uygulamalardasecrets` modülü tercih edilmelidir.
* Listeleri kullanarak büyük veri setleriyle çalışmak performans sorunlarına yol açar mı?
Evet, çok büyük veri setleriyle çalışırken standart Python listeleri performans darboğazlarına neden olabilir. Bunun birkaç nedeni vardır: dinamik boyutlandırma, farklı veri tiplerini destekleme ve bellek yönetimi. Çok büyük veri setleri için NumPy dizileri veya Pandas DataFrame'leri gibi daha optimize edilmiş veri yapıları kullanmak genellikle daha iyi performans sağlar. Ancak, orta ölçekli veri setleri veya belirli veri işleme görevleri için listeler hala oldukça etkilidir.

#Python #Listeler #Rastgelelik #VeriYapıları #Programlama #WebGeliştirme

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.