打印报表没有为我提供准确的数字

绝地奥比约翰

好的,问题来了,代码有效,但数字加起来不对,所以我在某处遗漏了一些东西。我的大脑因为连续三天工作而完全死了,所以我需要另一组眼睛。基本上这是一个评分计算器,它从 .txt 文件中获取输入并将输出发送到 .txt 文件。我正在放弃最低测验分数。我还需要一些有关 outfile.write(outstring) 格式的帮助,它现在到处都是,我需要它看起来与输出文件完全一样。我留下了一些诊断打印语句,但基本上这就是代码现在的样子:

infilename = input("Please enter file name: ")
outfilename = input("Please enter output file name: ")

infile = open(infilename,"r")
outfile = open(outfilename, "w")

quiz_sum = 0
low_quiz = 1000
prog_sum = 0

nameline = infile.readline()
outfile.write(nameline)
print(nameline)
while nameline != "":
    quiz_line = infile.readline()
    prog_line = infile.readline()
    exam_line = infile.readline()
    quiz_list=quiz_line.split()
    quiz_sum = 0
    prog_sum = 0
    low_quiz = 1000
    for quiz_score in quiz_list:
        quiz_float = float(quiz_score)
        quiz_sum += quiz_float
        if quiz_float < low_quiz:
            low_quiz = quiz_float
    if len(quiz_list) > 1:
        quiz_avg = ((quiz_sum-low_quiz)/(len(quiz_list)-1))*10
    else:
        quiz_avg = quiz_sum*10
    print("QUIZ AVERAGE", quiz_avg)
    prog_list = prog_line.split()
    for prog_score in prog_list:
        prog_float = float(prog_score)
        prog_sum += prog_float
    if len(prog_list) > 1:
        prog_avg = ((prog_sum) / len(prog_list))*10
    else:
        prog_avg = prog_sum*10
    print("PROGRAM AVERAGE", prog_avg)
    exam_list = exam_line.split()
    for exam_score in exam_list:
        exam_float = float(exam_score)
        #exam_sum += exam_float
    exam1 = float(exam_list[0])
    exam2 = float(exam_list[1])
    exam3 = float(exam_list[2])
    exam_avg = (exam1*.20)+(exam2*.20)+(exam3*.25)
    print("EXAMs" , exam1,exam2,exam3)
    average = ((quiz_avg*.15)+(prog_avg*.20)+(exam_avg))
    if 90 <= average <= 100:
        final_grade = "A"
    if 80 <= average < 90:
        final_grade = "B"
    if 70 <= average < 80:
        final_grade = "C"
    if 60 <= average < 70:
        final_grade = "D"
    if 0 <= average < 60:
        final_grade = "F"
    print("TOTAL AVERAGE",average)
    outstring =("%-20s %3.1f   %s" %(nameline,average,final_grade))
    print(outstring)
    outfile.write(outstring)
    nameline = infile.readline()
    outstring = ("%-20s***" % (nameline))

infile.close()
outfile.close()

这是输入的样子(第一行数字是测验,第二行是程序项目,第三行是考试 [分别是考试 1、2、3]):

Babbage, Charles
10.0   9.5    8.0  9.0
 9.5  10.0    9.0
85.0  92.0   81.0
Turing, Alan
1.0   8.0    6.0
10.0  10.0    9.0   9.5
90.0  92.0   88.5
Hopper, Grace
10.0  5.0    8.0
10.0  10.0    9.0   9.5
90.0  92.0   88.0
Van Rossum, Guido
 7.5   8.5
 7.5   6.0    6.0   9.0
68.0  81.0   70.0
Backus, John
 9.5   3   10.0   8.0   9.5  10.0
 7.5   8.5    6.0   9.0  10.0
99.0  93.0  44.0
Crawley, Bryan
 6.0
 7.5
70.0  60.0   55.5

最后,这应该是输出的格式:

Babbage, Charles      89.4   B
Turing, Alan          91.3   A
Hopper, Grace         92.7   A
Van Rossum, Guido     75.5   C
Backus, John          94.4   A
Crawley, Bryan        63.9   D

tl;dr - 我需要获得正确的数字才能使该程序正常工作。我还需要有关程序如何在循环结束时写入文件的格式方面的帮助。谢谢你们。

编辑 -

更新帖子以显示当我运行程序时会发生什么:请输入文件名:scores.txt 请输入输出文件名:results.txt Babbage, Charles

QUIZ AVERAGE 95.0
PROGRAM AVERAGE 95.0
EXAMs 85.0 92.0 81.0
TOTAL AVERAGE 88.9
Babbage, Charles
    88.9   B
QUIZ AVERAGE 70.0
PROGRAM AVERAGE 96.25
EXAMs 90.0 92.0 88.5
TOTAL AVERAGE 88.275
Turing, Alan
        88.3   B
QUIZ AVERAGE 90.0
PROGRAM AVERAGE 96.25
EXAMs 90.0 92.0 88.0
TOTAL AVERAGE 91.15
Hopper, Grace
       91.2   A
