Merhaba random olarak 1-9 arasında liste oluşturmak istersek :
import random ## random kütüphanesini ekledim a=[1,2,3,4,5,6,7,8,9] ##1-9 arası numaraların olduğu bir liste oluşturdum c1=[0,0,0,0,0,0,0,0,0]## 3 tane 9 elemanlı boş liste oluşturdum c2=[0,0,0,0,0,0,0,0,0] c3=[0,0,0,0,0,0,0,0,0] b=0##random için kullanacağımız integer sayı ##c1 listesi için rastgele sayılar for num in range (1,10): b=random.randint(1,10-num) c1[num-1]=a[b-1] a.pop(b-1) a=[1,2,3,4,5,6,7,8,9] print(c1)
şimdi bir fonksiyon oluşturup kesişen yerlerde fonksiyonu tekrarlattıralım.
random oluşturma işlemini geçiçi liste olan ‘a’daki değerlerden alıp o değerleri yok ettiğimiz için liste yatay olarak herhangi bir sayının tekrarını yapmayacaktır ancak dikey olarak tekrarlama yapabilir bunun için fonksiyonumuz şu şekilde olacak:
def ciz2(k): global a,b,c1,c2,c3,c4,c5,c6,c7,c8,c9 for num in range (1,10): b=random.randint(1,10-num)## random değeri belirle k[num-1]=a[b-1]##değeri ata a.pop(b-1)##listedeki değeri yok et a=[1,2,3,4,5,6,7,8,9]##geçiçi listemiz olan 'a'yı tekrar eski haline getiriyoruz. ##kesişen bölgeleri belirliyoruz. alt alta aynı değerde olmaması lazım ##listeler yatay olarak tekrarlanmıyor çünkü listeyi başka listenin elemanlarından seçtik if c2[0]==c1[0] or c2[1]==c1[1] or c2[2]==c1[2] or c2[3]==c1[3] or c2[4]==c1[4] or c2[5]==c1[5] or c2[6]==c1[6] or c2[7]==c1[7] or c2[8]==c1[8] : ciz2(c2) b=0 ciz2(c2) print(c2) def ciz3(k): global a,b,c1,c2,c3,c4,c5,c6,c7,c8,c9 for num in range (1,10): b=random.randint(1,10-num) k[num-1]=a[b-1] a.pop(b-1) a=[1,2,3,4,5,6,7,8,9] if k[0]==c1[0] or k[1]==c1[1] or k[2]==c1[2] or k[3]==c1[3] or k[4]==c1[4] or k[5]==c1[5] or k[6]==c1[6] or k[7]==c1[7] or k[8]==c1[8]or k[0]==c2[0] or k[1]==c2[1] or k[2]==c2[2] or k[3]==c2[3] or k[4]==c2[4] or k[5]==c2[5] or k[6]==c2[6] or k[7]==c2[7] or k[8]==c2[8] : ciz3(k) b=0 ciz3(c3) print(c3)
yorumları beklerim 🙂
Bir yanıt yazın