我在使用循环计算粒子之间的距离时陷入困境。到目前为止我有下面的代码。我似乎无法访问除最后输入的点之外的任何点。最后的打印只打印最后一个。
有没有办法访问输入的最后一个点以外的点的输入位置?
#user location
xu = int(input('X coordinate of user: '))
yu = int(input('Y coordinate of user: '))
zu = int(input('Z coordinate of user: '))
#number of particles
count = int(input())
icount = 0
while icount < count:
x= int(input('particle x coordinate: '))
y = int(input('particle y coordinate: '))
z = int(input('particle z coordinate: '))
q = int(input('particle charge: '))
icount += 1
print( x, y, z)
答案 0 :(得分:0)
您的变量x,y和z只是单个整数。如果要使用索引存储多个值来区分它们,则需要使用列表。
列表通常是您在循环中执行一系列类似操作时所需的内容。下面是一个关于如何执行此操作的示例,尽可能保持尽可能接近您的代码:
# user location
xu = int(input('X coordinate of user: '))
yu = int(input('Y coordinate of user: '))
zu = int(input('Z coordinate of user: '))
# number of particles
count = int(input())
X = []
Y = []
Z = []
Q = []
icount = 0
while icount < count:
X.append(int(input('particle x coordinate: ')))
Y.append(int(input('particle y coordinate: ')))
Z.append(int(input('particle z coordinate: ')))
Q.append(int(input('particle charge: ')))
icount += 1
for x, y, z, q in zip(X, Y, Z, Q):
print(x, y, z, q)
本质上,我们制作一些列表来保存用户输入的粒子全部的值,然后使用for循环打印每个粒子,而不仅仅是最后保留的值。
问题中的代码只是在变量上反复分配不同的值,每次丢弃前一个值。
答案 1 :(得分:0)
实际上,除了最后几点之外,它绝不会打印任何东西。
您正在遍历整个集合,一旦完成迭代,x
,y
,z
中存储的唯一值就是您通过最后一个元素中包含的值
为什么?
因为,每次存储新值时,都会覆盖旧值。
如果您在循环中包含print
来电,则会显示所有值:
while icount < count:
x = int(input('particle x coordinate: '))
y = int(input('particle y coordinate: '))
z = int(input('particle z coordinate: '))
q = int(input('particle charge: '))
icount += 1
print( x, y, z)
答案 2 :(得分:-1)
在迭代x
循环时,您是否尝试保存每个y
,z
,q
和while
?您是否需要将这些值附加到列表中(可能作为字典?)来执行此操作。
count = int(input())
loop_list = []
for _ in range(count): # this is equivalent!
x = int(input('particle x coordinate: '))
y = int(input('particle y coordinate: '))
z = int(input('particle z coordinate: '))
q = int(input('particle charge: '))
loop_list.append({'x': x, 'y': y, 'z': z, 'q': q})
# toss the dictionary of values into the list
然后您可以通过执行以下操作来访问它:
loop_list[3]['y']
# the "y" input on the 4th iteration of the loop
# (4th? remember zero-indexing!)
为什么这些奇怪的加倍括号?因为loop_list
是一个充满字典的列表。 loop_list[3]
指向第4个字典,然后['y']
从该字典中的键'y'
获取值。