wie kann ich in Python in einer Liste mit gerader Anzahl von Werten bspw. L=[3,5,6, 8,9,4] schauen ob die Summe der ersten Hälfte gleich der Summe der zweiten Hälfte ist?

Ich weiß, dass ich mit sum arbeiten muss, aber mir ist nicht richtig geläufig wie ich genau den Code schnipsel angeben muss, dass er erst die erste Hälfte addiert und dann die andere. PS: Totaler Anfänger bei Python.__blackjack__ hat geschrieben: ↑Freitag 9. Oktober 2020, 20:43 @KatjesWunder: In dem Du die beiden Hälften aufsummierst und vergleichst ob da das gleiche Ergebnis bei heraus kommt.
Das sind alles sehr grundlegende Listenoperationen die man dafür braucht. Vielleicht behandelt Dein Grundlagentutorial die `sum()`-Funktion nicht. Die solltest Du Dir dazu mal anschauen. Alles andere sollte in jedem Material das die Grundlagen abdeckt vorkommen. Tut es jedenfalls im Tutorial in der Python-Dokumentation.
Code: Alles auswählen
list= [2,5,7,8,9,5]
sum(list)
print (sum(list))
das wars. Ein range mit einbauen... Das war der Denkanstoß der hier gefehlt hatte, dankesnafu hat geschrieben: ↑Samstag 10. Oktober 2020, 13:30 Dann wäre es wohl eine gute Idee, wenn du dich mal mit den Stichwörtern beschäftigst, die dir in den zwei Beiträgen zuvor gegeben wurden. Ein bisschen eigene Recherche erwarten wir hier schon, auch von den Anfängern.
Im ersten Schritt kannst du ja gemäß deines Beispiels von 6 Elementen ausgehen. Demnach gehen deine Hälften offensichtlich vom ersten bis dritten sowie vom vierten bis sechsten Element. Wie kann man das in Python in einem Rutsch umsetzen? Es gibt da eine spezielle Syntax, die unter anderem bei Zeichenketten angewendet wird.
Anschließend überlegst du dir, wie du eine Liste mit beliebiger Länge unter Anwendung einer (ziemlich simplen) Rechenformel aufteilen kannst.
Und im dritten Schritt kommt halt die Sache mit der Summe ins Spiel...
Mit range() ist es auch lösbar, aber noch einfacher mit dem oben schon erwähnten Slicing.KatjesWunder hat geschrieben: ↑Samstag 10. Oktober 2020, 13:37 Ein range mit einbauen... Das war der Denkanstoß der hier gefehlt hatte, danke![]()
Code: Alles auswählen
L = [1, 2, 3, 4, 5 ,6]
half = len(L) // 2 # // == integer division
print("Größe der halben Liste", half)
print(f"Erste Hälfte: [:{half}]")
print(f"Zweite Hälfte: [{half}:]")
print(L[:half])
print(L[half:])
Code: Alles auswählen
zahl = 66
if zahl % 2 == 0:
print(zahl, "ist durch 2 teilbar")
else:
print(zahl, "kann nicht durch 2 geteilt werden")
Code: Alles auswählen
def half_size(sequence):
if sequence % 2 != 0:
raise ValueError("Sequenz hat eine ungerade Anzahl von Elementen")
# wenn die Bedingung wahr ist, wird der ValueError ausgegben
# und das return statement wird nicht ausgeführt
return len(sequence) // 2
Code: Alles auswählen
def sum_half(sequence):
if len(sequence) % 2 != 0:
raise ValueError("Sequence must be even length")
half = len(sequence) // 2
return sum(sequence[:half]), sum(sequence[half:])
# eine weitere Funktion kann dann das machen, was ursprünglich die Aufgabe gewesen ist
def equal_sum(sequence):
left, right = sum_half(sequence)
return left == right
my_list = [11, 44, 11, -11, 88, -11]
print(equal_sum(my_list))
print(equal_sum([1, 2, 3])) # boom
Code: Alles auswählen
def sum_half(sequence):
half, rest = divmod(len(sequence), 2)
if rest != 0:
raise ValueError("Sequence must be even length")
return sum(sequence[:half]), sum(sequence[half:])