Python 访问while循环中的变量

Python 访问while循环中的变量,python,python-3.x,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 pa

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

除了最后一个输入的点外,是否有其他方法访问输入的点位置

#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)        
#用户位置
xu=int(输入('X用户坐标:'))
yu=int(输入('用户的Y坐标:'))
zu=int(输入('用户的Z坐标:'))
#粒子数
count=int(输入())
i计数=0
当i计数<计数时:
x=int(输入('粒子x坐标:'))
y=int(输入('粒子y坐标:'))
z=int(输入('粒子z坐标:'))
q=int(输入('粒子电荷:'))
i计数+=1
打印(x、y、z)

您是否试图在迭代
while
循环时保存每个
x
y
z
q
?要做到这一点,您需要将这些值附加到列表中(可能作为字典?)

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\u list
是一个充满字典的列表
loop\u list[3]
指向第四个字典,然后
['y']
从该字典中的键
'y'
获取值。

循环时,您是否试图保存每个
x
y
z
q
?要做到这一点,您需要将这些值附加到列表中(可能作为字典?)

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\u list
是一个充满字典的列表
loop_list[3]
指向第四个字典,然后
['y']
从该字典中的键
'y'
获取值。

变量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)
#用户位置
xu=int(输入('X用户坐标:'))
yu=int(输入('用户的Y坐标:'))
zu=int(输入('用户的Z坐标:'))
#粒子数
count=int(输入())
X=[]
Y=[]
Z=[]
Q=[]
i计数=0
当i计数<计数时:
X.append(int(输入('particle X坐标:'))
Y.append(int(输入('particle Y坐标:'))
附加(int(输入('particle Z坐标:'))
Q.append(int(输入('粒子电荷:'))
i计数+=1
对于zip中的x,y,z,q(x,y,z,q):
打印(x、y、z、q)
本质上,我们制作一些列表来保存用户输入的所有粒子的值,然后使用for循环打印每个粒子,而不仅仅是最后保存的值


问题中的代码只是一遍又一遍地给变量赋值,每次都会丢弃前一个值。

您的变量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)
#用户位置
xu=int(输入('X用户坐标:'))
yu=int(输入('用户的Y坐标:'))
zu=int(输入('用户的Z坐标:'))
#粒子数
count=int(输入())
X=[]
Y=[]
Z=[]
Q=[]
i计数=0
当i计数<计数时:
X.append(int(输入('particle X坐标:'))
Y.append(int(输入('particle Y坐标:'))
附加(int(输入('particle Z坐标:'))
Q.append(int(输入('粒子电荷:'))
i计数+=1
对于zip中的x,y,z,q(x,y,z,q):
打印(x、y、z、q)
本质上,我们制作一些列表来保存用户输入的所有粒子的值,然后使用for循环打印每个粒子,而不仅仅是最后保存的值


问题中的代码只是一遍又一遍地给变量分配不同的值,每次都会丢弃前一个值。

实际上,它只会打印最后一个点

您正在迭代整个集合,一旦完成迭代,存储在
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)
当i计数
实际上,它只会打印最后一点

您正在迭代整个集合,一旦完成迭代,存储在
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)
当i计数
既然定义了xu、yu、zu,为什么不再使用这些变量?这些应该是你的第一个价值观。我想你想要一个