找回密码
 注册
Simdroid-非首页
查看: 51|回复: 3

[二次开发] python中变量附值问题

[复制链接]
发表于 2011-5-1 15:59:46 | 显示全部楼层 |阅读模式 来自 黑龙江哈尔滨
应用python循环做简单的材料参数附值,内容如下。
Yongs1=1e8;Yongs2=1e7;Yongs3=1e7;Yongs4=1e7;Yongs5=1e7;
Density1=2100;Density2=1900;Density3=1900;Density4=1900;Density5=1900;
for matNum in range(1,6):
    materials='Material-'+str(matNum)
    Density='Density'+str(matNum)
    Yongs='Yongs'+str(matNum)
    mdb.models['Model-1'].Material(name=materials)
    mdb.models['Model-1'].materials[materials].Density(table=((Density, ), ))
    mdb.models['Model-1'].materials[materials].Elastic(table=((Yongs, 0.3), ))
提示错误:
TypeError: 'str' object is not callable(重新打开abaqus就没有这项错误提示)
TypeError: table[0][0]; found string, expecting float(变量值没有传递,需怎样执行?)
发表于 2011-5-1 16:27:53 | 显示全部楼层 来自 上海
Simdroid开发平台
str()是python的内置函数吧

如果str()这句不行的话你可以用格式化字符串

materials='Material%d'%matNum,这样肯定没问题.其中%d代表传入一个整数,还有传浮

点数是%f,具体参考python的文档

TypeError: table[0][0]; found string, expecting float  不是说变量没有传递,是你传递了一个

错误的变量类型

table=((Density, ), ) 这句里面 Density是个字符串啊~~~~~
回复 不支持

使用道具 举报

发表于 2011-5-1 16:30:14 | 显示全部楼层 来自 北京
  1. Yongs=(1e8,1e7,1e7,1e7,1e7)
  2. Density=(2100,1900,1900,1900,1900)
  3. for matNum in range(5):
  4.         mat='Material-'+str(matNum)
  5.         mdb.models['Model-1'].Material(name=mat)
  6.         mdb.models['Model-1'].materials[mat].Density(table=((Density[matNum], ), ))
  7.         mdb.models['Model-1'].materials[mat].Elastic(table=((Yongs[matNum], 0.3), ))
复制代码
你那个里面
    Density='Density'+str(matNum)
    Yongs='Yongs'+str(matNum)
就是定义了两个字符串,并不是你要的那个字符串所对应的数值
回复 不支持

使用道具 举报

 楼主| 发表于 2011-5-1 16:45:54 | 显示全部楼层 来自 黑龙江哈尔滨
谢谢啊,非常感谢。
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-5-3 00:00 , Processed in 0.030376 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表