我需要创建一个包含六行的.csv文件,部分基于部分基于固定参数的用户输入。虽然固定参数不是问题,但有三个变量是。
到目前为止,这是我的代码。
import csv
import numpy as np
t_delay = input("xxx:")
t_target = input("xxx:")
rndTrial = np.random.choice(6, 6, replace=False) # Problem 1
X_Y = input("xxx:") # Problem 2
with open('test.csv', 'w', newline = '') as my_csv:
writer = csv.writer(my_csv, delimiter=',', quotechar='|')
writer.writerow(['Head1', 'Head2', 'Head...'])
for lazy in range(0, 6):
writer.writerow([60, 12 , t_delay, t_target, X, Y, rndTrial]
如果用户选择使用相同(X或Y)变量的3行,则所需的.csv文件应如下所示:
fixed, fixed, user_input, user_input, problem2, problem2, random_number
60,12,t_delay,t_target,X,X,1
60,12,t_delay,t_target,X,Y,2
60,12,t_delay,t_target,Y,X,3
60,12,t_delay,t_target,X,X,4
60,12,t_delay,t_target,Y,Y,5
60,12,t_delay,t_target,X,Y,6
提前致谢!
答案 0 :(得分:0)
根据您需要的内容构建列表,而不必担心订单。然后在它们上使用random.shuffle
。
from random import shuffle, random
list1 = [ 1, 2, 3, 4, 5, 6] # integers 1 to 6, without repeating
shuffle(list1)
nb_same = 3 # this can come from user input, must be in 0..6
list2 = []
for i in range(nb_same):
list2.append( 'X,X' if random() < 0.5 else 'Y,Y' )
while len(list2) < 6:
list2.append( 'X,Y' if random() < 0.5 else 'Y,X' )
shuffle(list2)
您可以打印两个变量list1
和list2
,以验证它们是否符合要求的参数。
当选择相似或不同的对时,我假设50%-50%。
为了便于理解,我没有编写更短的代码(故意)。
从那里,您只需打印您的csv。