2016-05-24 2 views
-2

Wenn der Benutzer aufgefordert wird, nach einem Wort zu suchen, möchte ich, dass die Groß-/Kleinschreibung nicht beachtet wird.Wie mache ich das in Python 3.4.3 ohne Groß-und Kleinschreibung?

import string 
usersentence= input("Please type in a sentence without punctuation: ") 

usersentence = ''.join(ch for ch in usersentence if ch not in set(string.punctuation)) 
print (usersentence.upper()) 
for i in range(1):  # number of words you wont to search 
    word= input("Please enter a word you want to search for in the sentence: ") 
    words = usersentence.split(' ') 
    passed = False  # Something to check if the word is found 
    for (i, words) in enumerate(words): 
     if (words == word): 
      print("your word appears in position(s): ") 
      print(i+1) 
      passed = True  # The word has been found 

    if not passed: 
     print("Sorry your word does not seem to be here") 
+0

Verwendung '.unterhalb()' auf beiden Seiten des Vergleichs? – martijnn2008

+0

Verwenden Sie 'lower()' nach jedem 'input()'? – TigerhawkT3

+0

Wie wiederhole ich den Code –

Antwort

1

Es ist nicht notwendig, zuerst den Satz in separate Wörter aufzuteilen. Sie können zuerst überprüfen:

if word.upper() in usersentence.upper(): 
    wordlist = usersentence.upper().split('') 
    solution = [i for i, sentword in enumerate(wordlist) if sentword == word.upper()] 
+0

Wie wiederhole ich den Code, wenn der Benutzer fertig ist? –

+0

'während True:' und danach der Rest des Codes. Dies wird so lange wiederholt, bis True nicht mehr True ist (machen Sie es zu einer Variablen, wenn Sie es mit einer Anweisung unter bestimmten Bedingungen verlassen wollen) – vds

+0

nicht sicher, wie das geht –

1

Ihre Frage klingt seltsam, da Ihr Code teilweise die Lösung enthält :-)! Sie können str.uper() oder str.lower() verwenden, um Strings ohne Groß-/Kleinschreibung zu vergleichen, genau wie Sie einen von ihnen mit str.upper() ausgeben. Der Code sollte dann Zeilen enthalten transformiert diese Weise:

word=input("Please enter etc.").lower() # or .upper(), as you wish 
# ... 
for (i, word_) in enumerate(words): 
    if (word_.lower() == word): # or word_.upper(), as you wish 

Mit str.lower() sollte Spur jeder akzentuierte Zeichen (nützlich in vielen Sprachen) halten. Als Französischsprecher empfehle ich diese Methode. Aber str.upper() sollte auch Ihren Bedürfnissen entsprechen. Siehe Abschnitt 3.13 des Unicode-Standards, um Informationen darüber zu erhalten, wie lower() und upper() an speziellen Zeichen arbeiten.

+0

Wie wiederhole ich den Code, wenn der Benutzer fertig ist ? –

+0

Siehe Antwort von Harwee! :-) – Schmouk

1

Verwendung string.lower() während Vergleich Strings

Verwendung while Schleife des Code

Verwendung break wiederholt eine Schleife

while True: 
    sent = raw_input("Enter Sentence: ").lower() #or upper() 
    sent = sent.split() 

    word = raw_input("Enter Word to search: ").lower() #or upper() 
    indexes= [] 
    for idx,ele in enumerate(sent): 
     if word == ele: 
      indexes.append(str(idx)) 
    print ("Your word appears at indexes: "+", ".join(indexes)) 

    response = raw_input("Do you want to continue? Y/N: ").lower() 
    if response == 'n': 
     break 
    else: 
     pass 

Der obige Code fragt nach Benutzereingaben und dann überprüft, ob das Wort zu brechen existiert in gegebenem Satz, es fragt dann nach Bestätigung, um fortzufahren oder nicht. Wenn der Benutzer N oder 'n' sagt, bricht die Schleife ab und das Programm wird beendet. Wenn der Benutzer Y oder 'y' sagt, fragt er erneut nach Satz und Wort.

Edit: Ersetzt continue Variablennamen mit response

+0

Wie wiederhole ich den Code, wenn der Benutzer fertig ist? –

+0

@JaredDavies was meinst du damit, wenn der Benutzer fertig ist? der Code wiederholt sich unendlich – Harwee

+0

Nachdem der Code fertig ist sorry. –

Verwandte Themen