【问题标题】:"list" object have no attribute "lower"“list”对象没有“lower”属性
【发布时间】:2019-03-19 00:15:42
【问题描述】:

不知道是什么问题,我想制作一个程序,它接受一行字符串并返回单词及其类型,如“In”函数中所述。

这是代码

def __init__(self):

    self.Action = "Action"
    self.Noun = "Noun"
    self.Shit = "Shit"
    self.Error = "Error"


    ACTION = ["Go","Kill","Jump"]
    NOUN = ["Lion","Building","World"]
    SHIT = ["shit","shit5"]






def Hard_worker(word):
    Action = "Action"
    Noun = "Noun"
    Shit = "Shit"
    Error = "Error"

    raw_data = word.lower()


    if raw_data in Action:
        return(Action,word)
    elif raw_data in Noun:
        return(Noun,word)
    elif raw_data in Shit:
        return(Shit,word)
    else:
        return(Error,word)

def scan(line):
    print"Scanning the line %r" % line

    words = line.split()
    return map(Hard_worker(words))


scan("Go Kill Jump")

任何帮助将不胜感激。

【问题讨论】:

  • 您应该查看类和变量范围的构造。你的 __init__ 方法被浪费了。此外,变量名称中的大小写很重要:Action、self.Action 和 ACTION 都是不同的变量,存在于不同的范围内。

标签: python python-2.7 list object lowercase


【解决方案1】:
return map(Hard_worker(words))

这不是你称呼map 的方式。函数和可迭代对象必须是两个参数。

return map(Hard_worker, words)

您也可以在此处使用列表推导式。

return [Hard_worker(word) for word in words]

【讨论】:

    猜你喜欢
    • 2016-01-30
    • 2018-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-14
    • 2020-08-21
    • 2019-01-01
    相关资源
    最近更新 更多