0

2 つのランダムな int を取り、対応する番号の付いたものをリストから切り出そうとしていますが、どうすればよいかわかりません。[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] 

しかし、スライスの 2 番目の数値を高くする必要があるため、THAT でさえ、あなたが望むことを行う可能性は低いです。

あなたがやろうとしているように見えることへのより正しいアプローチ(しかし、私はマインドリーダーではありません)

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

私はそれを手に入れたと思います

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 に答える
0

これは、スライスするには、スライスを取得するリスト (またはシーケンスのようなオブジェクト) が必要だからです。

あなたがおそらくするつもりだったのは、ただreturn ls[r1:r2].

于 2013-04-08T13:58:46.417 に答える