Merhaba, şu kodu çalıştırabilir misiniz ?
ögrt2 = {
"Mustafa": [[1, 1, 1, 1, 1],[0,0,0]],
"Tuğrul": [[1, 1, 1, 1, 1],[0,0,0]],
"Sadık": [[0, 0, 0, 0, 1],[0,0,0]],
"Hakan": [[1, 1, 1, 1, 1],[0,0,0]],
"Ahmet": [[0, 0, 0, 0, 1],[0,0,0]],
"Rıza": [[0, 0, 0, 0, 1],[0,0,0]],
"Yılmaz": [[1, 1, 1, 1, 1],[0,0,0]],
"Deniz": [[0, 0, 0, 1, 1],[0,0,0]]
}
yerler2 = {
"Ön bahçe": [],
"Arka Bahçe": [],
"1. Kat": []
}
nöbet2 = {
"paz": list(),
"sal": list(),
"çar": list(),
"per": list(),
"cum": list()
}
nöbet = nöbet2.copy()
ögrt = ögrt2.copy()
yerler = yerler2.copy()
def foo(ögrt, yerler):
gun = ""
v = ""
for ö in ögrt:
ögrt[ö][1][0] = sum(ögrt[ö][0][0:5])
f= list()
def torba(ögrt, v, nöbet, gun):
global f
temp = dict()
m = list(filter(lambda x: ögrt[x][0][v]==1, ögrt))
for ö in ögrt:
if ö in m:
temp[ö] = ögrt[ö].copy()
f = sorted(temp.items(), key=lambda x:(x[1][1][2] ,x[1][1][0], x[1][1][1]))
for i in f:
if i[0][0] not in nöbet[gun]:
return f[0][0]
for gun in nöbet:
v = 0
for i in range(len(yerler)):
if gun=="paz": v=0
elif gun=="sal": v=1
elif gun=="çar": v=2
elif gun=="per": v=3
elif gun=="cum": v=4
ö = torba(ögrt, v, nöbet, gun)
if ö!=None:
nöbet[gun].append(ö)
ögrt[ö][1][1] += 1
ögrt[ö][1][2] += 1
ögrt[ö][0][v] = 0
print("-"*50)
print(nöbet)
return list(nöbet.values())
print("nöbet ",nöbet2)
foo(ögrt, yerler)
print("nöbet2 degişti ",nöbet2)
Sorun şu siz bir liste veri yapısı oluşturup bunu bir değişkene atadığınız zaman, bu değişken atamış olduğunuz listeyi işaret ediyor. Örneğin a=list((1,2,3)) şeklinde yazdığınız ifade şu anlama geliyor a değişkeni hafızada list((1,2,3)) veri yapısına işaret etmekte. Sonra b=a dediğiniz zaman hem a hem de b hafızada aynı yere yani aynı list((1,2,3))'e işaret etmekte bundan dolayı siz a değişkeninde değişiklik yaparsanız mesela listeye yeni eleman örneğin 4 eklerseniz list((1,2,3)) son haliyle list((1,2,3,4)) olacaktır. b değişkenimizde list((1,2,3))'ü işaret ettiğinden dolayı b’nin son hali ise list((1,2,3,4)) olacaktır Sizin kodunuzda da bu tür bir durum var. Programınıza copy modülünü import ettikten sonra
nöbet = copy.deepcopy(nöbet2)
ögrt = copy.deepcopy(ögrt2)
yerler = copy.deepcopy(yerler2)
şeklinde deneyin sorun o zaman çözülecektir.