cURL Komudumu Python Scripti olarak yazdım fakat parametleri diziden almak istiyorum

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))

Sanırım istediğiniz bu.

Üstteki postu editledim, tam olarak istediğim kod editin içindeki kod.

Teşekkür ederim bu arada tekrar tekrar.

Rica ederim, attığım kodları şöyle değiştirirseniz aynı sonucu elde edebilirsiniz.

import string
import random

def olustur(kacKere=0):
	sonuc = "".join((random.choice("EH")) for i in range(kacKere))

	return sonuc

print(olustur(10))

Hocam rahatsız ediyorum çok fazla kusura bakmayın lütfen, oluştur(10) dedikten sonra gelen string üzerinde

ornek[random.randint(0, 10)] buna benzer bir işlem yapabilmem için nasıl bir atama yapmam gerekiyor acaba ?

Yani oluşturulan String’in elemanları içersinde gezmem gerekiyor, atıyorum 5 key’ine gelen Value’yu başka bir değişkene atamam gerekiyor.

Ö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.

Açıklayıcı bilgileriniz için teşekkür ederim tekrar, kendi kodumunda denemeye çalışacağım. Eğer istediğimi elde edemezsem sizlere tekrar danışırım.

Tabii ki :slight_smile:

İstediğim sonucu

'"evetHayir" : "'+str(olustur(10)[random.randint(0,9)])+'"

elde edebildim, teşekkür ederim.

Key ve Value uyarısı için teşekkür ederim, çalıştığım kod içerisinde kafamda öyle tuttuğum için genel olarak anlatıma o şekilde yansıyor

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.

1 Beğeni

choice yerine choices kullanılabilir:


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 :smile:

Evet.

Zaten ya E gelicek ya H, olustur fonksiyonun döndürdüğü bir değeri birden fazla defa kullanmazsanız bu anlamsız.

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 ?

1 Beğeni

Çok teşekkür ederim, deneyip sonuçları yazarım.


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 ?

kaydedilecek_veri = index

1 Beğeni

Kusura bakmayın lütfen, kötü kaçmış gözümden :sweat_smile: :sweat_smile: :sweat_smile:

Bu arada herkese teşekkür ederim scriptimi tamamladım istediğim gibi, iyi kodlamalar.