Rastgele anahtar kodu nasıl üretilir?

Arkadaşlar merhaba,

Mesela:

53CWD-SDK43-FKAFE
G4D25-52FHR-3KFA3

Nasıl yukarıdaki gibi kod üretebilirim rastgele olacak şekilde? 3 tane 5 karakter olacak ve aralarında tire olacak.

import random

harfler = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "R", "S", "T", "U", "V", "Y", "Z"]

sayilar = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

h = random.choice(harfler)

s = random.choice(sayilar)

Arkadaşlar bu kodu yazdım ve listeden rastgele seçiliyor. Ben nasıl verdiğim örnek gibi çekebilir ve rastgele sıralayabilirim?

join() ve for döngüsü kullanabilirsiniz.

from random import choice

# String bir ifadeyi karakterlerine ayırmak için bunu yapabilirsiniz.
harfler = list("ABCDEFGHIJKLMNOPQRSTUVWYXZ")
sayilar = list("0123456789")

# İç içe choice kullanarak da rastgele seçimler yapabiliriz. Ya sayı olacak ya da harf.
rastgele = lambda: choice([choice(harfler), choice(sayilar)])

# join() ile string bir ifadeye yeni karakter/karakterler ekleyebiliyoruz. 
# join()'ın sol tarafında yer alan string ifade ise, her seferinde yeni bir şey eklendiğinde kendini yineliyor. 
# Mesela aşağıda "-".join(blabla for n in range(3)) yazdık. Bunun sayesinde *****-*****-***** şeklinde bir string elde edebiliyoruz.
# "".join(rastgele() for h in range(5)) kısmında ise arada başka bir şey olmaksızın doğrudan ***** olan yeri elde ediyoruz. (*: sayı veya harf)
anahtar = "-".join("".join(rastgele() for h in range(5)) for n in range(3))

print(anahtar)
'937V8-4JSU6-6C058'

Alternatif olarak benzer şeyi f-string ile de yapabilirsiniz.

from random import choice

harfler = list("ABCDEFGHIJKLMNOPQRSTUVWYXZ")
sayilar = list("0123456789")

rastgele = lambda: choice([choice(harfler), choice(sayilar)])
r5k = lambda: ''.join(rastgele() for h in range(5)) # r5k = rastgele 5 karakter
anahtar = f"{r5k()}-{r5k()}-{r5k()}"

print(anahtar)
'FI086-PN29R-950U9'
2 Beğeni

Bir örnekde benden gelsin

import random

def hane(uzunluk):
    harfler = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "R", "S", "T", "U", "V", "Y", "Z"]
    sayilar = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    uretec = ""
    count = 0
    while count <= uzunluk: # "uzunluk" parametresini kullanmaktansa normal rakamda yazılabilir ki öyle olursa istediğiniz cevaba ulaşırsınız:
        if count == uzunluk:
                break
        else:
            count += 1
            for i in range(0,uzunluk):
                uretec += str(random.choice([random.choice(harfler),random.choice(sayilar)]))
            for j in range(0,uzunluk,uzunluk):
                uretec += "-"
    return uretec.strip("-")
print(hane(5))

hane fonksiyonu - den önce ve sonra rastgele oluşacak ifadelerin uzunluğu
while döngüsünd uzunluk adlı parametreyi kullanırsak:

G7915-09BM4-GFR98-IVSU3-17R3Z

parametre yerine bir rakam yazarsak (mesela 3):

L9N41-ZR2GH-E8TA2

yani örnek verdiğinizdeki ile benzer çıktı almak mümkün

2 Beğeni