私は最近Pythonを学び始め、練習としてテキストベースのアドベンチャーゲームに取り組んでいます。現在、コードはユーザーの応答をチェックして、それがそうであるかどうかを確認するため、実際には効果がありません。同じWordのいくつかのバリエーションと同じですが、文字列チェックで大文字と小文字が区別されないように変更するにはどうすればよいですか?
以下のサンプルコード:
if str('power' and 'POWER' and 'Power') in str(choice):
print('That can certainly be found here.')
time.sleep(2)
print('If you know where to look... \n')
if 'power' in choice.lower():
(choice
が文字列であると仮定して)行う必要があります。これは、choice
contains Word power
の場合に当てはまります。等しいかどうかを確認する場合は、in
の代わりに==
を使用してください。
また、単語全体としてのみ(power
またはhorsepower
の一部としてではなく)powerhouse
に一致することを確認する場合は、正規表現を使用します。
import re
if re.search(r'\bpower\b', choice, re.I):
これは、正確な比較を行っている場合です。
_if choice.lower() == "power":
_
または、これは、部分文字列の比較を行っている場合です。
_if "power" in choice.lower():
_
興味があれば、choice.lower().startswith( "power" )
もあります。
Strタイプ/オブジェクトには、ケースレス比較を特に目的としたメソッドがあります。
Python3プロンプトで:
>>> help(str)
...
| casefold(...)
| S.casefold() -> str
|
| Return a version of S suitable for caseless comparisons.
...
したがって、文字列の末尾に.casefold()を追加すると、すべて小文字になります。
例:
>>> "Spam".casefold()
'spam'
>>> s = "EggS"
>>> s.casefold()
'eggs'
>>> s == "eggs"
False
>>> s.casefold() == "eggs"
True
str.lower()
を使用して、すべてのエントリを小文字に変換し、文字列を小文字の可能性に対してのみチェックします。