2017-08-03 11 views
0

あなたは未知の著者によって本を読んでおり、どの国から来たのか不思議です。あなたは、本の中の言葉のスペルに基づいてこれを推測するのに役立つプログラムを書くことに決めました。どのようにPythonでファイルを開くには、大文字小文字を無視して単語を検索し、単語の成功を見つける?

単語(例:色または色)を読み込み、ファイルbook.txtにあるかどうかを確認するプログラムを作成して、書籍に印刷物が見つかりました。

仮定:またはbook.txtファイル与えられ、例えば

...本で見つかりませんでしたか?どのように彼女は 仮説を形成するつもりでしたか?

問題は、私が何を試しても、単語の大文字小文字を無視するようにコードを取得できないということです。指定された入力ワードは常に小文字になりますが、プログラムは大文字と小文字を区別しないで一致させる必要があります。

マイコード:

word = input("Word to look for: ") 
with open('book.txt') as f: 
    if word in f: 
    print(word,"was found in the book.") 
    else: 
    print(word,"was not found in the book.") 

予想される出力:

Word to look for: hypothesize hypothesize was found in the book.

できるだけ単純にこれを保管してください。私はまだで構築されていないモジュールをインポートすることはできませんオンラインプログラムを通じて学んでい

+2

あなたが学んでいるので、あなたが単語ごとの答えをあなたに与えないと、あなたは最高に学ぶことができます。あなたがしなければならないことは、 'もし単語があれば'以上のことです。実際にはfの各単語にアクセスし、[str.lower](https://docs.python.org/2/library/string.html#string.lower)を呼び出してください。これを行うことで、すべての比較が小文字から小文字になり、効果的に大文字小文字を区別しません。 –

答えて

2

あなたが試みることができる:。

word = input("Word to look for: ") 
word_lower = word.lower() 

with open('book.txt', 'r') as fh: 
    data = fh.read().lower() 
    if word_lower in data: 
     print(word,"was found in the book.") 
    else: 
     print(word,"was not found in the book.") 

私はちょうどそう.lower()を小文字にworddata(ファイルの内容)の両方を強制しますそれは大文字と小文字を区別しません。

私はwordを直接更新せず、別の変数(word_lower)に下位文字列を格納して、入力したユーザーを正確に印刷できるようにしました。

+0

素晴らしいです。私はどこが間違っているのか正確に見ることができます。ありがとうございました! –

0

あなたは比較のために、あなたのファイルと小文字のそれぞれの単語を反復処理することができます:

wordToMatch = input("Word to look for: ") 
with open('book.txt') as f: 
    for line in f: 
     for word in line.split() : 
      if word.lower() in wordToMatch : 
       print(word,"was found in the book.") 
      else: 
       print(word,"was not found in the book.") 
0

を実際に、下部ケースの中に変数の値を強制するために、あなたは新しい変数を定義する必要はありません、古いものを使用して変更してください。代わりに word_lower = word.lower()の代わりにword = word.lower()を実行するか、またはword.lower()をif文に直接入力してください。これはずっと効率的です。

関連する問題