2017-10-07 3 views
0

L'affectation consiste à créer une fonction qui prend deux arguments: un nombre et une chaîne. Vérifiez la chaîne pour les voyelles, si le nombre de voyelles est égal à l'argument numéro, renvoyez la chaîne. Sinon, ajoutez 5 lettres aléatoires à la chaîne et comptez les voyelles. Répétez jusqu'à ce que le nombre de voyelles dans la chaîne égale le nombre fourni. Exemple: fonct (2, « bleu ») retours bleu ' fonct (3, « bleu ») retourne « bluequrmb »Comptage des voyelles et ajout de 5 lettres aléatoires à une chaîne (itérative et récursive)

Cela doit être complété également sous la forme récursive, mais je ne peux pas pourquoi ma forme itérative ne fonctionne pas.

import random 

def VowelCount(thestring): 
    Vowels = 'aeiouAEIOU' 
    Count = 0 
    if type(thestring) == str: 
     for char in thestring: 
      if char in Vowels: 
       Count += 1 
     return Count 
    else: 
     print("Enter a string.") 



def AddFive(number, astring): 
    LetterPull = 'abcdefghijklmnopqrstuvwxyz' 
    newstring = list(astring) 
    NString = ''.join(str(newstring)) 
    VowelNum = VowelCount(NString)#calling the function VowelCount with argument 'astring' 
    ToFive = 0 
    number != 0 == True 

    while True: 
     if VowelNum < number: 
      if ToFive != 5: 
       y = random.choice(LetterPull) 
       newstring.append(y) 
       ToFive += 1 
      else: 
       VowelNum = VowelCount(NString) 
       ToFive = 0 
     else: 
      print(newstring) 
      break 
    else: 
      print("Enter a higher number.") 

Un aperçu serait utile.

Répondre

0

C'est le 'blocage' erreur logique:

else: 
    VowelNum = VowelCount(''.join(newstring)) # not VowelCount(NString)