为考试练习python任务?

为考试练习python任务?,python,python-2.7,Python,Python 2.7,我正在为即将到来的考试练习上一道python考试题,但我的代码很糟糕 任务是创建一个文本文件,其中包含以克为单位的权重列表(完成) 提示用户输入文件名、读取权重、将其添加到列表中并计算总权重 问题就在这里: try: file = input('Enter file name:') f = open('weights.txt', 'r') sum=0 for line in f: sum = sum+(int(line.strip()))/1000

我正在为即将到来的考试练习上一道python考试题,但我的代码很糟糕

  • 任务是创建一个文本文件,其中包含以克为单位的权重列表(完成)

  • 提示用户输入文件名、读取权重、将其添加到列表中并计算总权重

  • 问题就在这里:

    try:
    
       file = input('Enter file name:')
    
       f = open('weights.txt', 'r')
    
       sum=0
    
       for line in f:
    
          sum = sum+(int(line.strip()))/1000
    
          print('The textbook weight in kg:', sum)
    
    except:
    
       print('File cannot be opened')
    
    该方案显示的产出是:

    “教科书重量(千克):0.5

    教科书重量(千克):0.65

    教科书重量(千克):1.35

    教材重量(千克):1.650000000000001

    教科书重量(千克):1.900000000000001“

    但我需要的输出是:

    仅1.9,不包括前面的行


    由于我还是一个初学者,我对正确的代码知之甚少。因此,任何帮助都将不胜感激

    您的问题在于缩进。您应该在整个for循环执行后打印结果,即

    try:
        file = input('Enter file name:')
        f = open('weights.txt', 'r')
        sum=0   
        for line in f:
            sum = sum+(int(line.strip()))/1000
        print('The textbook weight in kg:', sum)
    except:
        print('File cannot be opened')
    
    此外,对于浮点不准确的问题,您可以按如下方式格式化打印:

    print('The textbook weight in kg:{:.2f}'.format(sum))
    # The textbook weight in kg:1.90
    

    您的问题在于缩进。您应该在整个for循环执行后打印结果,即

    try:
        file = input('Enter file name:')
        f = open('weights.txt', 'r')
        sum=0   
        for line in f:
            sum = sum+(int(line.strip()))/1000
        print('The textbook weight in kg:', sum)
    except:
        print('File cannot be opened')
    
    此外,对于浮点不准确的问题,您可以按如下方式格式化打印:

    print('The textbook weight in kg:{:.2f}'.format(sum))
    # The textbook weight in kg:1.90
    

    你能详细说明问题的具体内容吗?还是预期输出?预期输出为1.9kg这只是浮点不准确,您只需要将数字四舍五入到更合适的位置(例如小数点后两位)。您可以通过
    round(output,2)
    进行说明,这里解释了浮点不精确性这是一个非常不适合初学者的答案。您能详细说明问题的具体内容吗?还是预期输出?预期输出为1.9kg这只是浮点不准确,您只需要将数字四舍五入到更合适的位置(例如小数点后两位)。您可以通过
    round(output,2)
    进行说明,这里解释了浮点不精确性。这是一个非常不适合初学者的答案。您可以解释一下格式,以便我能够记住和理解何时应用吗?@topu
    {}
    标记您想要用
    格式
    的参数替换的位置,
    表示要格式化参数,
    .2f
    表示精度为2位的浮点。有关mor的用法,请参考一些教程网站,如P.S.下次不要使用这样的问题标题,请参见您能否解释格式以便我能够记住和理解何时应用?@topu
    {}
    标记您要替换为
    格式
    参数的位置,
    表示要格式化参数,
    .2f
    表示精度为2位的浮点。关于mor的用法,请参考一些教程网站,如P.S.下次不要使用这样的问题标题,请参阅