Generieren zufällige Wörter

Ich versuche, einen String zu erstellen, der eine Menge von verschiedenen Wörtern hat, die ich in eine Liste aufnehme, aber der Code, den ich verwende, verwendet nur ein Wort zufällig, kein anderes Wort für jedes Wort, das gedruckt wird.

Das ist mein Code:

import random words = ['hello', 'apple', 'something', 'yeah', 'nope', 'lalala'] print random.choice(words) * 5 

Eine Beispielausgabe wäre:

hellohellohellohellohello

Ein Beispiel erwartete Ausgabe wäre:

appleyeahhellonopesomething

Kann mir jemand sagen was ich falsch mache?

5 Solutions collect form web for “Generieren zufällige Wörter”

random.choice(words) * 5 führt random.choice nur einmal aus und multipliziert dann das Ergebnis mit fünf, so dass der gleiche String wiederholt wird.

 >>> import random >>> words = ['hello', 'apple', 'something', 'yeah', 'nope', 'lalala'] >>> print ''.join(random.choice(words) for _ in range(5)) applesomethinghellohellolalala 

Wenn Sie nicht möchten, dass die Wörter aus Ihrer ursprünglichen Liste wiederholt werden, dann könnten Sie sample .

 import random as rn words = ['hello', 'apple', 'something', 'yeah', 'nope', 'lalala'] word = ''.join(rn.sample(words, 5)) 

Ergebnis:

 >>> word 'yeahhellosomethingapplenope' 

Sie rufen keine random.choice(words) 5 mal, man bekommt eine Ausgabe von random.choice(words) und dann multipliziert in 5 mal. Mit Strings, es wiederholt nur die Zeichenfolge.

"abc" * 3 würde dir "abcabcabc"

Also abhängig von Ihrem zufällig ausgewählten Wort zuerst, es wird nur 5 mal wiederholt.

"Multiplizieren" einer Zeichenfolge wird die Zeichenfolge mehrmals drucken. ZB, print '=' * 30 würde eine Zeile von 30 "=" drucken, deshalb bekommst du 5 mal "hello" – es wiederholt das zufällig gewählte Wort 5 mal.

 import random, sys words = ['hello', 'apple', 'something', 'yeah', 'nope', 'lalala'] for i in range(5): sys.stdout.write(random.choice(words)) 

Mit Wahl () gibt Ihnen eine Reihe von 5 zufällige Auswahl. Beachten Sie, dass wir sys.std.write , um zu vermeiden, dass der Platz aufeinanderfolgende print zwischen Wörtern setzen würde.

ZB aus zwei Läufen:

 yeahsomethinghelloyeahlalala 

und

 somethingyeahsomethinglalalanope 

choice()

Geben Sie ein zufälliges Element aus der nicht leeren Sequenz seq. Wenn seq leer ist, hebt IndexError auf.

Natürlich in Python 3.x, könnten wir print statt sys.stdout.write und seinen Endwert auf '' . Ich,

 print(random.choice(words), end='') 
 import random WORDS = ("Python","Java","C++","Swift","Assembly") for letter in WORDS: position = random.randrange(len(WORDS)) word = WORDS[position] print(word) 
  • Python: Wählen Sie zufällige Zeile aus Datei, dann löschen Sie diese Zeile
  • Generieren zufällige ID aus der Liste - jinja
  • Empfehlungen für niedrige Diskrepanz (zB Sobol) quasi-zufällige Sequenzen in Python / SciPy?
  • Vergleich von Matlab und Numpy Code, der die Zufallsgenerierung verwendet
  • Extensible voreingenommener Zahlengenerator - Python
  • Erzeugen von "zufälligen" Strings aus einer anderen Zeichenfolge in Python?
  • Python, generieren zufällige String von Klammern
  • Gewichtete Stichprobe in Python
  • Python - Nach dem Zufallsprinzip Wörter auswählen, die in einem Quiz angezeigt werden sollen
  • Machen Sie eine Anzahl wahrscheinlicher, zufällig zu kommen
  • Wie soll ich random.jumpahead in Python verwenden?
  • Python ist die beste Programmiersprache der Welt.