私が取り組んでいるプロジェクトのPythonスクリプトを書いていますが、私は理解できないエラーに遭遇しています。私はかなりPythonを新しくしているので、これは非常に素人な質問である場合は謝罪します。Pythonの文字列ベースのif文
テキストファイルから取得した文字列を比較するif文があります。この入力を受け取り、入力が何であったかに応じてファイルの場所の文字列を返します。しかし、スクリプトを実行すると、入力が正確に比較されているときでも、常にelse節に解決されます。
def findfile(input):
if input.lower() == 'option a':
return 'file location a'
elif input.lower() == 'option b':
return 'file location b'
elif input.lower() == 'option c':
return 'file location c'
elif input.lower() == 'option d':
return 'file location d'
else:
return 'Invalid Input'
スクリプトの前半にチェックがあり、渡された入力が文字列であることがわかりました。それにもかかわらず、たとえ文字列'option b'
を渡しても、を返します。
ご協力いただきありがとうございます!
Pythonには組み込み関数 'input()'があります。パラメータまたは変数にはこの名前を使用しないでください。また、カスケードされた 'if'の代わりに' {'option a': 'file location a'、...} 'の辞書ルックアップを考えてみましょう。 – DyZ
サイドノート:小さな仕事を保存して、大文字と小文字の変換を一度実行すると、 'input = input.strip()。lower()'を関数の最初の行に置き、 '.lower()'コールを削除します各条件テストからそして、変数にPythonの組み込み関数(例えば 'input')と同じ名前を与えてはいけません。そうしないと、最終的に自分自身が台無しになるでしょう。おそらく 'inp'または' inputstr'です。 – ShadowRanger
'findfile( 'option b')'は ''ファイルの場所b''を返すので、実際にはその文字列ではないと思います。 –