Listenelement wird falsch ausgegeben

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Lena
User
Beiträge: 22
Registriert: Mittwoch 24. Juni 2015, 09:37

Code: Alles auswählen


                import random
                std=["5 Minuten","eine halbe Stunde","15 Minuten","zwei Stunde"]
                
                
                zeitangabe=[random.randrange(len(std))]
                #print (zeitangabe)
                if zeitangabe=="[0]":
                    anzahl=zeit[0]
Hallo!
Also, das Problem ist:wenn per random eine Element aus'std' gewählt wird, dann dann wird das ja so geprintet: [0]
Ich möcte aber, dass auch immer das tatsächliche Element, also der String genannt wird. In dem Fall beei [0] wäre das dann ja '5 Minuten'.
Meine Vermutung ist, dass ich bei

Code: Alles auswählen

if zeitangabe=="[0]"
die Bedingung einfach falsch formuliert habe, also dass hinter dem '==' etwas anderes stehen muss. Habe schon einige versionen ausprobiert, aber bin noch nicht dahinter gekommen:/...Ich hoffe ihr wisst mehr^^

LG
Benutzeravatar
/me
User
Beiträge: 3555
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

randrange liefert dir eine Zahl. Die packst du aus unerfindlichen Gründen - vielleicht weil du zu schnell vorwärts willst und Syntax rätst, statt dir erst einmal die Grundlagen anzuschauen - als einzelnes Element in eine Liste. Dann versuchst du diese Liste mit dem String "[0]" zu vergleichen. Das kann nicht das gleiche sein. Du musst zwischen der für Debugzwecke vorgesehenen Ausgabe und dem echten Wert unterscheiden.

Wenn es dir aber ohnehin nur darum geht einen zufälligen Wert aus der Liste zu bekommen, dann bist du mit choice viel besser bedient.
Benutzeravatar
darktrym
User
Beiträge: 784
Registriert: Freitag 24. April 2009, 09:26

Dann schreib nicht

Code: Alles auswählen

zeitangabe=[random.randrange(len(std))]
hin.
„gcc finds bugs in Linux, NetBSD finds bugs in gcc.“[Michael Dexter, Systems 2008]
Bitbucket, Github
jerch
User
Beiträge: 1669
Registriert: Mittwoch 4. März 2009, 14:19

@Lena:
Ich will Dir nicht zu nahe treten, aber so wird das nichts. Deine bisherigen Fragen lassen darauf schliessen, dass Dir absolute Grundlagen fehlen. Programmiersprachen folgen einer wohldefinierten Strenge, die Du durchschauen lernen musst. Dazu gehört es, zu wissen, wie sich was verhält. Dieses Verhalten ist genau festgelegt und der Schlüssel zum Verständnis. Z.B. sieht Deine Zeile `zeitangabe=[random.randrange(len(std))]` geraten oder von irgendwo zusammengeschrieben aus. Ich bin mir sicher, da es nicht tut, was Du suchst, Dir das aber garnicht so richtig klar ist.
Benutzeravatar
pixewakb
User
Beiträge: 1412
Registriert: Sonntag 24. April 2011, 19:43

Wie die Vorredner: Grundlagen fehlen.

Code: Alles auswählen

import random

                                   # Listenindex
std = ["5 Minuten",                # 0
       "eine halbe Stunde",        # 1
       "15 Minuten",               # 2
       "zwei Stunde"]              # 3


zeitangabe = random.randrange(len(std))

print("Kontrollausgabe", zeitangabe)  # liefert Integer (!)

if zeitangabe == 0:                # Vergleich mit einem Integer
    
    # anzahl = zeit[0]
    ''' zeit ist gar nicht definiert
    Du nimmst da eine Zuweisung ohne Ausgabe vor,
    d. h. du siehst da nichts in der Konsole'''
    
    print(std[0])
    
Für mich sieht die Einrückung danach aus, dass du da sehr komplexen Code verwendest, den du wahrscheinlich nicht mehr überblicken kannst. Du kannst mit obigem Code und meinen Kommentaren zu arbeiten versuchen. Vielleicht wird das ein oder andere schon deutlich.
Antworten