Python 使用循环中的if/else语句返回while循环的开头

Python 使用循环中的if/else语句返回while循环的开头,python,python-3.x,Python,Python 3.x,我还在学校,这是一道实验题,形式符合老师的要求。 我想用随机整数填充数组,但不能重复。数组需要有一定的长度,这意味着如果生成的整数已经在列表中,它需要返回random.randint(x,y)语句并再次执行。 (这只是一段代码。ax是数组,nx=21,x=10,y=40) 随机导入 def fill(ax,nx,x,y):#用x--y范围内的n个随机整数填充列表a,但不允许重复此代码需要修复 j=0 while(j

我还在学校,这是一道实验题,形式符合老师的要求。 我想用随机整数填充数组,但不能重复。数组需要有一定的长度,这意味着如果生成的整数已经在列表中,它需要返回random.randint(x,y)语句并再次执行。 (这只是一段代码。ax是数组,nx=21,x=10,y=40)

随机导入
def fill(ax,nx,x,y):#用x--y范围内的n个随机整数填充列表a,但不允许重复此代码需要修复
j=0
while(j

这就是我被困的地方。如果生成的整数已经在列表中,则需要有一个else语句返回while循环的开头。我想不出来。我试着继续,但那没用。评论来自老师。我觉得他是在建议使用goto语句,但这是非常不赞成的,甚至在python中也是如此。这是我发布的第一个问题,所以请温和一点

函数是否需要以这种方式构造,或者您是否可以更改它?例如,您可以在
时更改
的条件吗?使用您编写的代码,您不需要
其他
。如果未满足不在ax中的条件
x
,则执行将在
正文开始时继续
j
不会递增,
x
不会追加到
ax
。while在模板代码中,我认为这是因为数组的大小是nx,用户可以更改它。我们现在正在为nx使用21,但是如果我们决定更改数组的大小,我们希望代码能够正常工作。我没有使用for语句进行过很多测试,但如果它有效,我会尝试。当我没有else语句时,代码将不产生任何结果,并且在我停止它之前不会退出。您正在使用
x
作为
randint
的最小值和
randint
的返回值。第一次运行此循环时,最小值将替换为返回值
randint
。一旦传递到
randint
的最小值和最大值之间的距离小于
nx
,循环将永远不会终止。
import random
def fill(ax,nx, x,y): # fill the list a with n random integers in the range x --- y inclusive BUT NO duplicates permitted THIS code NEEDS to be fixed
    j = 0
    while (j < nx):  # populate the array using the while loop
        x = random.randint(x, y)  # Return a random integer .
        if x not in ax:
            ax.append(x)
            j = j + 1
        else:
            ??????

    return ax