2013-10-28 26 views
0

到目前爲止這是我有,如何從.txtfile表中沒有硬編碼的價值,以及如何MIN和MAX列表

def List(): 
    bad_filename = True 
    while bad_filename == True: 
     try: 
      filename = input("Enter the filename: ") 
      fp = open(filename, "r") 
      for f_line in fp: 
       b=(f_line.strip('\n').split(',')) 
       l=[float(v) for v in b] 
       l=[] 
       for v in b: 
        l.append(float(v)) 
       print (l,end=" ") 

      bad_filename = False 
     except IOError: 
      print("Error: The file was not found: ", filename) 

def tab(): 
    A=() 
    print_str = "|{:^5s} | {:^10s} | {:^10s}| {:^10s} |{:^10s}|".format("Name","A", "B","C","D","E") 
    hline = "-" * len(print_str) 
    lline="-"*len(print_str) 
    print(hline) 
    print(print_str) 
    print(lline) 
    format_str= "|{:>5s} |{:^10.2f} |{:^10.2f} |{:^10.2f} |{:>10f}|" 
    print_str= format_str.format('1',1.00,2.00,3.00,4.00,5.00) 
    print (print_str) 
    print_str=format_str.format('2',6.00,7.00,8.00,9.00,0.00) 
    print(print_str) 
    print_str=format_str.format('3',1.1,2.2,3.3,0.1,0.3) 
    print(print_str) 

List() 
tab() 

我的問題開始,當用戶更改數據。 txtfile,因爲我硬編碼打印表的數量,我也需要做一個數組,所以我可以從列表中獲得最小值最大值。

而不是像這樣的硬代碼值('1',1.00,2.00,3.00,4.00,5.00) 我希望它從.txt文件中讀取並在txt文件中生成表格我已將數據存儲在桌面 1,2,3,4,5 6,7,8,9,0 1.10,2.20,3.30,0.10,0.30

+0

我做了第一個功能,因爲我需要得到一個列表,並使用它們來獲取最小值,最大值和平均值。 – rookie

+0

我知道我使用函數名稱的頂部主,但是當我更改名稱並創建一個新的主要打印這兩個函數我得到錯誤,我想不到任何幫助 – rookie

回答

0

有些事情嘗試...

首先,重新格式化List()功能擺脫額外的代碼,並返回列表,而不是打印它,所以你可以然後處理它...

def GenList(): 
    bad_filename = True 
    while bad_filename == True: 
     try: 
      filename = input("Enter the filename: ") 
      fp = open(filename, "r") 
      l = [] 

      for f_line in fp: 
       rownum += 1 
       b = f_line.strip('\n').split(',') 
       l.append([float(v) for v in b]) 
      fp.close() 
      bad_filename = False 
      return l  
     except IOError: 
      print("Error: The file was not found: ", filename) 

現在調用該函數來得到你的列表:

MyList = GenList() 

您的其他打印功能,使之採取「參數」作爲輸入(這個列表),並且在隨後的.format()語句使用:

def MakeTable(InputList): 
    format_str= "|{:>5s} |{:^10.2f} |{:^10.2f} |{:^10.2f} |{:>10f}|" 
    print("The max of the list is {0} and the min is {1}".format(max(InputList),min(InputList))) 
    # etc.... 
+0

謝謝,但我需要打印表格,我可以向用戶詢問他們是否希望列或列的最小值或最大值------------------------ ----------------------- | | A | B | C | D | E | ----------------------------------------------- | 1 | 1.00 | 2.00 | 3.00 | 4.00 | 5.00 | | 2 | 6.00 | 7.00 | 8.00 | 9.00 | 0.00 | | 3 | 1.10 | 2.20 | 3.30 | 0.10 | 0.30 | 例如,如果用戶想要得到1的行上的最大值,它應該打印5,如果他想在b上分鐘min應該是2. – rookie

+0

這是我所做的調用這兩個函數,但它不工作打印(Makelist(l)) print(MakeList()()輸入文件名稱:輸入文件名稱:輸入文件名稱: #MyList = GenList() print InputList)) main() – rookie

相關問題