2015-05-03 38 views
0

我将这样做的事实,我是一个新手到 Python,我正在采取我的第一个刺写类。我想要达到的目的是让学生根据用户输入来打开一组文本文件中的一个。文本文件包含这样的信息:在一个类中搜索二维数组Python 2.7

20,21,22 
23,24,25 
26,27,28 

该文本文件被读取为二维数组。从该数组中读取一个值并将其分配给一个新变量,以便可以打印此变量并在稍后计算中使用。在班级之外,我已经能够毫无困难地做到这一点,但让这个课程在班上工作一直令人沮丧。下面的代码我到目前为止的Python 2.7:

im_new = [] 

class Read(object): 
    def __init__(self, agev, table, row, col, newvar): 
     self.agevar = agev 
     self.table = table 
     self.row = row 
     self.col = col 
     self.newvar = newvar 

     display_list = [] 


     with open(self.table + str(self.agevar) + ".txt", "r") as data_file: 
      for line in data_file: 
       display_list.append(line.strip().split(',')) 

    def __str__(self): 
     self.newvar = (display_list[self.row][self.col]) 

immem = Read(40, "im", 1, 2, im_new) 


print "Immediate Memory: " % im_new 

理想的情况下,引用的例子文本文件,输出将是“即时记忆:25”,但输出我得到的是“即时记忆:”当我在控制台中输出值im_new,我得到“[]”。我确定这是非常明显的,我错过了。任何帮助,将不胜感激。提前致谢。

+0

我不太明白你的问题,但尝试'打印“立即记忆:”%immem.newvar' –

+0

感谢您的帮助。我对你建议的代码进行了修改,但是没有结果。我同意也许我没有解释我做得很好。我会修改我的问题和代码并重新发布。我很欣赏你的尝试。 – credenzamatic

回答

0

你的代码有问题,它也不会运行。我试图修复:

im_new = [] 

class Read(object): 
    def __init__(self, agev, table, row, col, newvar): 
     self.agevar = agev 
     self.table = table 
     self.row = row 
     self.col = col 
     self.newvar = newvar 

     self.display_list = [] 


     with open(self.table + str(self.agevar) + ".txt", "r") as data_file: 
      for line in data_file: 
       self.display_list.append(line.strip().split(',')) 

    def __str__(self): 
     self.newvar = (self.display_list[self.row][self.col]) 
     return self.newvar 

immem = Read(40, "im", 1, 2, im_new) 


print "Immediate Memory: ", immem 

这将返回Immediate Memory: 25像你期望的,但我不知道这是你想要的。

0

这是因为您将您的Read类指定为immem变量,而不是im_new变量。您需要打印immem而不是im_new