Redundanzen vermeiden

Code-Stücke können hier veröffentlicht werden.
Benutzeravatar
sparrow
User
Beiträge: 2610
Registriert: Freitag 17. April 2009, 10:28

Mittwoch 28. Oktober 2020, 11:37

Du hast aber nicht 3x den gleichen Button sondern 3x den selben Button in der Liste.
Und wenn du 3x den selben Button hast, dann kannst du dir die Liste auch sparen.

Wenn wir uns beide jeweils ein identisches Auto kaufen und damit jeweils zu unserem gemeinsamen Arbeitgeber fahren, dann werden unsere Kollegen feststellen, dass wir das gleiche Auto fahren.
Wenn wir beide eine Fahrgemeinschaft bilden, dann werden sie bemerken, dass wir im selben Auto ankommen.

Das ist hier sehr wichtig. Ich kann das selbe Objekt in 20 Listen stecken - oder in 20 verschiedene. Aber es bleibt ein Objekt. Es wird nicht magisch kopiert.
Du möchtest aber 3 verschiedene Buttons haben.
Zuletzt geändert von sparrow am Mittwoch 28. Oktober 2020, 11:38, insgesamt 1-mal geändert.
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

Mittwoch 28. Oktober 2020, 11:37

Du sollst ja nicht das gleiche Objekt mehrfach in die Liste schreiben, du sollst drei verschiedene Instanzen des Buttons in die Liste schreiben, also es soll drei mal ein Button erzeugt werden. Es soll nicht einmal ein Button erzeugt werden und drei mal in eine Liste gepackt werden.

Vielleicht hilft dir das Snippet hier:

So machst du es im Moment:

Code: Alles auswählen

import random

random_number = random.randint(0,9)

numbers = []

for i in range(0,3):
    numbers.append(random_number)

print(numbers)
So sollte es sein:

Code: Alles auswählen

import random

numbers = []
for i in range(0,3):
    random_number = random.randint(0,9)
    numbers.append(random_number)

print(numbers)
Das kann mann dann noch kürzer als List comprehension schreiben:

Code: Alles auswählen

import random

numbers = [random.randint(0,9) for i in range(0,3)]

print(numbers)
Lou Cyphr3
User
Beiträge: 59
Registriert: Donnerstag 6. Juli 2017, 00:04

Mittwoch 28. Oktober 2020, 12:13

okay dann macht natürlich auch der hint von sirius3 mehr Sinn

also sollte dann das zielführender sein, ja?

Code: Alles auswählen

from tkinter import Button

root = None

buttons = []

for button in range(0,3):
    answer_button = Button(root, text="", font=("Arial", 14), width=39 )
    buttons.append(answer_button)
        
print(buttons)
Cours, camarade, le vieux monde est derrière toi!
__deets__
User
Beiträge: 9483
Registriert: Mittwoch 14. Oktober 2015, 14:29

Mittwoch 28. Oktober 2020, 13:00

Jupp. Wenn man es als reines Beispiel betrachtet. Anmerkungen zu Code auf Modul Ebene etc findest du ja vielfach.
Lou Cyphr3
User
Beiträge: 59
Registriert: Donnerstag 6. Juli 2017, 00:04

Mittwoch 28. Oktober 2020, 13:09

sehr schön. vielen dank an alle!
Cours, camarade, le vieux monde est derrière toi!
Antworten