Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 文件';s的数据不断被函数覆盖_Python_File Io - Fatal编程技术网

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>代码>在 SavaReals方法中修改。考虑将结果存储在以下类型的不同列表变量:

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>代码>在 SavaReals方法中修改。考虑将结果存储在以下类型的不同列表变量:

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”由空格分隔。因此,请不要忘记关闭该文件(与语句一起使用)。这是为什么?我以为数据只会在函数调用中特别更改&而不是文件变量本身。有什么方法可以解决这个问题?我应该先复制它们而不是更改传入的列表吗?或者有更简单的方法吗?也不要忘记关闭文件(与语句一起使用)。这是为什么?我以为数据只会在函数调用中特别更改&而不是文件变量本身。解决方法是什么?我应该先复制它们而不是更改传入的列表吗?或者有更简单的方法吗?