Warum wird dieser Code nicht ausgegeben?


06.07.2022, 17:48

Mir wird angeben, dass r = ... nicht definiert ist aber random. randint ist ja praktisch ein Befehl

Danke im vorraus für eure Hilfe !


06.07.2022, 17:54

Ich möchte noch hinzufügen: es gibt einen part1, part2, part3 und einen part4. Jeder part hat eine drei Wörter Liste. bestwords fasst alle parts zusammen; also:

bestwords = [part1, part2, part3, part4]


07.07.2022, 14:27

Vielen Dank für eure Hilfe, ich benötige keine weitere Antworten mehr, da sich das Problem geklärt hat !

4 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Bei mir klappt es.

import random

bestwords = ["part1", "part2", "part3", "part4"]

for part in bestwords:
  r = random.randint(0, len(part) - 1)  
  print(part[r])

Was ist das Problem?

Woher ich das weiß:Hobby – Erfahrener Programmierer

haveyou 
Beitragsersteller
 07.07.2022, 14:01

Vielen Dank für deine Antwort aber es kommen leider nur einzelne Buchstaben und Wörter raus; mein Ziel wäre eigentlich es so zu bekommen, dass einzelne Wörter aus jedem Part rauskommen

1

Der Code als solches funktioniert. In deinen Kommentaren wunderst du dich darüber, dass nur einzelne Zahlen und Buchstaben rauskommen, aber genau das bewirkt dein Code doch.

import random

bestwords = ["part1", "part2", "part3", "part4"]

for part in bestwords:
  r = random.randint(0, len(part) - 1)  
  print(part[r])

Beim ersten Durchlauf steht in part der String "part1".

Nun wählst du eine zufällige Zahl zwischen 0 und len(part)-1 aus, also zwischen 0 und 4. Angenommen es ist die 2, dann wird das dritte Zeichen aus dem String "part1" ausgewählt, also das "r" und angezeigt.

Wenn du eigentlich eine der Variablen aus bestwords anzeigen lassen möchtest, müsstest du

print(bestwords[r])

anweisen. Aber Vorsicht, wenn die Variable mehr Zeichen als du Einträge im array hast, wirst du eine Fehlermeldung bekommen, weil ein entsprechender Index nicht besteht! Du solltest also ggf. ein Exception-Handling einbauen (try/catch) oder sichergehen, dass ein Index ausgewählt wird, der auch tatsächlich existiert.


haveyou 
Beitragsersteller
 07.07.2022, 14:27

Vielen Dank für deine Antwort !

0

Kleiner Tipp. Du kannst es auch einfacher machen

import random

bestwords = ["part1", "part2", "part3", "part4"]

for part in bestwords:
  r = random.choice(part)  
  print(r)
Woher ich das weiß:eigene Erfahrung

haveyou 
Beitragsersteller
 07.07.2022, 14:00

Vielen Dank für die Antwort aber dann kommen leider nur zwei Buchstaben und zwei Zahlen raus

1

die da benutzen randint irgendwie anders:

https://numpy.org/doc/stable/reference/random/generated/numpy.random.randint.html

da sieht es wieder anders aus:

https://docs.python.org/3/library/random.html

(die schreiben z. B. randrange(10))

hast du sowas geschrieben: „from random import Random“?


haveyou 
Beitragsersteller
 06.07.2022, 18:02

Nein, ich habe eine Liste - in jedem part sind drei Wörter, deshalb auch diese Zeile:

(0, len(part) - 1) -> damit möchte ich, dass eine Zahl also ein Wort von den Wörter ausgesucht wird

0
LUKEars  06.07.2022, 18:06
@haveyou

ja... ok... und wenn du „random.“ weglässt? und dafür oben „from random import Random“ hinschreibst?

1
haveyou 
Beitragsersteller
 07.07.2022, 14:02
@LUKEars

Vielen Dank für deine Antwort, leider kommen nur einzelne Buchstaben raus und nicht Wörter

0
LUKEars  07.07.2022, 14:28
@haveyou

ok... das liegt daran, dass „bestwords“ eben strings enthält... und der []-operator holt sich ein Zeichen eines dieser strings....

0
haveyou 
Beitragsersteller
 07.07.2022, 14:29
@LUKEars

Gut zu Wissen, dass werde ich mir dann für die Zukunft merken, vielen Dank !

0
LUKEars  07.07.2022, 14:30
@haveyou

war's das echt schon?

was hast du denn erwartet, was bei „part[r]“ rauskommt?

dachtest du, dass „part“ eine Liste von strings ist?

0
haveyou 
Beitragsersteller
 07.07.2022, 14:31
@LUKEars

Ehrlicherweise habe ich erwartet, dass einzelne Wörter statt Buchstaben ausgegeben werden, wie bereits erwähnt hat sich das Problem nun gelegt - wobei ich noch erwähnen müsste, dass anfangs das Problem war, dass garnichts ausgegeben wurde

0
LUKEars  07.07.2022, 14:32
@haveyou

was ist denn in „bestwords“ drin? zeig mal deine Definition von „bestwords“....

0
haveyou 
Beitragsersteller
 07.07.2022, 14:34
@LUKEars

part1 = ["Auto" , "Tier"]

part2 = ["Hund", "Katze"]

usw. mit den anderen parts. Dabei soll aus jedem part ein Wort zufällig ausgegeben werden

bestwords beschreibt dann part1, part2, part3, part4

bestwords = [part1, part2, part3, part4]

1
LUKEars  07.07.2022, 14:42
@haveyou

ok... dann hätte ich aber auch „Hund“ oder so erwartet...

zeig mal dein ganzes Programm...

0
haveyou 
Beitragsersteller
 07.07.2022, 16:53
@LUKEars

Das war hier jetzt nur ein Beispiel, ich habe dafür andere Wörter benutzt - aber im Prinzip macht es keinen Unterschied welche Wörter verwendet werden

1
LUKEars  07.07.2022, 17:06
@haveyou

ey... ich möchte das ganze Programm sehn... da ist irgendwo n Wurm drin... 😋

print(bestwords[0][0]) müsste „Auto“ ergeben... Kannst du das mal testen?

0