چرا در این کد لیست jangal درست مانند لیست jangalnext تغییر میکند؟
from colorama import *
jangal = [['g','f','f'],['f','f','f'],['f','f','f']]
def nextyear():
global jangal
jangalnext = jangal.copy()
for row in jangal:
for character in row:
if character == 'f':
jangalnext[jangal.index(row)][row.index(character)] = 's'
if character == 'g':
if jangal.index(row) == 0:
if row.index(character) == 0:
if row[row.index(character)+1] == 'f' or jangal[jangal.index(row)+1][row.index(character)] == 'f':
jangalnext[jangal.index(row)][row.index(character)] = 'f'
def printjangal(jangal):
for row in jangal:
for i in row:
if i == 'f':
print(Back.RED, 'f', end='')
if i == 'g':
print(Back.GREEN, 'g', end='')
if i == 's':
print(Back.WHITE, 's', end='')
print(Style.RESET_ALL)
print()
printjangal(jangal)
nextyear()
printjangal(jangal)
nextyear()
printjangal(jangal)
سلام دوست من 🖐
امیدوارم حالت خوب و عالی باشی✨
مشکل در این کد اینه که در تابع nextyear()
شما لیست jangal
را کپی کردی و به آن لیست جدیدی به نام jangalnext
اختصاص دادی ، اما تغییرات را در jangalnext
اعمال کردی و نه در jangal
. این به این معنیه که تغییراتی که در jangalnext
اعمال میکنی ، تأثیری در jangal
نداره.
برای حل این مشکل و اعمال تغییرات در jangal
باید به جای استفاده از jangalnext
, تغییرات را مستقیماً در jangal
انجام بدی. به عبارت دیگر، از متغیر jangal
بجای jangalnext
در تابع nextyear()
استفاده کنی.
اصلاح شدهی کد:
from colorama import *
jangal = [['g','f','f'],['f','f','f'],['f','f','f']]
def nextyear():
global jangal
for row in jangal:
for idx, character in enumerate(row):
if character == 'f':
row[idx] = 's'
if character == 'g':
if jangal.index(row) == 0:
if idx == 0:
if row[idx + 1] == 'f' or jangal[jangal.index(row) + 1][idx] == 'f':
row[idx] = 'f'
def printjangal(jangal):
for row in jangal:
for i in row:
if i == 'f':
print(Back.RED, 'f', end='')
if i == 'g':
print(Back.GREEN, 'g', end='')
if i == 's':
print(Back.WHITE, 's', end='')
print(Style.RESET_ALL)
print()
printjangal(jangal)
nextyear()
printjangal(jangal)
nextyear()
printjangal(jangal)
این تغییرات باعث میشود تغییرات در jangal
اعمال بشن و شما تفاوتها را در هر دور از تابع nextyear()
مشاهده میکنی .
امیدوارم پاسخم بهت کمک کرده باشه ❤️
موفق و پیروز باشی 🤘🌹
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