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