2017-06-01 1560 views
0

我用python做了一個計算器,它給了我學生成績平均值和學科成績平均值。下面的 是我如何需要我的輸入和我的輸出應該如何看的圖片。python的學生平均成績和科目成績平均值計算器

我想使用嵌套列表和函數。我試過這個。

+0

我認爲這是更實際的把所有的成績在Excel或CSV文件,該行或列,其中可以讀入蟒蛇它們求和,然後除以。要計算平均值,請查看numpy平均值。 – mikey

回答

0

您可以輕鬆地用while循環做到這一點,熊貓

import pandas 

list_marks = {} 

subjects = int(input("Number of subjects: ")) 

while(True): 
    name = input("Name of student (leave empty if finished): ") 
    if not name: 
     break 

    scores = [] 
    for i in range(1, subjects + 1): 
     scores.append(int(input("Subject %d: " % i))) 

    list_marks[name] = scores 

scores = pandas.DataFrame(list_marks) 
print(scores) 
#  student1 student2 student3 
# 0  100  90  80 
# 1  100  90  60 
print(scores.mean(axis=0)) 
# student1 100.0 
# student2  90.0 
# student3  70.0 
# dtype: float64 
print(scores.mean(axis=1)) 
# 0 90.000000 
# 1 83.333333 
# dtype: float64 

或使用NumPy的:

import numpy 

scoresarray = numpy.array(list(list_marks.values())) 
print(numpy.mean(scoresarray, axis=0)) 
# [ 90.   83.33333333] 
print(numpy.mean(scoresarray, axis=1)) 
# [ 100. 90. 70.] 
+0

但是有多少學生和沒有。的主題是動態的, – Shubham

+0

尼爾斯,先生,請你張貼你之前發佈的答案。 – Shubham

+0

我已經添加了熊貓和NumPy解決方案。 –

0

試試這個代碼

def calc(student_count): 
     list_marks = [] 
     for i in range(int(student_count)): 
      student_name = input("name of student?") 
      sub1_score = input("Score of subject 1?") 
      sub2_score = input("Score of subject 2?") 
      average = (int(sub1_score) + int(sub2_score))/2 
      list_marks.append([student_name,sub1_score,sub2_score,average]) 
     print (list_marks) 
     return list_marks      


    no_of_students = input("How many students?") 
    #no_of_subjects = input("How many subjects?") 
    calc(no_of_students) 

這將產生你想要的輸出爲兩個科目。

如果你有很多科目,由他們計數

+0

謝謝,在你的代碼中,當詢問'name_of_student'時,我們必須改變輸入到raw_input。任何想法如何打印平均呢? – Shubham

+0

@SRingne我把它添加到代碼中,沒有測試它,但它應該工作正常 – costisst

+0

沒有。的科目也是動態的,不僅僅是2個 – Shubham