0

我是 python 的初学者,但想从遇到的问题中学习。

在工作脚本的末尾,我有这段代码(见下文),它在.txt文件中输出一系列值:

name, bcoords[i]*AT.

该操作重复 4 次,counting > 3直到true

会发生什么(伪代码):

  • open('solution_AT.txt','a')
  • output.write(str(target[0]))
  • output.write('\n')
  • counting = 0
  • output.write(name0,bccords0*AT)
  • counting = 1
  • output.write(name1,bccords1*AT)
  • counting = 2
  • output.write(name2,bccords2*AT)
  • counting = 3
  • output.write(name3,bccords3*AT)
  • counting = 4
  • (counting > 3)true
  • output.write('\n')
  • counting = 0

而不是这个,我想暂时保留这些值:

bcoords0*AT, bcoords1*AT, bcoords2*AT,bcoords3*AT

因为我想对它们执行一些变量相互依赖的数学运算。

即,我想做的是这个(伪代码):

首先,对变量进行数学运算 bcoords

  • a = bcoords0*AT / (1-bcoords3*AT-bcoords2*AT-bcoords1*AT)
  • b = bcoords1*AT / (1-bcoords3*AT-bcoords2*AT)
  • c = bcoords2*AT / (1-bcoords3*AT)
  • d = bcoords3*AT

其次,以与下面的代码相同的顺序编写值,但使用: a , b, c,d而不是bcoords0*AT, bcoords1*AT, bcoords2*AT,bcoords3*AT

  • open('solution_AT.txt','a')
  • output.write(str(target[0]))
  • output.write('\n')
  • output.write(name0,a)
  • output.write(name1,b)
  • output.write(name2,c)
  • output.write(name3,d)
  • output.write('\n')

此输出的一行将具有以下结构:

target[0], name0, a, name1, b, name2, c, name3, d \n

而且...我不知道该怎么做,非常感谢任何帮助!最好的

代码:

output = open('solution_AT.txt','a')

if tet_i == None:
    output.write(str(target[0]))
    output.write('\n')

else:
    names = [colors[i][0] for i in tg.tets[tet_i]]
    sorted_indices = sorted(enumerate(names), key=lambda (i, name): priority_list[name])
    output.write(target[0])
    counting = 0

    for i, name in sorted(enumerate(names), key=lambda (i, name): priority_list[name]):
        output.write(',%s,%s' % (name, bcoords[i]*AT))
        counting = counting + 1

        if counting > 3:
            output.write('\n')
            counting = 0

输出.close()

4

1 回答 1

0

对不起这个问题,这很容易,我在那里找到了我的解决方案:

python在函数中存储变量并稍后使用

如果有任何帮助,这是我的新代码:

output = open('solution_AT.txt','a')

if tet_i == None:
    output.write(str(target[0]))
    output.write('\n')

else:
    names = [colors[i][0] for i in tg.tets[tet_i]]
    sorted_indices = sorted(enumerate(names), key=lambda (i, name): priority_list[name])
    output.write(target[0], 'none', '0', 'none', '0', 'none', '0', 'none', '0')
    counting = 0
    top = 0

    for i, name in sorted(enumerate(names), key=lambda (i, name): priority_list[name]):
        VAR1 = (bcoords[i]*AT)
        VAR2 = int(((bcoords[i]*AT)/(1-top))*65535)
        output.write(',%s,%s' % (name, VAR2))
        counting = counting + 1
        top = top + VAR1

        if counting > 3:
            output.write('\n')
            counting = 0
于 2013-08-08T18:28:28.677 回答