Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.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 理解字符串以创建文本文件_Python - Fatal编程技术网

Python 理解字符串以创建文本文件

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

下面,我有一个代码,将使用内循环和外循环来创建文本文件。我想让重量在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 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来代替可变权重