TypeError: main() 缺少一个必需的位置参数: 'nums8

0 投票
1 回答
2744 浏览
提问于 2025-04-18 00:41

我正在写代码,参考的是Tony Gaddis的《Starting Out with Python: Second Edition》这本书,课程是MCC的COMS-170。可是我总是遇到一个错误:

Traceback (most recent call last):
File "C:/Users/tcarroll/Desktop/123.py", line 36, in <module> 
     main()
TypeError: main() missing 1 required positional argument: 'nums8'

这是我的代码:

def main(nums8):
    inFile = open('nums8.txt', 'r')

num1 = int(inFile.readline())
num2 = int(inFile.readline())
num3 = int(inFile.readline())
num4 = int(inFile.readline())
num5 = int(inFile.readline())
num6 = int(inFile.readline())
num7 = int(inFile.readline())
num8 = int(inFile.readline())
num9 = int(inFile.readline())
num10 = int(inFile.readline())
num11 = int(inFile.readline())
num12 = int(inFile.readline())
num13 = int(inFile.readline())
num14 = int(inFile.readline())
num15 = int(inFile.readline())
num16 = int(inFile.readline())
num17 = int(inFile.readline())
num18 = int(inFile.readline())
num19 = int(inFile.readline())
num20 = int(inFile.readline())
num21 = int(inFile.readline())
num22 = int(inFile.readline())

inFile.close()

total = int(num1 + num2 + num3 + num4 + num5 + num6 + num7 + num8 + num9 + num10 + num11 + num12 + num13 + num14 + num15 + num16 + num17 + num18 + num19 + num20 + num21 + num22)

print('The numbers are: ', num1, num2, num3, num4, num5, num6, num7, num8, num9, num10, num11, num12, num13, num14, num15, num16, num17, num18, num19, num20, num21, num22)
print('Their total is: ', total)
main()

书中的问题是: 5. 数字的总和 假设有一个文件,里面存了一系列的整数,文件名叫numbers.txt(为了这个作业,我们实际上下载了一个文件并使用了它),这个文件在电脑的硬盘上。写一个程序,读取文件中存储的所有数字,并计算它们的总和。

1 个回答

1

只需定义你的主函数,不带任何参数:

def main():
    inFile = open('nums8.txt', 'r')

另外,你也可以把读取文件的代码放到这个函数里:

def main(nums8):
    inFile = open('nums8.txt', 'r')
    num1 = int(inFile.readline())
    num2 = int(inFile.readline())
    num3 = int(inFile.readline())
    num4 = int(inFile.readline())
    num5 = int(inFile.readline())
    num6 = int(inFile.readline())
    num7 = int(inFile.readline())
    num8 = int(inFile.readline())
    num9 = int(inFile.readline())
    num10 = int(inFile.readline())
    num11 = int(inFile.readline())
    num12 = int(inFile.readline())
    num13 = int(inFile.readline())
    num14 = int(inFile.readline())
    num15 = int(inFile.readline())
    num16 = int(inFile.readline())
    num17 = int(inFile.readline())
    num18 = int(inFile.readline())
    num19 = int(inFile.readline())
    num20 = int(inFile.readline())
    num21 = int(inFile.readline())
    num22 = int(inFile.readline())

    inFile.close()

    total = int(num1 + num2 + num3 + num4 + num5 + num6 + num7 + num8 + num9 + num10 + num11 + num12 + num13 + num14 + num15 + num16 + num17 + num18 + num19 + num20 + num21 + num22)

    print('The numbers are: ', num1, num2, num3, num4, num5, num6, num7, num8, num9, num10, num11, num12, num13, num14, num15, num16, num17, num18, num19, num20, num21, num22)
    print('Their total is: ', total)

main()

你可能还想把这个写得更简短一些:

def main():

    with open('nums8.txt') as inFile:
        nums = [int(line) for line in inFile]
    total = sum(nums)
    print('The numbers are: ', nums)
    print('Their total is: ', total)

这个例子涉及到循环、列表、列表推导式、逐行读取文件、上下文管理器(就是“with open(...)"那种)以及计算列表中数值的总和。这里的好处是,它可以把文件中的所有行相加,而不管文件里有多少行(零行、十亿行或更多)都没关系。

祝你搜索愉快!

撰写回答