Merhabalar. Basit bir program yazmak istedim, yazımı her ne kadar karmaşık gözükse de. Problemim şu; fonksiyonu belli parametrelerle ilk çağırdığımda sorun yaşamıyorum fakat aynı parametreleri ilk değerlerine döndürüp tekrar çağırmak istediğimde yanlış sonuçlar veriyor. Halbuki aynı parametreleri ilk öncekinde nasıl gönderdiysem aynı şekilde gönderdiğimi düşünüyorum. Yardımlarınız için şimdiden teşekkürler.
ö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())
foo(ögrt, yerler)
nöbet = nöbet2.copy()
ögrt = ögrt2.copy()
yerler = yerler2.copy()
foo(ögrt, yerler)