2017-12-29 6 views
-1

Ich habe eine Eingabeanweisung wie diese - "Erste Zeile enthält eine Ganzzahl, die die Testfälle 'T' bezeichnet. Jeder Testfall enthält einen ganzzahligen Wert, der die Größe von Array 'N' und darstellt N ganzzahlige Elemente sind mit Leerzeichen zwischen ihnen in der nächsten Zeile eingefügt "Eingabe lesen genau nummer im Leerzeichen getrennter Eingabewert

ich schreibe Code wie diesen -

Code 1:. -

t = int(input()) 
for i in range(t): 
    size = int(input()) # input size of array 
    numbers = list(map(int, input().split()) 

Problem - Array-Größe wird nicht verwendet, bedeutet, nehmen wir an, dass ich eingegeben Array-Größe ist 3 und ich füge Wert 1 2 3 4 5. es akzeptiert. Hier ist die Zahlengröße 5, aber es sollten nur 3 Größen akzeptiert werden.

Code 2: -

t = int(input()) 
for i in range(t): 
    size = int(input()) # input size of array 
    arr = [] 
    for j in range(size): 
    num = int(input()) 
    arr.append(num) 

Problem - Hier bin ich in der Lage exaclty 3 Werte zu lesen (i: e Größe) aber beim Einfügen von Leerzeichen getrennt Wert wie 1 2 3, bekommt Valueerror.

-Code in Java: -

int n = sc.nextInt(); 
int[] arr = new int[n]; 
for(int i = 0; i < arr.length; i++){ 
    int e = sc.nextInt();    
    arr[i] = e; 
} 

Hier geben wir entweder Leerzeichen getrennt Wert oder in neue Linie, es funktioniert gut.

Wie geht man damit um?

+0

Wenn Sie zu viele/zu wenig Werte zu bekommen, was Sie tun sollten? Überprüfen Sie einfach 'if size! = Len (numbers):' und dann eine Exception auslösen/eine Fehlermeldung ausgeben, wenn Sie eine schlechte Eingabe erhielten –

+0

@PatrickHaugh Ich wollte beschränken, um nur die angegebene Größe einzufügen. –

+0

@PatrickHaugh bitte schlagen Sie in kompetitiver Programmierung vor, wie wir Input nehmen sollten. –

Antwort

0

Ich fand diese eine -

arr = [int(i) for i in input().split()][0:size] 
Verwandte Themen