由于某种原因,我遇到了一个问题,我的函数调用似乎覆盖了从文件读入的数据而没有我要求它。我试图得到原始列表的总和,但我不断得到平方列表的总和。
CODE:
def toNumbers(strList):
for i in range(len(strList)):
strList[i] = strList [int(i)]
return strList
def squareEach(nums):
for i in range(len(nums)):
nums[i] = eval(nums[i])
nums[i] = nums[i]**2
return nums
def sumList(nums):
b = sum(nums)
return b
def main():
file=open("numbers.txt","r").readline().split(" ")
print(str(squareEach(file)))
print(str(sumList(file)))
答案 0 :(得分:3)
您的squareEach函数会修改传递给它的原始列表。
要查看要进行的操作,请考虑在函数调用之间添加打印件。
def main():
file=open("numbers.txt","r").readline().split(" ")
print(str(squareEach(file)))
print(str(file))
print(str(sumList(file))
编辑: 最简单的解决方法是使用不同的列表在squareEach函数
中存储方形数字def squareEach(nums):
squares = []
for i in range(len(nums)):
num = eval(nums[i])
squares[i] = num**2
return squares
其他答案中提供了更有效的方法,但在您的情况下,这似乎是最简单的解决方法。
答案 1 :(得分:0)
我不确定我是否在帮忙。但无论你想做什么,都可以按照以下方式完成
file=open("numbers.txt","r").readline().split(" ")
print ([int (m)**2 for m in file])
print (sum([int(m) for m in file]))
如果你想要功能
def squareEach(file):
print ([int (m)**2 for m in file])
def sumList(file):
print (sum([int(m) for m in file]))
file=open("numbers.txt","r").readline().split(" ")
squareEach(file)
sumList(file)
答案 2 :(得分:0)
nums
方法修改了列表squareEach
。考虑将结果存储在以下排序的不同列表变量中:
def squareEach(nums):
sq = list()
for i in range(len(nums)):
sq.append(str(int(nums[i])**2))
# nums[i] = str(int(nums[i])**2)
return sq