Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.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,我有这个代码的数据结果 import os with open('c.txt', 'r', encoding='utf-8') as f1, open('c.txt', 'r', encoding='utf-8') as f2, open('r.txt', 'w', encoding='utf-8') as outfile: for i, line in enumerate(f1): xi, yi = (float(n) for n in line.split())

我有这个代码的数据结果

import os
with open('c.txt', 'r', encoding='utf-8') as f1, open('c.txt', 'r', encoding='utf-8') as f2, open('r.txt', 'w', encoding='utf-8') as outfile:

    for i, line in enumerate(f1):
        xi, yi = (float(n) for n in line.split())
        f2.seek(0)
        for j, line in enumerate(f2):
            if i < j:
                xj, yj = (float(n) for n in line.split())
                print( ((xi-xj)**2-(yi-yj)**2), file=outfile)
                
        print(((xi)**2-(yi)**2), file=outfile) 
等等。我试图编写代码,但无法合并我想要的概念。我想我需要编写这段代码来获取值的位置并打印它

 for pos in range(len(f1)):
        cor = t[pos]
        f.write(str(pos) + ' ' + str(cor[0]) + ' ' + values + '\n')
但不能合并

类c.txt的示例

9.2    2.02
-2.3   1.5

让我们看看答案是否有助于您理解我在评论部分试图解释的内容

  • 步骤1:打开一个要读取的文件,打开一个要写入的文件
  • 步骤2:读取文件1中的所有值,并创建列表列表。 每个列表将有两个值x和y
  • 步骤3:使用枚举获取席值来迭代列表 我是被选中的那一行
  • 步骤4:使用迭代遍历列表(剩余的项使用[i+1:]) 列举
  • 步骤5:进行计算并将数据打印到文件中
请注意,每次枚举时,计数都从0开始。所以你需要给i加1,给j加1。所以当你打印i时,你用+1,当你打印j时,你用+2

with open("abc.txt", "r") as f_in, open("out.txt", "w") as f_out:
    abc_list = [[float(n) for n in line.split()] for line in f_in]
    print (f' i\t j\txi\tyi\txj\tyj\t(xi-xj)**2-(yi-yj)**2')    
    for i,(xi,yi) in enumerate(abc_list):
        for j,(xj,yj) in enumerate(abc_list[i+1:]):
            print (f'{i+1:2}\t{i+j+2:2}\t{xi:.2}\t{yi:.2}\t{xj:.2}\t{yj:.2}\t{(xi-xj)**2-(yi-yj)**2:.2f}')
            f_out.write(f'{i+1:2}\t{i+j+2:2}\t{xi:.2}\t{yi:.2}\t{xj:.2}\t{yj:.2}\t{(xi-xj)**2-(yi-yj)**2:.2f}\n')
您的输入文件数据:

9.2    2.02
-2.3   1.5
3.2    4.5
1.3    2.4
 1   2  9.2     2.0    -2.3  1.5    131.98
 1   3  9.2     2.0    3.2   4.5    29.85
 1   4  9.2     2.0    1.3   2.4    62.27
 2   3  -2.3    1.5    3.2   4.5    21.25
 2   4  -2.3    1.5    1.3   2.4    12.15
 3   4  3.2     4.5    1.3   2.4    -0.80
您的输出文件数据:

9.2    2.02
-2.3   1.5
3.2    4.5
1.3    2.4
 1   2  9.2     2.0    -2.3  1.5    131.98
 1   3  9.2     2.0    3.2   4.5    29.85
 1   4  9.2     2.0    1.3   2.4    62.27
 2   3  -2.3    1.5    3.2   4.5    21.25
 2   4  -2.3    1.5    1.3   2.4    12.15
 3   4  3.2     4.5    1.3   2.4    -0.80
打印的数据为:

 i   j  xi      yi    xj    yj    (xi-xj)**2-(yi-yj)**2
 1   2  9.2     2.0   -2.3  1.5   131.98
 1   3  9.2     2.0   3.2   4.5   29.85
 1   4  9.2     2.0   1.3   2.4   62.27
 2   3  -2.3    1.5   3.2   4.5   21.25
 2   4  -2.3    1.5   1.3   2.4   12.15
 3   4  3.2     4.5   1.3   2.4   -0.80
改用这个:

    for j,(xj,yj) in enumerate(abc_list[i+1:]):
        i_val = i+1
        j_val = i+j+2
        result = (xi-xj)**2-(yi-yj)**2
        
        print (f'{i_val:2}\t{j_val:2}\t{xi:.2}\t{yi:.2}\t{xj:.2}\t{yj:.2}\t{result:.2f}')
        f_out.write(f'{i_val:2}\t{j_val:2}\t{xi:.2}\t{yi:.2}\t{xj:.2}\t{yj:.2}\t{result:.2f}\n')

这回答了你的问题吗?不,我需要的逻辑不同。感谢您分享
c.txt
中的样本数据?当前输出是什么?@yudhiesh我无法将我需要的概念与我的代码合并谢谢,但如果我需要更改公式,因为我有另一个类似的问题,另一个文件是math.sqrt((xi xj)**2-(yi yj)**2)我厌倦了使用您的代码,但得到了语法错误:f字符串表达式部分不能包含我像f_out一样编写的反斜杠。write(f'{I+1:2}\t{I+j+2:2}\t{math.sqrt((xi xj)**2-(yi yj)**2:.2f}\n')与其在f'字符串中进行所有计算,不如尝试在上面一行进行计算,只使用fstringi中的变量来修复它。我错过了一个括号感谢您的帮助。终于完成了。我希望您能帮助我解决更多问题:-)如果你能让我收到你的电子邮件吗?把你的问题贴在堆栈溢出上,我会帮你的。另外,你可以在网上和我聊天