随机打乱一份列表的顺序

做问卷调查,有很多个板块(比如下面是两组问题,需要询问母语者是否认为不符合语法),但是每一个板块的内容都很相似,所以想把这些问题的顺序打散一下,减少答题者机械化答题时会出现错误的情况。

[code]
ameacha [STOP] kulia
tumeanza [STOP] kusafiri
inaelekea [STOP] kufaulu
ninakwenda [STOP] kuonana na rafiki
inaingia [STOP] kutafuta soko nchini
anakuja [STOP] kuniambia jambo
watakaa [STOP] kufikiri
anakaribia [STOP] kuamua
amepata [STOP] kuona makala
ameshindwa [STOP] kupanda mlima
[/code]

[code]
imeacha kulia
imeanza kuzidi
inaelekea kufaulu
inakwenda kufaulu
inaingia kutafuta soko nchini
inakuja kunieleza
itakaa kubadilika
inakaribia kuibuka
imepata kufanyika
imeshindwa kuendelea
[/code]

random.shuffle(列表)的方式,可以打乱一个列表。这样的话就可以用新的顺序选取之前的那些问题了。生成一个新的数字列表是因为想保留原来问题列表的顺序。

[code language=”python”]
myfile=open("ax.txt")
list=[]
line=myfile.readline()
list.append(line)
while line:
line=myfile.readline()
if len(line)>2:
list.append(line)
s=range(len(list))
import random
random.shuffle(s)
newfile=open("ax_new.txt","w")
for i in s:
newfile.write(list[i])
[/code]

结果是这样的:
[code]
ninakwenda tena kuonana na rafiki
inaingia tena kutafuta soko nchini
aliwahi waona
anakuja tena kuniambia jambo
anakaribia tena kuamua
A: inaingia kutafuta soko nchini? B: ndiyo, inaingia.
ilizidi [STOP] kunyesha
aliwahi tena kuwaona
A: anakuja kuniambia jambo? B: ndiyo, anakuja.
anaweza chungua jambo hili
amepata tena kuona makala
kusafiri tumeanza
A: kulikuwa kunyesha? B: ndiyo, kulikuwa.
ameshindwa panda mlima
kunyesha inataka
kuona makala amepata
amekwisha lipa
A: watakaa kufikiri? B: ndiyo, watakaa.
inaelekea faulu
anakuja niambia jambo
[/code]

 

ynshen