我最近开始学习Python,作为一种练习,我正在开发基于文本的冒险游戏。现在,代码实际上是无效的,因为它检查用户的响应,看它是否与同一个单词的几个变体相同。如何更改它以使字符串检查不区分大小写?
以下示例代码:
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')
答案 0 :(得分:24)
if 'power' in choice.lower():
应该这样做(假设choice
是一个字符串)。如果choice
包含单词power
,则会出现这种情况。如果要检查是否相等,请使用==
代替in
。
此外,如果您想确保仅将power
与整个单词匹配(而不是horsepower
或powerhouse
的一部分),请使用正则表达式:< / p>
import re
if re.search(r'\bpower\b', choice, re.I):
答案 1 :(得分:9)
如果您正在进行精确比较,请执行此操作。
if choice.lower() == "power":
或者,如果您正在进行子字符串比较。
if "power" in choice.lower():
如果你感兴趣的话,你也有choice.lower().startswith( "power" )
。
答案 2 :(得分:3)
使用str.lower()
将所有条目转换为小写,并仅针对小写的可能性检查字符串。
答案 3 :(得分:1)
str类型/对象有一个专门用于无壳比较的方法。
在python3提示符下:
int input1=10;
timer1= new Timer();
timer1.schedule(new TimerTask() {
@Override
public void run() {
TimerMethod(input1);
}
}, 0, 3000);
private void TimerMethod(int myinput)
{
this.runOnUiThread(Timer_Tick);
//How pass myinput to Timer_Tick????????????
}
因此,如果你将.casefold()添加到任何字符串的末尾,它将为你提供全部小写。
示例:
>>> help(str)
...
| casefold(...)
| S.casefold() -> str
|
| Return a version of S suitable for caseless comparisons.
...
答案 4 :(得分:0)
在.casefold()
上使用.lower()
,尤其是在处理可能不是ASCII文本的数据时。
>>> 'MyString'.casefold()
'mystring'
请参阅https://stackoverflow.com/a/45745761/14816491,了解有关胶套和下胶套之间差异的详细信息