2016-12-02 47 views
0

我做一个这样的代码,但是我有一个问题...如何在Python 3.5.2上创建表?

def arrayfunction(n): 
     array = [None] *n 
     return array 

    def main(): 
     title = input("Enter A Lesson Title : ") 
     students = int(input("How Many Students : ")) 
     name = arrayfunction(students) 
     home = arrayfunction(students) 
     mid = arrayfunction(students) 
     final = arrayfunction(students) 
     total = arrayfunction(students) 
     grade = arrayfunction(students) 

     for i in range(0,students,1): 
      print("Students Number - ",i+1,sep="") 
      print("Students Name : ") 
      name[i] = input() 
      print("Homework Points : ") 
      home[i] = int(input()) 
      print("Mid Points : ") 
      mid[i] = int(input()) 
      print("Final Points : ") 
      final[i] = int(input()) 
      total[i] = (home[i]*0.3) + (mid[i]*0.3) + (final[i]*0.4) 

      if (total[i] >= 80): 
       grade[i] = "A" 
      elif (total[i]>=70): 
       grade[i] = "B" 
      elif (total[i]>=59): 
       grade[i] = "C" 
      elif (total[i]>=50): 
       grade[i] = "D" 
      elif (total[i]<50): 
       grade[i] = "E" 

而不是使这样的打印输出,我希望把它放在一个表,但我不知道如何做到这一点,任何人可以帮我 ??

print ("|----------------------------------------------------------------|") 
    print ("|      POINT LIST    |") 
    print ("|     LESSON TITLE : ",title," |",sep="") 
    print ("|---------------------------------------------------------------|") 
    print ("|No.| Name   |    Points   | Grade |",sep="") 
    print ("| | Students  |-------------------------------------|   |",sep="") 
    print ("| |     | Homework | Mid | Final | Totals |   |",sep="") 
    for l in range(0,students,1):  
     print ("|",l+1," |",name[l],"           |",sep="") 
     print ("| |     |",home[l]," | ",mid[l]," | ",final[l]," | ",total[l]," | ",grade[l]," | ",sep="") 
    print ("|-----------------------------------------------------------------------------------------------|") 


    return None 


if __name__ == '__main__': 
    main() 

输出图像:https://i.stack.imgur.com/x0VCa.png

+0

它的更艰巨的任务,通过字符串创建表,你为什么不尝试Python的GUI,例如[Tkinter的(https://wiki.python.org/moin/TkInter) – nmnsud

+0

使用'str.format' 。它可以为你处理间距。 –

+0

有很多可用的库可以很好地打印表格数据。 – polku

回答

0

我建议你舒适的str.format功能。它为这种事情创造了奇迹。

print('{:^60}'.format('Point List')) 
print('{:>30}{:<30}'.format('Lesson Title', title)) 
template = '{:<3}{:^12}{:^9}{:^9}{:^9}{:^9}{:^9}' 
print(template.format('No.', 'Name', 'HW', 'Mid', 'Final','Total', 'Grade')) 
for i in range(0, students): 
    print(template.format(i+1, name[i], home[i], mid[i], final[i], total[i], grade[i])) 
+0

噢感谢您的参考,生病尝试再次从头开始,^^ @帕特里克霍夫 –

+0

@AfterSchoolThings你可能会发现这里的例子有用:https://docs.python.org/3/library/string.html#formatspec –

+0

好的谢谢队友 –