Mesela içerisinde 10 tane değer alabilen bir stringimiz olsun,
ornek = "EHEHEHEHEH" şeklinde, ben bunlara da ornek[random.randint(0, 10)] şeklinde ulaşabiliyim.
Ben ornek dizisi içerisindeki değerlerinde yani E ve H harflerininde random bir düzende gelmesini istiyorum.
Atıyorum ornek = "EEEEEEEEEE" şeklinde de olabilir.
ornek = "EHHHHEEEHE" şeklinde olabilir, olsun istiyorum.
İstediğimi buldum
def get_random_string(length):
# put your letters in the following string
sample_letters = 'EH'
result_str = ''.join((random.choice(sample_letters) for i in range(length)))
print("Random string is:", result_str)
get_random_string(10)
import string
import random
def olustur(kacKere=0):
sonuc = [random.choice(string.ascii_letters) for i in range(kacKere)]
return sonuc
print(olustur(10))
Öncelikle terimlere dikkat edin. key ve value sözlük veri yapısına ait terimler.
olustur() fonksiyonunun şu string’i döndürdüğünü varsayalım:
HEHEEEHHHE
Python’da index işlemleri 0’dan başlıyor. Yani bu string’de ilk harf olan “H” harfinin index’i 0.
0 1 2 3 4 5 6 7 8 9
H E H E E E H H H E
Hangi elemana ulaşmak istiyorsanız onun sırasını köşeli parantez ( [] )içerisinde yazmalısınız.
Örnek:
print(olustur(10)[7])`
Sizin kullanımınızı açıklayayım:
random.randint(0, 10) bu kod 0-10 arasında rastgele bir sayı döndürüyor.
ornek[random.randint(0, 10)] bu şekilde bir kullanım uyguladığınızda Python ornek listesi içerisinde randint() metodundan dönen rastgele bir sayıyı index olarak kullanıyor. Yani rastgele bir sayıya denk gelen elemanı çekmiş oluyorsunuz.
Aslında güzel bir davranış. Araştırma yaparken doğru anahtar kelimeleri kullanmak çok önemli. Aksi takdirde yanlış yerlerde zaman kaybedebiliyorsunuz. O yüzden uyarmadan geçmek istemedim.
oluştur(10)'nun dönüş değeri zaten rastgele karakterlerden oluşuyor, rastgele karakterlerden oluşan bir karakter dizisinin rastgele bir index’indeki karakteri kullanmaktaki amacınız ne? Şu daha kolay değil mi? :
>>> from random import choice
>>> choice("EH")
'E'
>>>
Emin değilim ama sanırım yazdığınız kod E ile H arasından bir seçim yapıyor ama benim istediğim yapı içerisinde sadece E’lerin de gelebileceği ya da sadece H’lerin de olabileceği durumları da test etmesini istiyorum, belki mantığımda yanlış bir durum olabilir ama gelen değerin benim kontrolümde olmayan dinamik bir yapı oluşturmak istiyorum, karmaşık olursa daha iyi diye düşündüm, dediğim gibi aşırı mantıksız da olabilir emin değilim
Bu arada şu an şöyle bir senaryo üzerinde çalışıyorum
Atıyorum elimde index = 1000 değeri var.
Ben bunu for döngüsü içersinde index += 1 şeklinde 10 kere döndürdüm ve elimde 1010 değeri oluştu, kodun derlenmesi bitti, bir kez daha run ettiğim zaman kod içersindeki index’in 1000’den değilde 1010’dan başlamasını nasıl sağlayabilirim ?
Benim aklıma dosya oluşturma yazma - okuma işlemleri geldi ama denediğim kodlarda txt içerisinde yazdığım değeri int olarak alıp kodumun içinde kullanamadım.
Bu yoldan mı devam mı etmeliyim, dosya işlemi ile ilgili yardımcı olabilir misiniz ya da başka bir yol daha mı kolay olur sizce ?
for i in range(0, 10):
index = index + 1
kaydedilecek_veri = [
{index},
]
with open('/tmp/hede', 'wb') as f:
pickle.dump(kaydedilecek_veri, f)
with open('/tmp/hede', 'rb') as f:
kayitli_veri = pickle.load(f)
print("Pickle : ", kayitli_veri)
print(type(kayitli_veri)) ```
**OUTPUT :**
```Python Pickle : [{1010}]
<class 'list'>
Hocam bu list veri tipini int bir değere dönüştüremedim. map fonksiyonu kullanmayı da denedim ama bunu dönüştürmenin bir yolu var mıdır ?