#๐Ÿ”’ Variable copy goes wrong

18 messages ยท Page 1 of 1 (latest)

tender jungleBOT
#

@marsh holly

Python help channel opened

Remember to:

  • Ask your Python question, not if you can ask or if there's an expert who can help.
  • Show a code sample as text (rather than a screenshot) and the error message, if you've got one.
  • Explain what you expect to happen and what actually happens.

:warning: Do not pip install anything that isn't related to your question, especially if asked to over DMs.

marsh holly
#

full code:

from Data import *
import random
from termcolor import colored
import os

#Genereerd een nieuw bingo kaart
def MaakNieuwKaart(IsEven:bool) -> list:
    Getallen = list(range(1, 100, 2))
    if IsEven:
        Getallen = list(range(2, 100, 2))

    BingoKaart = []
    PrintKaart = []

    for _ in range(4):
        Rij = []
        for _ in range(4):
            RandomGetal = random.choice(Getallen)
            Getallen.remove(RandomGetal)
            Rij.append(RandomGetal)
        BingoKaart.append(Rij)

    PrintKaart = BingoKaart.copy()    
    for i in range(ALGERADENAANTAL):
        RandomRij = random.randint(0,3)
        RandomIndex = random.randint(0,3)
        PrintKaart[RandomRij][RandomIndex] = colored(PrintKaart[RandomRij][RandomIndex], "green") #This line makes Bingokaart also change for some reason
    return PrintKaart, BingoKaart


PrintKaart, BingoKaart = MaakNieuwKaart(True)
print(PrintKaart) 
print(BingoKaart)```
past zephyr
#
from Data import *
import random
from termcolor import colored
import os
import copy
#Genereerd een nieuw bingo kaart
def MaakNieuwKaart(IsEven:bool) -> list:
    Getallen = list(range(1, 100, 2))
    if IsEven:
        Getallen = list(range(2, 100, 2))

    BingoKaart = []
    PrintKaart = []

    for _ in range(4):
        Rij = []
        for _ in range(4):
            RandomGetal = random.choice(Getallen)
            Getallen.remove(RandomGetal)
            Rij.append(RandomGetal)
        BingoKaart.append(Rij)

    PrintKaart = copy.deepcopy(BingoKaart)
    for i in range(ALGERADENAANTAL):
        RandomRij = random.randint(0,3)
        RandomIndex = random.randint(0,3)
        PrintKaart[RandomRij][RandomIndex] = colored(PrintKaart[RandomRij][RandomIndex], "green") #This line makes Bingokaart also change for some reason
    return PrintKaart, BingoKaart


PrintKaart, BingoKaart = MaakNieuwKaart(True)
print(PrintKaart) 
print(BingoKaart)
#

try this with deep copy instead @marsh holly

marsh holly
#

alr

#

what is the diff between deep copy and normal?

past zephyr
#

.copy only copies the first layer of the list, but if that list contains reference to other lists, these lists wont be copied.

marsh holly
#

ohhh

#

makes sense

#

thanks

marsh holly
#

yes

#

thanks ๐Ÿ™‚

past zephyr
#

nice

#

you're welcome mate

tender jungleBOT
#
Python help channel closed

This help channel has been closed and it's no longer possible to send messages here. If your question wasn't answered, feel free to create a new post in #1035199133436354600. To maximize your chances of getting a response, check out this guide on asking good questions.

#

๐Ÿ”’ Variable copy goes wrong