2012-06-23 7 views
2

나는 목록에 포함 된 단어 집합의 양이 많은 문자열을 만들려고 노력하지만 사용하는 코드는 한 단어를 무작위로 사용하지만 모든 단어는 인쇄하지 않습니다.임의의 단어 생성

hellohellohellohellohello

이 예는 예상 출력은 다음과 같습니다 :

appleyeahhellonopesomething

누구나 알 수있는 예제 출력이 될 것

import random 

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

:

내 코드입니다 나 내가 뭘하고있어? 응?

+1

. 예를 들어,'print '='* 30'은 30 "="줄을 출력 할 것이기 때문에 당신은 5 번 "hello"를 얻고 있습니다. – Levon

답변

7

random.choice(words) * 5random.choice을 한 번만 실행 한 다음 결과를 5로 곱하면 동일한 문자열이 반복됩니다.

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

'_'은 익명 변수라고합니까? (저는 변수 그 자체의 값이 필요 없다는 것을 알고 있습니다. 실제로는 이름없는 placeholder입니다.) 그래서 정확한 용어에 대해 궁금합니다. – Levon

+0

@ Levon 나는'_'에 대해 방금 말한 것 이상을 모른다. – jamylak

+0

아 좋아, 그냥이 "공식"이름을 알아 내려고 애썼다. – Levon

3

당신은 당신이 random.choice(words)의 출력을 얻고 다음 5 회에서 증식되어, random.choice(words) 5 번 호출되지 않습니다. 문자열을 사용하면 문자열 만 반복됩니다.

"abc" * 3 당신에게 "abcabcabc"

그래서 먼저 무작위로 선택된 단어에 따라, 그냥 반복됩니다 5 시간을 줄 것이다.

2

문자열을 "곱하기"하면 문자열이 여러 번 인쇄됩니다. 예를 들어, print '=' * 30은 행을 인쇄하므로 "hello" 번 5 번을 얻습니다. 임의로 선택한 단어를 5 번 반복합니다.

import random, sys 
words = ['hello', 'apple', 'something', 'yeah', 'nope', 'lalala'] 

for i in range(5): 
    sys.stdout.write(random.choice(words)) 

choice()를 사용하는 당신에게 5 개 무작위 선택의 집합을 제공 할 것입니다. 공백을 피하기 위해 sys.std.write을 사용합니다. print 문장이 단어 사이에 삽입됩니다.

예를 들어

에서 2 실점 :

yeahsomethinghelloyeahlalala 

choice()

반환 비어 있지 않은 시퀀스 서열에서 임의의 요소

somethingyeahsomethinglalalanope 

. seq가 이 비어 있으면 IndexError가 발생합니다.

파이썬 3.x의에서 물론, 우리는 대신 sys.stdout.writeprint를 사용할 수 있고 ''에 그 end 값을 설정합니다. 당신이 당신의 원본 목록에서 단어를 반복하지 않으려면 즉,

print(random.choice(words), end='') 
5

, 당신은 sample를 사용할 수 있습니다.

import random as rn 
words = ['hello', 'apple', 'something', 'yeah', 'nope', 'lalala'] 

word = ''.join(rn.sample(words, 5)) 

결과 :

문자열 문자열을 여러 번 인쇄합니다 "곱"
>>> word 
'yeahhellosomethingapplenope' 
1
import random 
WORDS = ("Python","Java","C++","Swift","Assembly") 
for letter in WORDS: 
    position = random.randrange(len(WORDS)) 
    word = WORDS[position] 
    print(word)