QUIZ AVERAGE 85.0
PROGRAM AVERAGE 71.25
EXAMs 68.0 81.0 70.0
TOTAL AVERAGE 74.3
Van Rossum, Guido
   74.3   C
QUIZ AVERAGE 94.0
PROGRAM AVERAGE 82.0
EXAMs 99.0 93.0 44.0
TOTAL AVERAGE 79.9
Backus, John
        79.9   C
QUIZ AVERAGE 60.0
PROGRAM AVERAGE 75.0
EXAMs 70.0 60.0 55.5
TOTAL AVERAGE 63.875
Crawley, Bryan
      63.9   D

这就是“results.txt”文件中的内容:

Babbage, Charles
Babbage, Charles
    88.9   BTuring, Alan
        88.3   BHopper, Grace
       91.2   AVan Rossum, Guido
   74.3   CBackus, John
        79.9   CCrawley, Bryan
      63.9   D
马赫什·卡里亚
infilename = input("Please enter file name: ")
outfilename = input("Please enter output file name: ")

infile = open(infilename,"r")
outfile = open(outfilename, "w")

quiz_sum = 0
low_quiz = 1000
prog_sum = 0

nameline = infile.readline()
# outfile.write(nameline) # no need to have this
# print(nameline)
while nameline != "":
    quiz_line = infile.readline()
    prog_line = infile.readline()
    exam_line = infile.readline()
    quiz_list=quiz_line.split()
    quiz_sum = 0
    prog_sum = 0
    low_quiz = 1000
    for quiz_score in quiz_list:
        quiz_float = float(quiz_score)
        quiz_sum += quiz_float
        if quiz_float < low_quiz:
            low_quiz = quiz_float
    if len(quiz_list) > 1:
        quiz_avg = ((quiz_sum-low_quiz)/(len(quiz_list)-1))*10
    else:
        quiz_avg = quiz_sum*10
    print("QUIZ AVERAGE", quiz_avg)
    prog_list = prog_line.split()
    for prog_score in prog_list:
        prog_float = float(prog_score)
        prog_sum += prog_float
    if len(prog_list) > 1:
        prog_avg = ((prog_sum) / len(prog_list))*10
    else:
        prog_avg = prog_sum*10
    print("PROGRAM AVERAGE", prog_avg)
    exam_list = exam_line.split()
    for exam_score in exam_list:
        exam_float = float(exam_score)
        #exam_sum += exam_float
    exam1 = float(exam_list[0])
    exam2 = float(exam_list[1])
    exam3 = float(exam_list[2])
    exam_avg = (exam1*.20)+(exam2*.20)+(exam3*.25)
    print("EXAMs" , exam1,exam2,exam3)
    average = ((quiz_avg*.15)+(prog_avg*.20)+(exam_avg))
    if 90 <= average and average <= 100:
        final_grade = "A"
    if 80 <= average and average < 90:
        final_grade = "B"
    if 70 <= average and average < 80:
        final_grade = "C"
    if 60 <= average and average < 70:
        final_grade = "D"
    if 0 <= average and average < 60:
        final_grade = "F"
    print("TOTAL AVERAGE",average)
    outstring = ("{0:<20} {1:<8} {2:<25}\n".format(nameline.strip(), round(average,1), final_grade))
    print(outstring)
    outfile.write(outstring)
    nameline = infile.readline()
    outstring = ("%-20s***" % (nameline))

infile.close()
outfile.close()

我有固定的输出格式。现在它看起来像以下。

结果输出文件:

Babbage, Charles     88.9     B                        
Turing, Alan         88.3     B                        
Hopper, Grace        91.2     A                        
Van Rossum, Guido    74.3     C                        
Backus, John         79.9     C                        
Crawley, Bryan       63.9     D                        

控制台输出:

('QUIZ AVERAGE', 95.0)
('PROGRAM AVERAGE', 95.0)
('EXAMs', 85.0, 92.0, 81.0)
('TOTAL AVERAGE', 88.9)
Babbage, Charles     88.9     B                        

('QUIZ AVERAGE', 70.0)
('PROGRAM AVERAGE', 96.25)
('EXAMs', 90.0, 92.0, 88.5)
('TOTAL AVERAGE', 88.275)
Turing, Alan         88.3     B                        

('QUIZ AVERAGE', 90.0)
('PROGRAM AVERAGE', 96.25)
('EXAMs', 90.0, 92.0, 88.0)
('TOTAL AVERAGE', 91.15)
Hopper, Grace        91.2     A                        

('QUIZ AVERAGE', 85.0)
('PROGRAM AVERAGE', 71.25)
('EXAMs', 68.0, 81.0, 70.0)
('TOTAL AVERAGE', 74.3)
Van Rossum, Guido    74.3     C                        

