0

我试图取两个随机整数,然后将相应编号的东西从列表中切出,但是我不确定我应该做什么。它说 [r1:r2] 中的冒号不正确。

from random import* 

#2

z=['cats','dogs','soccer','weather','whale','tennis']

def slicer(ls):
    r1=randrange(0,5)
    r2=randrange(0,5)
    for x in ls:
        [r1:r2]
    return('The slice from '+str(r1)+' to '+str(r2)+' is: ' + ls)

print(slicer(z))
4

3 回答 3

1

你试图什么都不切。[r1:r2] 不是有效的 Python 语法。

我认为您正在尝试做的是:

sliced = ls[r1:r2] 

但即使这样也不太可能做你想做的事,因为切片中的第二个数字需要更高。

一种更正确的方法来处理您似乎正在尝试做的事情(但我不是读心术者)

r1 = randrange(0,len(ls)-1)
r2 = randrange(0,len(ls)-r1-1) #Number of items to slice, -1
slice = ls[r1:r1+r2]

这将返回列表的一个小节,至少 1 项长

于 2013-04-08T14:01:34.153 回答
0

那是因为为了切片,您需要一个列表(或类似对象的序列)来从中获取切片。

你可能打算做的只是return ls[r1:r2].

于 2013-04-08T13:58:46.417 回答
0

我想我明白了

from random import* 

z=['cats','dogs','soccer','weather','whale','tennis']

def slicer(ls):
    r1=randrange(0,5)
    r2=randrange(0,5)

    if (r1<r2):
        return('The slice from '+str(r1)+' to '+str(r2)+' is: ' + str(ls[r1:r2]))
    else:
        return('The slice from '+str(r2)+' to '+str(r1)+' is: ' + str(ls[r2:r1]))
print(slicer(z))
于 2013-04-08T14:02:04.720 回答