2017-03-16 3 views
-2

Ich habe ein Array A = [1 - 100] und ich muss die Summe aller zwei Ziffern in diesem Array finden. Wie würde ich das angehen? Ich habe versucht:Python Sortierung von Arrays, um zweistellige Werte zu erhalten

def solution(A): 
    A =array[0-100]) 
    while A > 9 & A < 99 
     total = sum(A) 
     print "%s" % total 

)

Gibt es eine Funktion, die ein Array gegeben, bestehend aus N ganzen Zahlen gibt die Summe aller zweistelligen Zahlen, dh A = [1,1000,80, -91] die Funktion sollte -11 zurückgeben (da die beiden 80 und -91 sind). kein Bereich, mehrere Arrays

+1

Sie sollten Ihren Code in einem Interpreter testen, da einige Syntaxfehler vorliegen. – elena

+1

Es gibt viele Syntaxprobleme mit Ihrem Code. Sie sollten überprüfen, wie Sie Arrays deklarieren, auf Array-Elemente zugreifen und Arrays in Python durchlaufen. – Cecilia

+0

@Cecilia Ich brauche Hilfe, um eine Funktion zu erhalten, die bei einem Array bestehend aus N ganzen Zahlen die Summe aller zweistelligen Zahlen liefert, dh A = [1,1000,80, -91] die Funktion sollte -11 (wie die beiden sind) zurückgeben 80 und -91). nicht ein Bereich, mehrere Arrays –

Antwort

0

Verwenden Sie das Schlüsselwort and anstelle des bitweisen &.

Edit: eine vollständigere Antwort, wie das ist nicht das einzige, was falsch:

def solution(): 
    A = range(101) 
    total = sum([a for a in A if 9 < a <= 99]) 
    print total 

Dieses verwendete Liste Verständnis und angekettet Ungleichheiten, so ist ziemlich ‚pythonic‘.

+0

Obwohl @Pit mich schlug, eine identische Antwort in den Kommentaren zu schreiben. – spco

+1

Keine Sorge - Ich habe den Kommentar entfernt, da es mehr Probleme gibt. – Pit

+0

@spco Verzeihen Sie, was ich tun werde, Mann, bitte, ich habe ein Dilemma hier ich weiß nicht einmal, wie man damit beginnt.Es gibt einen Weg, der bei einem positiven iunteger N, die fortlaufenden Nummern von 1 bis N, druckt jeweils in einer separaten Zeile. Jedoch sollte jede Zahl, die durch 3,5 oder 7 teilbar ist, durch das Wort Fizz, Buzz oder Woof ersetzt werden..wenn es durch 3 und 5 teilbar ist, gibt es FizzBuzz aus und wenn es alles ausgibt FizzBuzzWoof - –

0

Es gibt Tonnen von Fehlern in Ihrem Code, bitte nächstes Mal vor dem Posten, verbringen Sie einige Zeit versuchen, es herauszufinden, und stellen Sie sicher, dass Ihr Code zumindest keine offensichtlichen Syntaxfehler enthält.

Nach Array, ich nehme an, Sie sprechen über eine list. Und ändern von 0 auf 100

def solution(A): 
    return sum([x for x in range(A) if len(str(abs(x))) == 2]) 
print(solution(101)) 

Als Randbemerkung, verwenden and statt & (101) für jede Zahl reichen, da das ist eine bitweise oder unterzeichnen.

+0

Wie lautet der Aufruf? 'list()' tun für Sie in diesem Beispiel? – cdlane

+0

Woher wird die '.digits()' Methode importiert? – cdlane

+0

Ich dachte immer, es hat eine gute Quelle – abccd

0

Sie können eine Liste Verständnis verwenden und überprüfen, ob die Länge der Zeichenfolge-Format gleich 2 ist, etwa so:

sum([x if len(str(x))==2 else 0 for x in xrange(1,101)]) 
+1

Warum vermeiden Sie nicht die 'else' und temporäre Liste, indem Sie' sum (x für x in xrange (1, 101) wenn len (str (x)) == 2) ' – cdlane

0

Hier sind ein paar Möglichkeiten, um das Problem zu gehen, ist die erste die meisten ähnlich dem Ansatz scheinen Sie zu versuchen:

def solution1(array): 
    total = 0 

    for a in array: 
     if 9 < a < 100: 
      total += a 
    return total 

print(solution1(range(101))) 

Und hier ist eine kompaktere Lösung, die ein Verständnis (eigentlich ein Generator Ausdruck) mit:

def solution2(array): 
    return sum(a for a in array if 9 < a < 100) 

print(solution2(range(101))) 

Beachten Sie, dass Sie in Ihrem Original Schleifen und Bedingungen verwirren.

Verwandte Themen