Python 带字符的if条件
如何检查字符串中的一个字符是否等于另一个字符?在我下面的示例中,应该找到字符串中字符的位置,但我的第一个方法不起作用。为什么?Python 带字符的if条件,python,python-3.x,Python,Python 3.x,如何检查字符串中的一个字符是否等于另一个字符?在我下面的示例中,应该找到字符串中字符的位置,但我的第一个方法不起作用。为什么? txt = "Hello World" CharacterToFind = 'W' #returns position of first appearance of charater in string #returns -1 if character is not found #this does not work: for k in range(len(txt))
txt = "Hello World"
CharacterToFind = 'W'
#returns position of first appearance of charater in string
#returns -1 if character is not found
#this does not work:
for k in range(len(txt)):
print(k, txt[k])
j=-1
if(txt[k] == CharacterToFind): #this line likely contains the error
j=k
print(j)
#this works:
l=txt.find(CharacterToFind)
print(l)
最好只使用:
print(txt.find(char_to_find))
但是,如果您想通过循环进行练习,这是一种很好的方法:
txt = "Hello World"
char_to_find = 'W'
for i, char in enumerate(txt):
if char == char_to_find:
print(i)
break
else:
# will run if loop didn't break
print(-1)
简单解
#/usr/bin/python3
txt=“你好,世界”
CharacterToFind='W'
对于索引,枚举中的字符(txt):
如果character==CharacterToFind:
打印(索引、字符)
打破
对于范围内的索引(len(txt)):
如果txt[索引]==字符查找:
打印(索引,txt[索引])
打破
如果在txt中查找字符:
打印(字符查找)
基于功能的解决方案:
#/usr/bin/python3
txt=“你好,世界”
CharacterToFind='W'
def try___查找(CharacterToFind,txt):
对于范围内的索引(len(txt)):
如果txt[索引]==字符查找:
返回(索引,txt[索引])
返回-1
结果=尝试查找(CharacterToFind,txt)
如果结果为:
打印(结果)
查找列表中所有匹配项的更复杂解决方案。这也是理解收益率
#/usr/bin/python3
txt=“你好,世界”
CharacterToFind='o'
def try___查找_v1(CharacterToFind,txt):
对于范围内的索引(len(txt)):
如果txt[索引]==字符查找:
收益率(索引,txt[索引])
产量-1
结果=[]
find\u gen=尝试查找v1(CharacterToFind,txt)
尽管如此:
res=下一个(查找发电机)
如果res==-1:
打破
其他:
结果追加(res)
打印(“\nv1”)
如果len(结果)>0:
打印(结果)
其他:
打印(-1)
def try___查找_v2(CharacterToFind,txt):
对于范围内的索引(len(txt)):
如果txt[索引]==字符查找:
收益率(索引,txt[索引])
结果=[]
find_gen=尝试查找v2(CharacterToFind,txt)
尽管如此:
尝试:
结果。追加(下一步(查找根))
除停止迭代外:
打破
打印(“\nv2”)
如果len(结果)>0:
打印(结果)
其他:
打印(-1)
输出:
v1
[(4, 'o'), (7, 'o')]
v2
[(4, 'o'), (7, 'o')]
代码的问题是您在for循环中定义了j=-1
,因为每次循环运行时,它都会覆盖变量j
中存储的值
解决方案是在循环外定义j
,如下所示:
txt = "Hello World"
CharacterToFind = 'W'
j = -1
for k in range(len(txt)):
print(k, txt[k])
if(txt[k] == CharacterToFind):
j=k
print(j)
在循环的之前初始化j
。在您的示例中,在W
之后将其设置为-1
。为了更好地理解,请使用Hello W
作为输入。1)它不起作用,因为您从未告诉Pythontxt.find()
应该是执行For循环的函数。2) 不能这样做,因为字符串是内置对象,不能向其添加方法或属性3)正确的方法是执行def find(character\u to\u find):
然后执行for循环,最后返回j
。4) 我们使用带有下划线的小写字母来命名变量和函数,而不是大写字母
,这是针对类的。此外,下次您提问时,请发布完整错误。不要只是说“它不起作用”让我们猜测。说出代码应该做什么和它实际做什么。谢谢大家的时间和帮助!虽然我的错误是把j=-1放在for循环之前,但我从你的答案中学到了很多!