('QUIZ AVERAGE', 94.0)
('PROGRAM AVERAGE', 82.0)
('EXAMs', 99.0, 93.0, 44.0)
('TOTAL AVERAGE', 79.9)
Backus, John         79.9     C                        

('QUIZ AVERAGE', 60.0)
('PROGRAM AVERAGE', 75.0)
('EXAMs', 70.0, 60.0, 55.5)
('TOTAL AVERAGE', 63.875)
Crawley, Bryan       63.9     D                        

如果您能提供如何计算的问题,我可以进行成绩计算(建议单独提问)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

$ _GET没有为我提供正确的内容

来自分类Dev

RStudio 安装没有为我提供“真正的”RStudio

来自分类Dev

grunt-ngdoc没有为我的ngdoc文档提供示例

来自分类Dev

我为什么得到“ ValueError:没有为任何变量提供渐变:['Variable:0']。” 错误?

来自分类Dev

我的代码说没有为一个或多个必需参数提供值

来自分类Dev

我的程序没有为 print("the") 打印任何内容。谁能解释为什么?

来自分类Dev

Tensorflow:没有为任何变量提供梯度

来自分类Dev

没有为以下模块提供实现:Str

来自分类Dev

ValueError:没有为任何变量提供渐变(Tensorflow)

来自分类Dev

Keras ValueError:没有为任何变量提供渐变

来自分类Dev

Angular-没有为FormBuilder提供程序

来自分类Dev

没有为任何变量提供渐变-Keras

来自分类Dev

没有为以下模块提供实现:Str

来自分类Dev

Pandas 没有为数据框提供 corr 矩阵

来自分类Dev

没有为属性 [CO] 提供转化价值

来自分类Dev

没有为数字golang设置位

来自分类Dev

Clojure:“ java.lang.IllegalArgumentException:没有为键提供任何值:”当我更改了require

来自分类Dev

即使我宣布“没有为课程注册”

来自分类Dev

为什么没有为我设置OnTouchListener?

来自分类Dev

没有为必需的参数提供值,带有值

来自分类Dev

没有为TypeScript编译器提供要编译的文件

来自分类Dev

没有为“ SignFile”任务提供必需参数“ CertificateThumbprint”的值

来自分类Dev

Boost.Test和CTest没有为参数color_output提供参数

来自分类Dev

MS Access:没有为一个或多个必需参数提供值

来自分类Dev

没有为TypeScript编译器提供要编译的文件,因此它将跳过编译

来自分类Dev

错误:没有为一个或多个必需参数提供值

来自分类Dev

没有为一个或多个必需参数提供值。搜索期间错误

来自分类Dev

没有为一个或多个必需参数提供值。在参数化搜索期间

来自分类Dev

number_with_precision没有为Rails中的ruby提供:fr语言环境的正确结果

Related 相关文章

  1. 1

    $ _GET没有为我提供正确的内容

  2. 2

    RStudio 安装没有为我提供“真正的”RStudio

  3. 3

    grunt-ngdoc没有为我的ngdoc文档提供示例

  4. 4

    我为什么得到“ ValueError:没有为任何变量提供渐变:['Variable:0']。” 错误?

  5. 5

    我的代码说没有为一个或多个必需参数提供值

  6. 6

    我的程序没有为 print("the") 打印任何内容。谁能解释为什么?

  7. 7

    Tensorflow:没有为任何变量提供梯度

  8. 8

    没有为以下模块提供实现:Str

  9. 9

    ValueError:没有为任何变量提供渐变(Tensorflow)

  10. 10

    Keras ValueError:没有为任何变量提供渐变

  11. 11

    Angular-没有为FormBuilder提供程序

  12. 12

    没有为任何变量提供渐变-Keras

  13. 13

    没有为以下模块提供实现:Str

  14. 14

    Pandas 没有为数据框提供 corr 矩阵

  15. 15

    没有为属性 [CO] 提供转化价值

  16. 16

    没有为数字golang设置位

  17. 17

    Clojure:“ java.lang.IllegalArgumentException:没有为键提供任何值:”当我更改了require

  18. 18

    即使我宣布“没有为课程注册”

  19. 19

    为什么没有为我设置OnTouchListener?

  20. 20

    没有为必需的参数提供值,带有值

  21. 21

    没有为TypeScript编译器提供要编译的文件

  22. 22

    没有为“ SignFile”任务提供必需参数“ CertificateThumbprint”的值

  23. 23

    Boost.Test和CTest没有为参数color_output提供参数

  24. 24

    MS Access:没有为一个或多个必需参数提供值

  25. 25

    没有为TypeScript编译器提供要编译的文件,因此它将跳过编译

  26. 26

    错误:没有为一个或多个必需参数提供值

  27. 27

    没有为一个或多个必需参数提供值。搜索期间错误

  28. 28

    没有为一个或多个必需参数提供值。在参数化搜索期间

  29. 29

    number_with_precision没有为Rails中的ruby提供:fr语言环境的正确结果

热门标签

归档