I\'ve started learning Python recently and as a practise I\'m working on a text-based adventure game. Right now the code is really ineffective as it checks the user responce
if 'power' in choice.lower():
should do (assuming choice
is a string). This will be true if choice
contains the word power
. If you want to check for equality, use ==
instead of in
.
Also, if you want to make sure that you match power
only as a whole word (and not as a part of horsepower
or powerhouse
), then use regular expressions:
import re
if re.search(r'\bpower\b', choice, re.I):
The str type/object has a method specifically intended for caseless comparison.
At the python3 prompt:
>>> help(str)
...
| casefold(...)
| S.casefold() -> str
|
| Return a version of S suitable for caseless comparisons.
...
So, if you add .casefold() to the end of any string, it will give you all lowercase.
Examples:
>>> "Spam".casefold()
'spam'
>>> s = "EggS"
>>> s.casefold()
'eggs'
>>> s == "eggs"
False
>>> s.casefold() == "eggs"
True
This if you're doing exact comparison.
if choice.lower() == "power":
Or this, if you're doing substring comparison.
if "power" in choice.lower():
You also have choice.lower().startswith( "power" )
if that interests you.
use str.lower()
to convert all entries to lowercase and only check the string against lower case possibilities.