2016-07-28 10 views
-1

나는 질문의 포인트는 첫째 elif에 남아 참조 : 당신이 가정으로단어에 포함 된 이전 문자를 포함하지 않는 단어를 어떻게 만들 수 있습니까?

import random as rnd 

vowels="aeiou" 
consonants="bcdfghlmnpqrstvz" 
alphabet=vowels+consonants 

vocabulary={} 
index=0 
word="" 
positions=[] 
while index<5: 
    random_lenght=rnd.randint(2,5) 
    while len(word)<random_lenght: 
     random_letter=rnd.randint(0,len(alphabet)-1) 
     if len(word)==0: 
      word+=alphabet[random_letter] 
     elif random_letter != positions[-1] and len(word)>0: 
      if word[-1] not in vowels: 
       word+=alphabet[random_letter] 
      if word[-1] not in consonants: 
       word+=alphabet[random_letter] 
     elif random_letter == positions[-1]: 
      break   
     if random_letter not in positions: 
      positions.append(random_letter) 
    if word not in vocabulary: 
     vocabulary[index]=word 
     index+=1 
    word="" 

결과는 나에게 만족하지 않습니다

{0: 'in', 1: 'th', 2: 'cuu', 3: 'th', 4: 'vd'} 

어떤 도움

주시면 감사하겠습니다.

+0

을, 당신의 출력이 올바른 것입니다. 이 '단어'에는 그 단어 앞에 나오는 문자가 포함되어 있지 않습니다. – usr2564301

+0

아마도 어휘가 아닌 단어 인 경우 단어를 변경하고 싶을 것입니다. 단어와 단어가 어울리지 않으면 : –

+0

"cuu"는 내가 원하는 것 이상을 포함하고 있습니다. 'vd'는 두 개의 자음을 포함합니다. 두 글자 한 쌍에 대해 하나의 모음과 하나의 자음 만 필요합니다. –

답변

0

당신이 (당신의 구현을 기반으로) 이런 식으로 뭔가해야 할 것 :

import random as rnd 

vowels="aeiou" 
consonants="bcdfghlmnpqrstvz" 
alphabet=vowels+consonants 

vocabulary={} 
index=0 
word="" 
positions=[] 
while index<5: 
    random_lenght=rnd.randint(2,5) 
    while len(word)<random_lenght: 
     random_letter=rnd.randint(0,len(alphabet)-1) 
     if len(word) == 0: 
      word+=alphabet[random_letter] 
     elif random_letter != positions[-1] and len(word)>0: 
      if word[-1] not in vowels and alphabet[random_letter] not in consonants: 
       word+=alphabet[random_letter] 
      elif word[-1] not in consonants and alphabet[random_letter] not in vowels: 
       word+=alphabet[random_letter] 
     if random_letter not in positions: 
      positions.append(random_letter) 
    if word not in vocabulary: 
     vocabulary[index]=word 
     index+=1 
    word="" 

그리고 다른 버전 : 귀하의 질문에 제목에 따르면

import string 
import random 

isVowel = lambda letter: letter in "aeiou" 

def generateWord(lengthMin, lengthMax): 
    word = "" 
    wordLength = random.randint(lengthMin, lengthMax) 
    while len(word) != wordLength: 
     letter = string.ascii_lowercase[random.randint(0,25)] 
     if len(word) == 0 or isVowel(word[-1]) != isVowel(letter): 
      word = word + letter 
    return word 

for i in range(0, 5): 
    print(generateWord(2, 5)) 
+0

은 첫 번째 컨트롤에서 자음을 사용하고 두 번째 컨트롤에서 모음을 사용하는 것처럼 보입니다. 최신 버전에서는 그 반대를 사용했습니다. 하지만 나는 왜 다른 결과가 있었는지 이해하지 못합니다. –

+0

모음에없는 단어 [-1]이 아니라 모음에없는 [random_letter] : " "단어 [-1]이 모음에 없습니다. 및 알파벳 [random_letter] 자음에 없습니다 : " 지금 나는 그것을 얻었다 –

+0

다행 그것 : :) – Sygmei