Python 读取文件并打印出文件中数字总和的程序。该文件包含一个由逗号分隔的单浮点数
例如,如果您的文件包含:Python 读取文件并打印出文件中数字总和的程序。该文件包含一个由逗号分隔的单浮点数,python,file,text,Python,File,Text,例如,如果您的文件包含: -2.5, 2.0 8.0 100.0, 3.0, 5.1, 3.6 6.5 然后,您的程序运行示例如下所示: Please enter your file name: nums.txt The sum of your numbers is 125.7. 我已经运行了这个程序,但是它给了我一个错误,说 总和=总和+浮点数 ValueError:无法将字符串转换为浮点:'.' 任何帮助都将不胜感激 filename = input("Please enter you
-2.5, 2.0
8.0
100.0, 3.0, 5.1, 3.6
6.5
然后,您的程序运行示例如下所示:
Please enter your file name: nums.txt
The sum of your numbers is 125.7.
我已经运行了这个程序,但是它给了我一个错误,说
总和=总和+浮点数
ValueError:无法将字符串转换为浮点:'.'
任何帮助都将不胜感激
filename = input("Please enter your file name: ")
sum_number = 0
openthefile = open(filename, "r")
for i in openthefile:
Split = i.split(',')
Join = "".join(Split)
print(Join)
for i in Join:
sum_number = sum_number + float(i)
print("The sum of your numbers is",sum_number)
这将创建一个空列表,然后针对每一行,将通过在逗号上拆分该行而获得的元素添加到列表中。最后两个步骤将元素转换为浮点数并打印总和
或者,与其跟踪列表中的所有元素,不如只跟踪总和:
您可以按如下方式进行操作:
filename = input("Please enter your file name: ")
sum_number = 0
openthefile = open(filename, "r")
for line in openthefile:
for num in line.split(','):
sum_number = sum_number + float(num.strip())
print("The sum of your numbers is %.1f" %(sum_number))
我们只需循环遍历文件的每一行,将该行上的所有值除以、,然后将每一行上的每个值添加到总和中。最后,我们打印出值。您可以将map和sum与生成器表达式一起使用:
filename = input("Please enter your file name: ")
with open(filename) as f: # closes your file automatically
print("The sum of your numbers is {:.1f}".format(sum(sum(map(float, line.split(","))) for line in f)))
The sum of your numbers is 125.7
您正在尝试加入所有浮动,然后进行铸造,即:
float("100.03.05.13.6")
因此,对于fori-in-Join:您正在对连接字符串的每个字符进行迭代,这将给出您所看到的错误。无法转换为浮动
{.1f}格式设置为小数点后1位 您可以使用生成器打印所有值的总和
with open(filename,"r")as f:
print sum(float(e) for line in f for e in line.split(","))
>> 125.7
所以,即使你说的是单浮点[number],你也可以有多行,每行都可以有多个数字?你不能在后一个循环中打印i,看看它在每次迭代中是否有一个有效的数字吗?你不需要剥离来转换为一个数字float@PadraicCunningham你是对的,我养成了这样做的习惯,但应该改掉。我不确定为什么会有无法解释的否决票,但解决方案是正确的。耸肩:打印:你的数字之和是6.5。它应该出现:sum_number+=sum_number+floatnum.strip现在对你有效吗?+=将右侧的值与左侧的值相加,因此您不需要在右侧也有sum_数。当我运行它时,它会在我的计算机上打印出125.7。如果我用python复制并粘贴你的代码,我只会得到你的数字之和为6.5作为输出文件名=输入请输入你的文件名:openthefile=openfilename,r sum_number=0表示openthefile中的行:表示line.split中的数字,:sum_number=sum_number+floatnumbers.strip print数字的总和是,sum_number
float("100.03.05.13.6")
with open(filename,"r")as f:
print sum(float(e) for line in f for e in line.split(","))
>> 125.7