Python 在这个流循环中,我应该把float()或任何类型的字符串放在哪里?

Python 在这个流循环中,我应该把float()或任何类型的字符串放在哪里?,python,function,type-conversion,placement,Python,Function,Type Conversion,Placement,我要做的是打开一个文本文件,里面有数字,然后输入文件中数字的平均值、最小值和最大值。我的第一个问题是,我不知道在循环中把转换函数放在哪里。代码如下: for i in range(len(numsInFile)): numofNums += 1 numsInFile = numFile.read() 我应该把int()或float()函数放在哪里 编辑: 好啊应一位回答者关于此主题的要求,我决定将我的整个.py文件发布在这里: from os import strerror

我要做的是打开一个文本文件,里面有数字,然后输入文件中数字的平均值、最小值和最大值。我的第一个问题是,我不知道在循环中把转换函数放在哪里。代码如下:

for i in range(len(numsInFile)):
    numofNums += 1
    numsInFile = numFile.read()
我应该把
int()
float()
函数放在哪里

编辑: 好啊应一位回答者关于此主题的要求,我决定将我的整个.py文件发布在这里:

  from os import strerror
try:
    numFile = open("nums.txt", 'rt')
    numofNums = 0
    numSum = 0
    avgOfSum = 0
    minOfNums = 0
    maxOfNums = 0
    for i in range(len(numsInFile)):
        numofNums = len(numFile.readline())
        numsInFile[i] = float(numFile.readline().strip())
    numFile.close()
    resultsFile = open("results.txt", 'wt')
    resultsFile.write(numsInFile)
except IOError as IOE:
    print("Oh no! A IOError has occurred: ", sterr(e.errno))

您需要做的第一件事是确定文件的格式。例如,如果您决定数字总是用逗号分隔,则可以完全放弃循环。然后你可以做:

with open("myFile.txt") as f:
    numOfNums = len(f.read().split(","))

此答案假设文件每行一个数字

首先,您应该使用
readline()
,而不是
read()
read()
将尝试一次读取整个文件,而不是一次读取一行

然后你把转换放在这个结果的周围。你还需要去掉新行

您还将用一个数字覆盖
numsInFile
中的列表。您应该指定一个特定的索引

所以换句话:

numsInFile = numFile.read()
致:


仅仅使用
float
int
调用是不够的-循环的结构已经错误了。你的文件是什么格式的?每行一个号码?在一行上用空格分隔的数字?还有什么?另外,如果您已经知道
numsInFile
需要多长时间,那么
numofNums
计数器就不是很有用了。如果不这样做,则
范围(len(numsInFile))
上的循环就更坏了。我认为它是用空格分隔的,所以我应该确保它有
.split()
numofNums
将用于计算文件中有多少个数字
numFile
只调用
numFile
流的
.read()
readline()
可能更好)函数。这就是:
numFile=open(“nums.txt”,“rt”)
您不能在列表上调用
split
,而且在任何情况下,这只会得到一个计数,而不是数字的平均值、最小值或最大值。是的,使用了错误的读取函数。我不担心计算,我只是想解决眼前的问题。所以,我应该把它放在循环之前,或者放在循环中?在循环中,它只是取代了你已有的任务。如果你把它放在循环之前,它怎么可能工作?你还没有读任何东西。好的。现在它只是说,
ValueError:无法将字符串转换为float:
,这意味着
numsInFile
是一个字符串。
nums.txt
的格式是否存在问题?我对您提到的问题感到困惑的是,
numsInFile=numFile.read()
在My.py中有两个调用。一个在循环中,一个在循环前。这就是为什么我说,“那么,我应该把它放在循环之前。”为什么脚本中有两个调用?您只需要在循环中执行此操作。
numsInFile[i] = float(numFile.readline().strip())