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:进行计算并将数据打印到文件中
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中的变量来修复它。我错过了一个括号感谢您的帮助。终于完成了。我希望您能帮助我解决更多问题:-)如果你能让我收到你的电子邮件吗?把你的问题贴在堆栈溢出上,我会帮你的。另外,你可以在网上和我聊天