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())