Python 文件';s的数据不断被函数覆盖
由于某种原因,我遇到了一个问题,我的函数调用似乎覆盖了从文件中读取的数据,而我没有要求它这样做。我试图得到原始列表的和,但我一直得到平方列表的和 代码:Python 文件';s的数据不断被函数覆盖,python,file-io,Python,File Io,由于某种原因,我遇到了一个问题,我的函数调用似乎覆盖了从文件中读取的数据,而我没有要求它这样做。我试图得到原始列表的和,但我一直得到平方列表的和 代码: 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)):
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)))
squareEach函数修改传递给它的原始列表。 要了解发生了什么,请考虑在函数调用之间添加一个打印。
def main():
文件=打开(“numbers.txt”,“r”).readline().split(“”)
打印(str(每个(文件)))
打印(str(文件))
打印(str(sumList(文件))
编辑:
最简单的修复方法是使用不同的列表在每个函数中存储平方数
def squareEach(nums):
squares = []
for i in range(len(nums)):
num = eval(nums[i])
squares[i] = num**2
return squares
正如其他答案所建议的,还有更有效的方法,但在您的情况下,这似乎是最简单的修复方法。您的squareEach函数修改传递给它的原始列表。 要了解发生了什么,请考虑在函数调用之间添加一个打印。
def main():
文件=打开(“numbers.txt”,“r”).readline().split(“”)
打印(str(每个(文件)))
打印(str(文件))
打印(str(sumList(文件))
编辑:
最简单的修复方法是使用不同的列表在每个函数中存储平方数
def squareEach(nums):
squares = []
for i in range(len(nums)):
num = eval(nums[i])
squares[i] = num**2
return squares
正如其他答案所建议的,还有更有效的方法,但对你来说,这似乎是最简单的解决办法。我不确定我是否在帮助你。但是,无论你想做什么,都可以按如下方式来做
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)
我不确定我是否在帮忙,但无论你想做什么,都可以按如下方式来做
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)
>列表<代码> NoSs>代码>在
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
>列表<代码> NoSs>代码>在
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
numbers.txt
文件包含哪些内容?很抱歉,它包含一个数字列表。“54 63 63 42 83 42 22 27 88 52”由空格分隔numbers.txt
文件包含哪些内容?很抱歉,它包含一个数字列表。“54 63 42 83 42 22 27 88 52”由空格分隔。因此,请不要忘记关闭该文件(与语句一起使用)。这是为什么?我以为数据只会在函数调用中特别更改&而不是文件变量本身。有什么方法可以解决这个问题?我应该先复制它们而不是更改传入的列表吗?或者有更简单的方法吗?也不要忘记关闭文件(与语句一起使用)。这是为什么?我以为数据只会在函数调用中特别更改&而不是文件变量本身。解决方法是什么?我应该先复制它们而不是更改传入的列表吗?或者有更简单的方法吗?