2016-11-26 3 views
1

Für einen Eingabetext muss ich alle Vokale zählen, den ersten Buchstaben in jedem Wort groß schreiben und den Text rückwärts ausgeben (muss nicht großgeschrieben werden), ohne Titel oder Umkehrfunktionen zu verwenden. Ich konnte die Zählung für Vokale herausfinden, aber mit zwei anderen kämpfen.Umgekehrte Zeichenfolge ohne Umkehrfunktion

def main(): 

    vowelCount = 0 
    text = 'abc' 

    while(len(text) != 0): 
     text = input('Please etner some text or press <ENTER> to exit: ') 

     for char in text: 
      if char in 'aeiouAEIOU': 
       vowelCount += 1 
     print('Vowels:', vowelCount) 
     vowelCount = 0 



     for i in text: 
      i = text.find('') + 1 
     print(i) 

     print(text[0].upper() + text[1:]) 


main() 
+0

Die Worte in umgekehrter Reihenfolge oder jedes Zeichen umgekehrt? – AChampion

+6

[Das Umkehren einer Zeichenfolge ist bereits sehr ausführlich behandelt.] (Http://stackoverflow.com/q/931092/364696) – ShadowRanger

Antwort

3

Hier sind zwei Beispiele für die Umkehrung einer Zeichenfolge. Scheibe der String

>>> s = 'hello' 
>>> reversed_s = s[::-1] 

oder mit einer Schleife.

res = '' 
for char in s: 
    res = char + res 

Voll-Code

def main(): 
    # Run infinitely until break or return 
    # it's more elegant to do a while loop this way with a condition to 
    # break instead of setting an initial variable with random value. 
    while True: 
     text = input('Please enter some text or press <ENTER> to exit: ') 
     # if nothing is entered then break 
     if not text: 
      break 

     vowelCount = 0 
     res = '' 
     prev_letter = None 

     for char in text: 
      if char.lower() in 'aeiou': 
       vowelCount += 1 
      # If previous letter was a space or it is the first letter 
      # then capitalise it. 
      if prev_letter == ' ' or prev_letter is None: 
       char = char.upper() 

      res += char # add char to result string 
      prev_letter = char # update prev_letter 

     print(res) # capitalised string 
     print(res[::-1]) # reverse the string 
     print('Vowel Count is: {0}'.format(vowelCount)) 

# Example 
Please enter some text or press <ENTER> to exit: hello world! 
Hello World! 
!dlroW olleH 
Vowel Count is: 3 
+0

Danke für den Tipp-Mann, aber wie würdest du jedes Wort mit der Schleife groß schreiben, ohne die Zeichenfolge umzukehren. – MrG

+0

@MrG Aktualisierte Antwort. Ich habe es aufgeteilt, so dass die resultierende Zeichenfolge nicht umgekehrt und stattdessen am Ende mit der ersten vorgeschlagenen Methode (Slicing) umgekehrt wird –