2011-10-21 22 views
8

Ciao, sono nuovo in Python e voglio prendere input in un array. Il documento python non è ben descritto sugli array. Inoltre penso di avere qualche intoppo con il ciclo for in python.Come prendere input in un array + PYTHON?

sto dando il codice C frammento di cui voglio in python: Codice

C:

printf("Enter howmany elements you want: "); 
scanf("%d",&n); 
printf("Enter the numbers in the array: ") 
for(i=0;i<n;i++) 
scanf("%d",&arr[i]); 

risposta

9

raw_input è il vostro aiutante qui. Dalla documentazione -

Se l'argomento prompt è presente, viene scritto sull'output standard senza una nuova riga finale. La funzione legge quindi una riga dall'input, lo converte in una stringa (eliminando una riga finale finale) e restituisce . Quando viene letto EOF, viene sollevato EOFError.

Quindi il tuo codice sarà fondamentalmente simile a questo.

num_array = list() 
num = raw_input("Enter how many elements you want:") 
print 'Enter numbers in array: ' 
for i in range(int(num)): 
    n = raw_input("num :") 
    num_array.append(int(n)) 
print 'ARRAY: ',num_array 

P.S: ho digitato tutto questo a mano libera. La sintassi potrebbe essere sbagliata ma la metodologia è corretta. Anche una cosa da notare è che, raw_input non fa alcun tipo di controllo, quindi è necessario stare attenti ...

+0

vorresti spiegare la prima riga solo – user1000368

+1

@Srikar: scopri che ... –

+0

quale prima riga? Ho aggiunto più informazioni alla mia risposta. che cosa non riesci a capire esattamente? –

2
data = [] 
n = int(raw_input('Enter how many elements you want: ')) 
for i in range(0, n): 
    x = raw_input('Enter the numbers into the array: ') 
    data.append(x) 
print(data) 

Ora, questo non fa alcun controllo degli errori e memorizza i dati come una stringa.

+0

Grazie Taylor, sfortunatamente con questo basso bilanciamento non posso revocare la tua risposta :( – user1000368

1
arr = [] 
elem = int(raw_input("insert how many elements you want:")) 
for i in range(0, elem): 
    arr.append(int(raw_input("Enter next no :"))) 
print arr 
10

Se il numero di elementi nella matrice non è dato, in alternativa è possibile fare uso di comprensione lista come:

str_arr = raw_input().split(' ') //will take in a string of numbers separated by a space 
arr = [int(num) for num in str_arr] 
4

Si desidera che questo - digitare N e poi prendere il numero N di elementi. sto considerando il tuo caso di ingresso è proprio come questo

5 
2 3 6 6 5 

hanno questo in questo modo in python 3.x (in python 2.x raw_input() invece se l'ingresso())

n = int(input()) 
arr = input() # takes the whole line of n numbers 
l = list(map(int,arr.split(' '))) # split those numbers with space(becomes ['2','3','6','6','5']) and then map every element into int (becomes [2,3,6,6,5]) 
Problemi correlati