2011-08-24 61 views
1

我想要問用戶的範圍(數組),即變量的開始,停止和增量。我很難要求每個變量而不打破我的字符串。到目前爲止,我有這樣的代碼:在Python中獲取用戶輸入範圍

x=numpy.arange(input('Enter Start:'), input('Enter Stop:'),input ('Enter increment:')) 

但是我想它改爲:「請輸入啓動,停止,增加:」,並允許用戶輸入三個數字如2,10,2而不是一次輸入一個。

我會爲任何建議

回答

1

用戶必須確認通過敲擊回車鍵進入了感激。 input()將自動輸出爲換行符,因此您無法在3行中調用input()。你可以使用一個輸入,並要求所有3個值:

>>> userrange = input("Please input start, stop and increment: ") 
Please input start, stop and increment: 1,2,3 
>>> userrange 
(1, 2, 3) 
2
>>> start, stop, inc = raw_input('Enter start, stop, increment:').split(',') 
Enter start, stop, increment:0, 5, 2 
>>> print start, stop, inc 
0 5 2 

請記住,這些都是字符串,用int將它們轉換

0
>>> import numpy as np 
>>> makearange = lambda a: np.arange(int(a[0]),int(a[1]),int(a[2])) 
>>> x = makearange(raw_input('Enter start,stop,increment: ').split(',')) 
Enter start,stop,increment: 2,100,10 
>>> x 
array([ 2, 12, 22, 32, 42, 52, 62, 72, 82, 92]) 
+0

謝謝,你能解釋一下「makearange =拉姆達a:「我擔心我是新來的裸體。 – Candace

+0

當然,lambda函數是Python的一部分,而不是numpy(有關它們的更多信息,請參閱http://diveintopython.org/power_of_introspection/lambda_functions.html)。這意味着你可以用一個參數調用'makearange'(在這個例子中是用戶輸入,它賦給變量'a'),然後makarange將返回一個numpy.arange對象,其中包含start,stop和由用戶定義的增量(即,使用用戶輸入的列表中的3個值)。 – Jdog