繁体   English   中英

我在(y)函数中使用for(x)遇到麻烦

[英]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 yx一个按顺序分配给x每个元素y 最后, x保留y的最后一个值。 然后,您的下一个循环将重用变量名y ,并将其顺序绑定到上一个循环中x的最后一个值中的每个元素。

这不会在您的示例中引起错误,因为字符串的每个元素都是长度为1的字符串,因此可以迭代(但仅产生一个值等于其自身的对象)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM