下面代码输出结果为什么会重复z坐标相同的原子个数为: 1 x坐标相同的原子个数为: 2 y坐标相同的原子个数为: 2 z坐标相同的原子个数为: 1 y坐标相同的原子个数为: 1 x坐标相同的原子个数为: 2 y坐标相同的原子个数为: 1 z坐标相同的原子个数为: 2。代码如下:atom_coords = [(1, 2, 3), (2, 3, 4), (1, 2, 3), (3, 4, 5), (2, 3, 4)] # 按照x、y、z三个方向进行排序 sorted_coords = sorted(atom_coords) # 统计相同坐标的原子个数 count_x = count_y = count_z = 1 # 初始化计数器为1,因为第一个原子是唯一的 for i in range(1, len(sorted_coords)): if sorted_coords[i][0] == sorted_coords[i-1][0]: count_x += 1 else: print("x坐标相同的原子个数为:", count_x) count_x = 1 # 重置计数器 if sorted_coords[i][1] == sorted_coords[i-1][1]: count_y += 1 else: print("y坐标相同的原子个数为:", count_y) count_y = 1 # 重置计数器 if sorted_coords[i][2] == sorted_coords[i-1][2]: count_z += 1 else: print("z坐标相同的原子个数为:", count_z) count_z = 1 # 重置计数器 # 打印最后一组相同坐标的原子个数 print("x坐标相同的原子个数为:", count_x) print("y坐标相同的原子个数为:", count_y) print("z坐标相同的原子个数为:", count_z)
时间: 2024-03-03 13:51:11 浏览: 69
输出结果重复是因为在循环结束后,只打印了最后一组相同坐标的原子个数,而没有打印前几组。你可以将最后三行的代码放在循环内部,这样每当一个方向的坐标改变时,就会打印出上一组相同坐标的原子个数,避免了重复输出的问题。修改后的代码如下:
```python
atom_coords = [(1, 2, 3), (2, 3, 4), (1, 2, 3), (3, 4, 5), (2, 3, 4)]
# 按照x、y、z三个方向进行排序
sorted_coords = sorted(atom_coords)
# 统计相同坐标的原子个数
count_x = count_y = count_z = 1 # 初始化计数器为1,因为第一个原子是唯一的
for i in range(1, len(sorted_coords)):
if sorted_coords[i][0] == sorted_coords[i-1][0]:
count_x += 1
else:
print("x坐标相同的原子个数为:", count_x)
count_x = 1 # 重置计数器
if sorted_coords[i][1] == sorted_coords[i-1][1]:
count_y += 1
else:
print("y坐标相同的原子个数为:", count_y)
count_y = 1 # 重置计数器
if sorted_coords[i][2] == sorted_coords[i-1][2]:
count_z += 1
else:
print("z坐标相同的原子个数为:", count_z)
count_z = 1 # 重置计数器
# 打印最后一组相同坐标的原子个数
if i == len(sorted_coords) - 1:
print("x坐标相同的原子个数为:", count_x)
print("y坐标相同的原子个数为:", count_y)
print("z坐标相同的原子个数为:", count_z)
```
这样修改后,输出结果就不会重复了。
阅读全文