smtmobly 发表于 2010-12-1 08:12

可以简单的看一下python的入门书籍,很简单的.
上面的程序用for循环也好for delay in range(0,6,0.1):
      for pre in range(0,1,0.01)
      #use delay pre
      #body

就可以了,python已空格缩进作为间隔

wqsong 发表于 2010-12-1 09:59

本帖最后由 wqsong 于 2010-12-1 10:02 编辑

回复 16 # smtmobly 的帖子

似乎,range函数不能用-1到1之间的浮点数作步长。。。
好像是step是整形,-1到1之间的浮点数都向0去整。。。步长就按0算了。。。

smtmobly 发表于 2010-12-1 15:11

回复 17 # wqsong 的帖子

哦!numpy里用xrange可以!不过你可以在整数的基础上乘以一个数。
for item in range(1,1000):
      delay=0.001*item

leeking30 发表于 2010-12-8 18:30

本帖最后由 leeking30 于 2010-12-8 18:31 编辑

回复 12 # wqsong 的帖子

开始跑不通,看提示说indent错误 好像PYTHON没有smart indent功能(可能我自己没找见)就手动调整了下
果然能跑动了, 非常感谢
自动储存出来的文件 第一个为thre0delay0.mat (OK)但是第二个是thre0delay1.0.mat 也就是说0.001*1000=1.0 不是 integer 虽然后期拿matlab也能搞定 总觉得有点不好看

再次感谢wqsong的帮助 还有smtmobly的回复

wqsong 发表于 2010-12-8 19:41

回复 19 # leeking30 的帖子

客气了。。。
至于不是integer这问题也可以解决的,把浮点数强制转化为整型。
filename='thre'+str(int(10*thre))+'delay'+str(int(1000*delay))+'.mat'
这样就可以了。
拿你说那例子说:
>>> print filename
thre0delay1.mat
>>> thre = 0.2
>>> delay = 0.002
>>> filename='thre'+str(int(10*thre))+'delay'+str(int(1000*delay))+'.mat'
>>> print filename
thre2delay2.mat

这样的话就不会出现thre2.0delay2.0.mat这样的形式了。。。
{:{24}:}

leeking30 发表于 2010-12-9 00:23

回复 12 # wqsong 的帖子

最后要补充一点 原代码有点小错误
thre=0
delay=0#这句要移动到下面
while thre<=6:
      delay=0               #delay 要写在这里      
                while delay<=0.1:
                #do something
                filename='thre'+str(10*thre)+'delay'+str(1000*delay)+'.mat'
                SaveRefCapture('C:\\dspace\\beam_torsion_bending\\01072010\\TestThresholdBeam \                                    
                ingDamping\\ExBend800\\ExTorsion300\\'+filename)
                delay+=0.001
      thre+=0.1

通过做试验,学习了一些python的基础知识 有收获



luoyue 发表于 2011-8-25 11:48

请问哪里有DSPace下载?如果你那有此软件,能否给我传一份?我在学校学习。我QQ是258902093.

leeking30 发表于 2011-9-1 23:30

回复 22 # luoyue 的帖子

dSPACE 是硬件 不是软件
我这里说的是 dspace的 控制软件 叫controldesk 是买dspace时候附带的
页: 1 [2]
查看完整版本: 关于Python的循环和文件自动命名(dspace中的运用)