def Routine_Maker(number_of_exercises,array):
routine = []
i=0
j=0
for i in range(number_of_exercises):
for j in range(2):
x = random.randint(0,4)
movement = array[i][x]
routine.append(movement)
j=j+1
i=i+1
print (routine)
我的代码搜索存储在名为array
的二维数组中的练习列表,并将它们写入名为routine
的数组中
它搜索整个文件并添加所有的训练,但是我在最后得到以下消息。你知道吗
line 20, in Routine_Maker
movement = array[i][x]
IndexError: list index out of range
我已经尝试过做for i in range(number_of_exercises-1)
以使它与索引保持一致,但是这不起作用。有什么想法吗?你知道吗
这就是array
的样子:
[['Bench Press', 'Dumbell Press', 'Chest Press Machine', 'Cable Flies', 'Cable Crossover'], ['Incline Bench Press', 'Incline Dumbell Press', 'Incline Cable Flies', 'Incline Chest Press Machine', 'Incline Dumbell Flies'], ['Barbell Overhead Press', 'Dumbell Overhead Press', 'Dumbell Lateral Raise', 'Face Pulls', 'Dumbell Front Raise'], ['Dumbell Curls ', 'Hammer Curls', 'Preacher Curls', 'Machine Curls', 'Close Grip Chin Ups'], ['Cable Pushdowns', 'Overhead Dumbell Extensions', 'Overhead Barbell Extensions', 'Dips', 'Skullcrushers'], ['Lat Pulldowns', 'Pullups', 'Deadlifts', 'Bent Over Rows', 'Dumbell Rows'], ['Squats', 'Leg Press', 'Calf Raisers', 'Leg Extensions', 'Leg Curls']]
我试着从名为array
的数组中的每个数组中随机选择2个练习。例如,第一个数组包括胸部练习。下一个阵法包括上胸部练习,然后肩部练习等。我想从每个阵法/肌肉群中随机选择2个。你知道吗
for循环已经在每次迭代之后将1添加到变量“i”和“j”中。所以,不是从0到你的极限-1,而是从1到你的极限。只需删除
j = j + 1
和i = i + 1
行:)编辑时间:
编辑#2:
这应该是你所说的(至少是我所理解的):)
这将返回一个长度为
2*number_of_exercises
的数组。如果您希望它的长度正好是number_of_exercises
,pos索引应该每2次迭代移动一次,只需删除for j
语句:)编辑#3:
好吧,我想我明白了:
首先,你有你的数据:
然后,你说你每天要做多少运动:
这就是函数:
所以你这样称呼它:
你会得到这样的结果:
应该注意:
如果你说你每天要做的运动比你阵列中的运动要多,那么这将失败,因为随机抽样你没有得到重复,但样本大小需要小于范围。如果你想要更多,你会有重复的,你可以通过修改randomInt来完成。
当天数大于你的练习数组的大小时,它就会重新开始(这就是
pos
的用途)。你不需要排队
当您使用
for in
循环时。你可以移除它们。你知道吗您可能会得到一个索引器,因为
number_of_exercises
大于len(array)
。你知道吗当
number_of_exercises
大于len(array)*2
时,您希望它做什么?你知道吗您的问题可能是
number_of_exercises
大于len(array)
。要解决这个问题,您需要验证输入,然后根据验证的结果做一些事情。例如我在这里做的是将
number_of_exercises
设置为array
的长度,如果它大于len(array)
,这将使索引错误变得不可能。或者,您可以打印一些警告/错误消息,通知用户他们搞砸了,或者同时执行这两个操作。例如,可以通过以下方式进行验证:此代码禁止用户在提供有效输入之前继续前进。或者,您可以显示错误消息并退出程序:
相关问题 更多 >
编程相关推荐