[英]I'm having trouble with the for(x) in (y) function
因此,我目前正在尝试定义一个查看两个字符串并告诉用户一个字符串是否位于另一个字符串中的函数,它看起来像这样:
def isIn(x, y):
for x in y:
if x == y:
print "True"
print "x in y"
else:
print "False"
for y in x:
if x == y:
print "True"
print "y in x"
else:
print "False"
isIn('5', '1')
我认为这与(y)函数中的for(x)有关,但我可能错了。 该代码不断提出:
True
x in y
True
y in x
关于我如何能够解决此问题的任何建议?
简单的东西怎么样?
def isIn(x, y):
return x in y or y in x
如果我们要处理整个字符串,并且想知道一个字符串是否属于另一个字符串,则无需遍历它们的每个字符-这样只会告诉您两个字符串中是否都有某些字符。
现在,如果您真的需要知道两个字符串中是否都包含一些字符 ,那么这样做会很好:
def isIn(x, y):
return any(c in y for c in x)
我认为你for ... in
感到困惑,只是坦白in
;
def isIn(x,y):
if x in y:
print "True"
print "x in y"
else:
print "False"
if y in x:
print "True"
print "y in x"
else:
print "False"
isIn('5','1')
for x in y:
x
这里不是传递给函数的x
。 相同的:
if x == y:
x
in for
循环将迭代y
并将为1
。 然后将其与y
进行比较, y
也为1
。 因此,您将获得预期的输出:
True
x in y
第二个循环也一样
您在这里遇到一些循环问题:
for x in y:
# at this point, x is the first element of '1', so both x and y are '1'
# thus, x == y, which explains the behavior that you see
同上第二循环
您的问题几乎可以肯定是您的代码没有执行您认为的操作:
def isIn(x, y):
for x in y:
pass # abbreviated for brevity. Makes no difference here
for y in x:
pass #ditto
您for x in y
中x
一个按顺序分配给x
每个元素y
。 最后, x
保留y
的最后一个值。 然后,您的下一个循环将重用变量名y
,并将其顺序绑定到上一个循环中x
的最后一个值中的每个元素。
这不会在您的示例中引起错误,因为字符串的每个元素都是长度为1的字符串,因此可以迭代(但仅产生一个值等于其自身的对象)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.