在Python中重复脚本

时间:2014-11-10 21:24:16

标签: python repeat psychopy

我是python(psychoPy)的新手,我有这个脚本,我希望它重复三次:

 i = 0
    while i < 4:

    import random
    win.setMouseVisible(False)

    this_target = random.choice(first)

    if this_target == 1:
        k = 0
        location = []
        tloc = random.randint(0, 7)
        tloc = str(tloc)
        location.append(tloc)
        gap.setPos(left_gap[tloc, : ])
        squarer.setPos(ranpos[tloc, : ])
        squarer.draw()
        gap.draw()
        while k < 4:
            loc = random.randint(0, 7)
            loc = str(loc)
            if loc not in location: location.append(loc)
            else:
                continue
            squareg.setPos(ranpos[loc, : ])
            squareg.draw()
            dist_side = random.randint(1, 2)
            if dist_side == 1:
                gap.setPos(left_gap[loc, : ])
                gap.draw()
            elif dist_side==2:
                gap.setPos(right_gap[loc, : ])
                gap.draw()

            k+=1


    elif this_target == 2:
        k = 0
        location = []
        tloc = random.randint(0, 7)
        tloc = str(tloc)
        location.append(tloc)
        gap.setPos(right_gap[tloc, : ])
        squareg.setPos(ranpos[tloc, : ])
        squareg.draw()
        gap.draw()
        while k < 4:
            loc = random.randint(0, 7)
            loc = str(loc)
            if loc not in location: location.append(loc)
            else:
                continue
            squarer.setPos(ranpos[loc, : ])
            squarer.draw()
            dist_side = random.randint(1, 2)
            if dist_side == 1:
                gap.setPos(left_gap[loc, : ])
                gap.draw()
            elif dist_side==2:
                gap.setPos(right_gap[loc, : ])
                gap.draw()

            k+=1

    win.flip()
    resp = event.waitKeys(keyList = ['z', 'm', 'q'])
    fix.draw()
    win.flip()
    core.wait(2) #accio

    this_target = random.choice(first)

    if this_target == 1:
        k = 0
        location = []
        tloc = random.randint(0, 7)
        tloc = str(tloc)
        location.append(tloc)
        gap.setPos(left_gap[tloc, : ])
        squarer.setPos(ranpos[tloc, : ])
        squarer.draw()
        gap.draw()
        while k < 4:
            loc = random.randint(0, 7)
            loc = str(loc)
            if loc not in location: location.append(loc)
            else:
                continue
            squareg.setPos(ranpos[loc, : ])
            squareg.draw()
            dist_side = random.randint(1, 2)
            if dist_side == 1:
                gap.setPos(left_gap[loc, : ])
                gap.draw()
            elif dist_side==2:
                gap.setPos(right_gap[loc, : ])
                gap.draw()

            k+=1


    elif this_target == 2:
        k = 0
        location = []
        tloc = random.randint(0, 7)
        tloc = str(tloc)
        location.append(tloc)
        gap.setPos(right_gap[tloc, : ])
        squareg.setPos(ranpos[tloc, : ])
        squareg.draw()
        gap.draw()
        while k < 4:
            loc = random.randint(0, 7)
            loc = str(loc)
            if loc not in location: location.append(loc)
            else:
                continue
            squarer.setPos(ranpos[loc, : ])
            squarer.draw()
            dist_side = random.randint(1, 2)
            if dist_side == 1:
                gap.setPos(left_gap[loc, : ])
                gap.draw()
            elif dist_side==2:
                gap.setPos(right_gap[loc, : ])
                gap.draw()

            k+=1

    win.flip()
    resp = event.waitKeys(keyList = ['z', 'm', 'q'])
    i+=1
    next_trial.draw()
    win.flip()
    event.waitKeys(keyList = ['space'])

    if resp == ['q']:
        core.quit()
        win.close()

begin.draw()
win.flip()
event.waitKeys(keyList = ['space'])

是否有一个脚本我可以添加到开头以使其重复?任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

为什么你不能把它全部包含在for循环中? - 可能想要改变导入的位置......

import random

def cool_function_bro():
 i = 0
 while i < 4:


 win.setMouseVisible(False)

 this_target = random.choice(first)

 if this_target == 1:
     k = 0
     location = []
     tloc = random.randint(0, 7)
     tloc = str(tloc)
     location.append(tloc)
     gap.setPos(left_gap[tloc, : ])
     squarer.setPos(ranpos[tloc, : ])
     squarer.draw()
     gap.draw()
     while k < 4:
        loc = random.randint(0, 7)
        loc = str(loc)
        if loc not in location: location.append(loc)
        else:
            continue
        squareg.setPos(ranpos[loc, : ])
        squareg.draw()
        dist_side = random.randint(1, 2)
        if dist_side == 1:
            gap.setPos(left_gap[loc, : ])
            gap.draw()
        elif dist_side==2:
            gap.setPos(right_gap[loc, : ])
            gap.draw()

for i in range(3):
  cool_function_bro()

答案 1 :(得分:0)

你可以使用:

从shell运行1次运行脚本如果您使用的是Linux,则可以运行:

for i in {1..3}; do python script.py; done

2 - 将代码放入函数中并运行3次:

def test_func():
    # put your code here

for i in range(3):
    test_func()

3-将您的代码置于循环

之下
for i in range(3):
    # put your code here