鱼C论坛

 找回密码
 立即注册
查看: 3053|回复: 16

[已解决]几行代码,运行时出错误

[复制链接]
发表于 2016-12-14 11:36:20 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
0$B@$ZD4HI9B8OQ}OOW)LE4.png $}HR39DMBRSNBVD%%5$AY8H.png
最佳答案
2016-12-14 15:52:30
...错误很明显了,map 对象不能被下标
map() doesn't return a list, it returns a map object.
You need to call list(map) if you want it to be a list again.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-12-14 11:50:48 | 显示全部楼层
其他的没大看
就看到了file.readlines.split(",")
如果需要取后面部分,加上下标[1]
前面加[0]
这样是得到的一个元祖类型。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-14 11:53:12 | 显示全部楼层
zua 发表于 2016-12-14 11:50
其他的没大看
就看到了file.readlines.split(",")
如果需要取后面部分,加上下标[1]

貌似是最后一行的问题,因为在输入最后一行之前都没有出错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-14 11:59:22 | 显示全部楼层
你把题意说一下 我看迷糊了 变量定义的略抽象。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-14 12:06:42 | 显示全部楼层
zua 发表于 2016-12-14 11:59
你把题意说一下 我看迷糊了 变量定义的略抽象。

DICx是导入的20个单元的x方向的应变,DICy是Y方向的,DICxy同理是剪切应变。然后DIC是想将他们3个平方开根号
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-14 14:08:07 | 显示全部楼层
map返回的是 迭代器

用csv模块吧,它能自动帮你转换成对应的数据~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-14 15:52:30 | 显示全部楼层    本楼为最佳答案   
...错误很明显了,map 对象不能被下标
map() doesn't return a list, it returns a map object.
You need to call list(map) if you want it to be a list again.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-14 15:53:13 | 显示全部楼层
我是“百度程序员”啦啦啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-14 17:01:12 | 显示全部楼层
zlj19931010 发表于 2016-12-14 15:52
...错误很明显了,map 对象不能被下标
map() doesn't return a list, it returns a map object.
You need ...

谢谢啦
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-14 17:02:06 | 显示全部楼层
已解决
  1. import math
  2. filePath='E:/Temp/'
  3. Emod = [9000 for i in range(20)]
  4. EdgeEltList = map(int, open(r'E:\Temp\fanyan-20ceng-force-model-EdgeEltList.txt').readline().split(','))
  5. b = zip(EdgeEltList,range(20))
  6. DICx = map(float, open(r'E:\Temp\fanyan-20ceng-force-model-DIC-le11.txt').readline().split(',')) #####################
  7. DICy = map(float, open(r'E:\Temp\fanyan-20ceng-force-model-DIC-le22.txt').readline().split(',')) #####################
  8. DICxy= map(float, open(r'E:\Temp\fanyan-20ceng-force-model-DIC-le12.txt').readline().split(',')) #####################
  9. d=list(DICx)
  10. e=list(DICy)
  11. f=list(DICxy)
  12. DIC = [math.sqrt(d[i]**2+e[i]**2+f[i]**2) for i in range(20)]
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-14 17:56:56 | 显示全部楼层
本帖最后由 淋雨后的晴朗 于 2016-12-14 17:59 编辑
zlj19931010 发表于 2016-12-14 15:53
我是“百度程序员”啦啦啦

我能再问你个问题吗?又多写了几行,写到下面的时候又出错误了
from abaqus import *
import math
filePath='E:/Temp/'
Emod = [9000 for i in range(20)]
EdgeEltList = map(int, open(r'E:\Temp\fanyan-20ceng-force-model-EdgeEltList.txt').readline().split(','))
b = zip(EdgeEltList,range(20))
DICx = map(float, open(r'E:\Temp\fanyan-20ceng-force-model-DIC-le11.txt').readline().split(',')) #####################
DICy = map(float, open(r'E:\Temp\fanyan-20ceng-force-model-DIC-le22.txt').readline().split(',')) #####################
DICxy= map(float, open(r'E:\Temp\fanyan-20ceng-force-model-DIC-le12.txt').readline().split(',')) #####################
d=list(DICx)
e=list(DICy)
f=list(DICxy)
DIC = [math.sqrt(d**2+e**2+f**2) for i in range(20)]
inputTxt = open(filePath + '20ceng-force-model.inp').readlines()

fileNameNew='fanyan-20ceng-0'
for i in range(20):
    inputTxt[525 + i*3] = str(Emod)+', 0.3\n'    ##modify some lines in inp file

open(filePath + fileNameNew + '.inp','w').writelines(inputTxt)
def mdb():
    session.Viewport(name='Viewport: 1', origin=(0.0, 0.0), width=100, height=100)
    sv1 = session.viewports['Viewport: 1']
    sv1.makeCurrent()
    sv1.maximize()
    executeOnCaeStartup()

for iLoad in range(10):
    fileNameNew='fanyan-20ceng-' + str(iLoad)
        mdb.ModelFromInputFile(name='Model-1',
        inputFileName=filePath + fileNameNew + '.inp')
   
     mdb.Job(name=fileNameNew, model='Model-1', description='', type=ANALYSIS,
              atTime=None, waitMinutes=0, waitHours=0, queue=None, memory=60,
              memoryUnits=PERCENTAGE, getMemoryFromAnalysis=True,
              explicitPrecision=SINGLE, nodalOutputPrecision=SINGLE, echoPrint=OFF,
              modelPrint=OFF, contactPrint=OFF, historyPrint=OFF, userSubroutine='',
              scratch='', multiprocessingMode=DEFAULT, numCpus=1)
      
    mdb.jobs[fileNameNew].waitForCompletion()

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-14 18:00:23 | 显示全部楼层
zlj19931010 发表于 2016-12-14 15:53
我是“百度程序员”啦啦啦

错误是
Traceback (most recent call last):
  File "E:\fanyan-20ceng-force-loop.py", line 30, in <module>
    mdb.ModelFromInputFile(name='Model-1',
AttributeError: 'function' object has no attribute 'ModelFromInputFile'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-14 22:15:05 | 显示全部楼层
淋雨后的晴朗 发表于 2016-12-14 18:00
错误是
Traceback (most recent call last):
  File "E:\fanyan-20ceng-force-loop.py", line 30, in
...

你定义的这个方法 def mdb() 没有ModelFromInputFile这个属性,
mdb.ModelFromInputFile(name='Model-1', inputFileName=filePath + fileNameNew + '.inp')
错在这个调用,python我才学到16讲,不知道 function对象能否又有属性,但是这里你是明显没有给它属性的,你这个代码看起来好专业的样子。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-16 08:36:12 | 显示全部楼层
zlj19931010 发表于 2016-12-14 22:15
你定义的这个方法 def mdb() 没有ModelFromInputFile这个属性,
mdb.ModelFromInputFile(name='Model-1' ...

是和专业有关的,刚开始学python,老师就给了专业代码,头都大了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-17 23:28:29 | 显示全部楼层
看不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-18 13:58:20 | 显示全部楼层
用csv模块吧,它能自动帮你转换成对应的数据
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-12-18 21:58:45 | 显示全部楼层
厉害
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-2 10:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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