我无法使此Python分配正常工作。到目前为止,我得到的所有解释对我来说都是没有道理的。
代码:
class attribute: #Mandatory may not be changed
def __init__(self,Input_1,Input_2):
self.info_1= Input_1
self.info_2= Input_2
def Lister(List1,List2): #Mandatory Function may not be removed
List= []
for x in List1:
List.append(attribute(List1,List2))
return List
def Checker(List): #Mandatory Function may not be removed
Awnser=input("What is"+List.info_1)
if Awnser != List.info_2 :
print("Incorrect")
else:
print("Correct")
List_a=[1,2,3,4,5,6]
List_b=[1,2,3,4,5,6]
Checker(Lister(List_a,List_b))
该代码应采用List_a
和List_b
并询问用户相应的值在其他列表中将是什么。
但是,我一直遇到此错误,不知道为什么:
Traceback (most recent call last):
File "so.py", line 24, in <module>
Checker(Lister(List_a,List_b))
File "so.py", line 14, in Checker
Awnser=input("What is"+List.info_1)
AttributeError: 'list' object has no attribute 'info_1'
任何帮助将不胜感激。
答案 0 :(得分:2)
List
的类型为list
。它没有任何属性info_1
。但是,List
具有类型为attribute
...的单个元素,并且 对象将具有名为info_1
的属性。
我建议您使用更多描述性的变量名称,并且尤其避免使用现有语言概念的名称。使用类类型名称List
作为列表 object 有点麻烦;使用概念attribute
作为类的名称是完全误导的。
我还建议您尝试增量编程:一次只实现一个小步骤。在添加更多代码之前,请确保您知道如何操作。在这里,在进行任何测试之前,您已经积累了两个或三个新想法,这可能会增加您的困惑。
您当前的代码需要进行两次小的更改才能获得无错误的输出:
def Checker(List): #Mandatory Function may not be removed
Awnser=input("What is"+str(List.info_1))
和
Checker(Lister(List_a,List_b)[0])
这将为您提供原始列表作为输出:
What is[1, 2, 3, 4, 5, 6]