Skip to main content
 首页 » 编程设计

python之类型错误 : 'NoneType' object is not iterable之Python

2025年05月04日16qq78292959

我知道之前有人问过这个问题,但我似乎无法正常工作。有人可以帮我解决这个问题吗?

import sys 
 
class Template: 
    def processVariable(self, template, data): 
        first = template.find('{{') 
        second = template.find('}}') 
        second = second + 2 
        out = template[first+second] 
        assert[out.startswith('{{')] 
        out = out.strip('{}') 
        rest = template[second:] 
        if out in data: 
            newstring = data[out] 
            return(rest, newstring) 
        else: 
            print "Invalid Data Passed it" 
 
t = Template() 
vars = { 
    'name': 'Jane', 
    'course': 'CS 1410', 
    'adjective': 'shimmering' 
} 
 
(rest, out) = t.processVariable('{{name}} is in {{course}}', vars) 

这是我遇到的错误:

File "template.py", line 28, in <module> 
    (rest, out) = t.processVariable('{{name}} is in {{course}}', vars) 
TypeError: 'NoneType' object is not iterable 

我理解 NoneType 但这是因为我的 for 循环还是我只是错过了一些简单的东西?提前致谢!

我的代码将被传递到一个字段中,以便我的老师可以针对它运行代码,它会通过或失败。这是他的代码将运行的内容:

import Candidate 
 
t = Candidate.Template() 
vars = { 
    'name': 'Jane', 
    'course': 'CS 1410', 
    'adjective': 'shimmering' 
} 
 
(rest, out) = t.processVariable('{{course}} is {{adjective}}', vars) 
print 'rest is: [' + rest + ']' 
print 'out is : [' + out + '] 

它应该返回的是:

rest is: [ is in {{course}}] 
out is : [Jane] 

如果有效,它将返回 Yes 或 No。

请您参考如下方法:

您没有从 else 部分返回任何内容,因此您的函数将默认返回 None。

当然,您不能将 None 解包为两个变量。尝试像这样从您的 else 部分返回一个元组:

if out in data: 
    newstring = data[out] 
    return (rest, newstring) 
else: 
    print "Invalid Data Passed it" 
    return (None, None)