错误:未定义名称's'

时间:2013-12-21 23:00:19

标签: python

我已经将s定义为列表,但是当我运行模块时,它表示s未定义。

def contains(s, sub):
    s = ["apples", "bananas", "oranges", "watermelon", "apricots"]

    sub = raw_input("Please enter a substring of s: ")

    if sub in s:
        print sub, "is a substring of s."
        return True

if __name__ == '__main__':
    contains(s, sub)

3 个答案:

答案 0 :(得分:2)

s仅在函数contains中定义。 s绑定到传递给函数的参数。换句话说,您正在错误地调用该函数。你可能想这样做:

def contains(s, sub):
    return sub in s

if __name__ == '__main__':
    s = ["apples", "bananas", "oranges", "watermelon", "apricots"]
    sub = raw_input("Please enter a substring of s: ")
    if contains(s, sub):
        print sub, "is a substring of s."

答案 1 :(得分:1)

您在最后一行引用s

contains(s, sub)

这是函数的外部,并且您没有定义全局ss仅作为函数内部本地名称存在。这同样适用于sub

将列表的定义和sub移动到该部分:

def contains(s, sub):
    if sub in s:
        print sub, "is a substring of s."
        return True

if __name__ == '__main__':
    s = ["apples", "bananas", "oranges", "watermelon", "apricots"]
    sub = raw_input("Please enter a substring of s: ")
    contains(s, sub)

您也可以使用不同的名称,并将打印保留在功能之外:

def contains(s, sub):
    return sub in s

if __name__ == '__main__':
    fruits = ["apples", "bananas", "oranges", "watermelon", "apricots"]
    substring = raw_input("Please enter a substring of fruits: ")
    if contains(fruits, substring):
        print substring, "is a substring of fruits."

并且该函数仍将ssub用作本地名称。

答案 2 :(得分:0)

在这里的代码中

if __name__ == '__main__':
    contains(s, sub)

您尚未将s定义为变量。

在使用s的引用致电contains之前,您应该将s定义为主要功能中的列表。

s函数和main函数中变量contains之间的差异在于它们完全是两个不同的变量。您可能想要查看parameter是什么