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)它不起作用,因为您从未告诉Python
txt.find()
应该是执行For循环的函数。2) 不能这样做,因为字符串是内置对象,不能向其添加方法或属性3)正确的方法是执行
def find(character\u to\u find):
然后执行for循环,最后返回j
。4) 我们使用带有下划线的
小写字母来命名变量和函数,而不是
大写字母
,这是针对类的。此外,下次您提问时,请发布完整错误。不要只是说“它不起作用”让我们猜测。说出代码应该做什么和它实际做什么。谢谢大家的时间和帮助!虽然我的错误是把j=-1放在for循环之前,但我从你的答案中学到了很多!