2016-05-24 10 views
-2

ユーザーが単語を検索するように求められたら、大文字小文字を区別しないようにしたい。Python 3.4.3では、大文字小文字を区別しないようにするにはどうすればよいですか?

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

使用 '.lower()'とcontinue変数名を置き換え? – martijnn2008

+0

各 'input()'の後に 'lower()'を使用しますか? – TigerhawkT3

+0

私はどのようにコード –

答えて

1

文章を別々の単語に分割する必要はありません。最初に確認することができます:

+0

を繰り返すのですか?ユーザーが完了したらコードを繰り返す方法は? whileの間には –

+0

が続きます: 'とその後、残りのコード。 TrueがTrueでなくなるまでこれが繰り返されます(特定の条件でステートメントを使用してジャンプする場合は変数にします) – vds

+0

その方法がわからない –

1

あなたのコードは、部分的に解決策を含んでいるので、奇妙に聞こえます:-)! str.upper()またはstr.lower()を使用すると、str.upper()を使用して文字列を印刷するときと同じように、文字列を大文字と小文字の制約なしで比較できます。あなたのコードは、この方法を変えて行含まれている必要があります(str.lowerを使用して

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 

)を(多くの言語で有用)任意の強調文字を追跡する必要があります。フランス語の講師として、これは私が推薦する方法です。しかし、str.upper()もあなたのニーズに合っているはずです。 lower()とupper()が特殊文字に対してどのように働いているかについての情報を得るには、Unicode標準のセクション3.13を参照してください。文字列を単語場合、上記のコードは、ユーザの入力した後、チェックを要求

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 

ループを破壊するコード

使用breakを繰り返す

使用whileループを比較しながら

+0

ユーザーが完了したらコードを繰り返す方法? –

+0

Harweeから答えを見る! :-) – Schmouk

1

使用string.lower()与えられた文に存在する場合、それは継続するかどうかの確認を求めます。ユーザーがNまたは 'n'と言うと、ループが途切れてプログラムが終了します。ユーザーがYまたは 'y'と答えた場合は、文と単語をもう一度求めます。

編集:比較の両側にresponse

+0

ユーザーが完了したらコードを繰り返す方法は? –

+0

@JaredDaviesユーザーが完了したらどういう意味ですか?コードは無限に繰り返されています – Harwee

+0

コードが残った後はごめんなさい。 –