2016-07-28 78 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

相關問題