2013-04-08 44 views
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)) 
+0

你想達到什麼目的?你是否想要採用隨機數字並打印列表中的每一個元素? – Adrian 2013-04-08 13:59:31

回答

0

這是因爲,爲了切片,您需要一個列表(或類似物體的序列)來取片。

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

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項長

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)) 
+0

沒關係,這仍然是錯誤的,它不會在末尾返回切片列表 – 2013-04-08 14:03:42

+0

如果'r2> r1'切片可能是空的。如果你想扭轉切片,那麼你應該在這種情況下做'ls [r1:r2:-1]'。 – 2013-04-08 14:03:48

相關問題