访问while循环中的变量

时间:2015-11-18 11:01:20

标签: python python-3.x

我在使用循环计算粒子之间的距离时陷入困境。到目前为止我有下面的代码。我似乎无法访问除最后输入的点之外的任何点。最后的打印只打印最后一个。

有没有办法访问输入的最后一个点以外的点的输入位置?

#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)        

3 个答案:

答案 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)

实际上,除了最后几点之外,它绝不会打印任何东西。

您正在遍历整个集合,一旦完成迭代,xyz中存储的唯一值就是您通过最后一个元素中包含的值

为什么?

因为,每次存储新值时,都会覆盖旧值。

如果您在循环中包含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循环时,您是否尝试保存每个yzqwhile?您是否需要将这些值附加到列表中(可能作为字典?)来执行此操作。

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'获取值。