循环只打印最后一个值
Posted
技术标签:
【中文标题】循环只打印最后一个值【英文标题】:Loop only prints last value 【发布时间】:2022-01-23 17:36:02 【问题描述】:我有一些在 Abaqus 中使用的工作 python 代码,但我没有设法从中创建一个循环。有人可以帮我解决这个相当简单的问题吗?我想为不同的 SetsScrews 打印 x、y、z 坐标(称为 partxcord 等)。它只打印最后一个 SetsScrews。我错过了什么?提前谢谢你。
SetsScrews = ["Screw['T6_R']", "Screw['T7_R']", "Screw['T8_R']"]
for i in range(len(SetsScrews)):
# Select nodeset
PartLevel = mdb.models[modelname].rootAssembly.sets[SetsScrews[i]]
print('ParTLEVEL=', PartLevel)
# Calculate the amount of nodes in nodeset
numNodes = len(PartLevel.nodes)
# Create lists to write data to
partlabel=[]
partxcord=[]
partycord=[]
partzcord=[]
for curNode in PartLevel.nodes:
partlabel.append(curNode.label)
partxcord.append(curNode.coordinates[0])
partycord.append(curNode.coordinates[1])
partzcord.append(curNode.coordinates[2])
print('numNodes=', numNodes)
【问题讨论】:
第 5 行的 mdb 是什么?请确保您也有正确的缩进 【参考方案1】:partlabel=[]
partxcord=[]
partycord=[]
partzcord=[]
这些应该在循环之外初始化,也许用螺丝名制作一个字典,然后在那里添加这些列表
或者你的缩进也可能是个问题
【讨论】:
【参考方案2】:如果你只想打印坐标,那么你只需要在内循环结束后打印。此外,您可以存储所有零件的坐标。请参考以下代码:
SetsScrews = ["Screw['T6_R']", "Screw['T7_R']", "Screw['T8_R']"]
# create the list to save all coordinates
aLabels,axcoords,aycoords,azcoords = [],[],[],[]
for i in range(len(SetsScrews)):
# Select nodeset
PartLevel = mdb.models[modelname].rootAssembly.sets[SetsScrews[i]]
print('ParTLEVEL=', PartLevel)
# Calculate the amount of nodes in nodeset
numNodes = len(PartLevel.nodes)
# Create lists to write data to
partlabel,partxcord,partycord,partzcord=[],[],[],[]
print('Screw= ', SetsScrews[i])
for curNode in PartLevel.nodes:
partlabel.append(curNode.label)
partxcord.append(curNode.coordinates[0])
partycord.append(curNode.coordinates[1])
partzcord.append(curNode.coordinates[2])
# you can print it here...
print(curNode.label,curNode.coordinates[0],curNode.coordinates[1],curNode.coordinates[2])
# or you can print all data here and save it
print('partlabel= ', partlabel)
print('partxcord= ', partxcord)
print('partycord= ', partycord)
print('partzcord= ', partzcord)
aLabels.append(partlabel)
axcoords.append(partxcord)
aycoords.append(partycord)
azcoords.append(partzcord)
现在在for
循环的末尾,您拥有aLabels, axcoords, aycoords, azcoords
这些列表中的所有坐标。
【讨论】:
以上是关于循环只打印最后一个值的主要内容,如果未能解决你的问题,请参考以下文章