Python 理解字符串以创建文本文件
下面,我有一个代码,将使用内循环和外循环来创建文本文件。我想让重量在0.1到1.0之间以0.1的增量增加。我还希望长度从0、40、80、160、250和300增加。但在重量达到前一长度的1.0之前,长度不会增加到下一学期 下面的代码不起作用。txt文件应该看起来像weight_0.1_0_.txt,并且在其中应该是Python 理解字符串以创建文本文件,python,Python,下面,我有一个代码,将使用内循环和外循环来创建文本文件。我想让重量在0.1到1.0之间以0.1的增量增加。我还希望长度从0、40、80、160、250和300增加。但在重量达到前一长度的1.0之前,长度不会增加到下一学期 下面的代码不起作用。txt文件应该看起来像weight_0.1_0_.txt,并且在其中应该是 weight of box 0.1 length of box 0 weight of box 1.0 length of box 0 weight of b
weight of box 0.1
length of box 0
weight of box 1.0
length of box 0
weight of box 0.1
length of box 40
这应该一直持续到文件的权重为1.0\u 0\u0.txt和内部应为
weight of box 0.1
length of box 0
weight of box 1.0
length of box 0
weight of box 0.1
length of box 40
一旦达到该值,下一个值应为weight_0.1_40_.txt,内部应为
weight of box 0.1
length of box 0
weight of box 1.0
length of box 0
weight of box 0.1
length of box 40
应继续此操作,直到满足300的所有长度。如果有人能帮我写这段代码,我将不胜感激
lengths = [0,20,40,80,160,250,300]
for l in lengths:
Weight = 0.1
for i in range (10):
input = 'weight_' +str(Weight)+ '_length_' +str(lengths)+ '_'
file = open(input + '.txt','w')
file.write('weight of box ' +str(Weight)+ '\n')
file.write('length of box ' +str(lengths)+ '\n')
file.close()
Weight +=0.1
length = 1
With this code above, the resulting file would be for example
weight_0.1_[0,20,40,80,160,250,300]_.txt which is not correct and inside
the files would be
weight of box 0.1
length of box [0,20,40,80,160,250,300]
您在两个位置使用了str(长度)
而不是str(l)
:
- 创建文件名
- 文件内容的写入
str(长度)
的计算结果为“[0,20,40,80160250300]”
-长度数组的字符串表示str(l)
计算为正确的长度(迭代周期使用的实际数组元素的字符串表示形式)
如果我正确理解了您的意图,调整后的代码应该如下所示:
lengths = [0,20,40,80,160,250,300]
for l in lengths:
Weight = 0.1
for i in range (10):
input = 'weight_' +str(Weight)+ '_length_' +str(l)+ '_'
file = open(input + '.txt','w')
file.write('weight of box ' +str(Weight)+ '\n')
file.write('length of box ' +str(l)+ '\n')
file.close()
Weight +=0.1
length = 1
您可以使用str(长度)
在它应该位于str(l)
的位置length
是列表,元素是l
…感谢您的帮助。还有一个问题,我得到了一些关于值的舍入错误,其中一些值是0.9999999。这是可以解决的吗?浮点(in)精度是这里最高的常见问题之一:它工作得很好,但有些值有舍入误差,如0.300000004和0.9999999。这可以在上面的代码中修复吗?很高兴它起作用了!无法真正再现舍入问题,但如果需要精确的精度,像Decimal()这样的东西可能会有所帮助。然后,您需要编写类似于Weight=Decimal(“0.1”)
的代码,并使用Weigth+=Decimal(“0.1”)
进行添加。使用i/10来代替可变权重