Python berechnen ohne sum()?

3 Antworten

Hey, kennt sich vll damit jemand aus?

Ja, aber wie wäre es, wenn du erstmal sagst, worüber du dir schon Gedanken gemacht hast, was du schon für Code hast, wo es bei dir genau hängt usw.

Ist es das Erstellen / Füllen der Liste? Ist es die Berechnung der Summe?

Wenn du sum nicht nutzen darfst, kannst du hier jetzt natürlich händisch zusammenrechnen. Bei fünf (!) Zufallszahlen hält sich das ja durchaus noch in Grenzen und wäre möglich, auch wenn nicht allzu schön. Du kannst das ganze aber natürlich auch mit einer Schleife darstellen, was dann auch für mehr oder weniger als fünf Zahlen funktioniert.

Woher ich das weiß:Studium / Ausbildung – Abgeschlossenes Studium der Informatik (B.Sc.)

Cloudsig 
Fragesteller
 29.11.2022, 14:32

Das habe ich bereits jedoch funktioniert irgendetwas nicht:

numbers = [5, 6, 9, 3, 4,]

t_sum = 0

for number in numbers:

t_sum += int(number)

print(t_sum)

for index, value in enumerate(numbers):

if len(numbers) -1 == index:

print(str(numbers[index]) + " = " + str(number), end='')

else:

print(str(numbers[index]) + "+", end=' ')

Danke für die Antwort

0
xxxcyberxxx  29.11.2022, 14:53
@Cloudsig
Das habe ich bereits jedoch funktioniert irgendetwas nicht:

und was ist das "irgendwas"?

Erstmal als Hinweis: Nutze die Code-Umgebung von Gutefrage. Besonders bei Python sind Einrückungen wichtig. Ich impliziere diese jetzt einfach mal und hoffe, dass es passt ...

numbers = [5, 6, 9, 3, 4,]

warum das Komma nach 4? Zudem sollst du das ja nicht als feste Zahl angeben, sondern die Liste mit Zufallszahlen füllen.

t_sum = 0
for number in numbers:
  t_sum += int(number)
print(t_sum)

Passt prinzipiell zum Berechnen der Endsumme, ja. Das gibt aber erstmal nur das Endergebnis aus und du sollst wohl auch die Summanden selbst angeben

for index, value in enumerate(numbers):
  if len(numbers) -1 == index: 
    print(str(numbers[index]) + " = " + str(number), end='')
  else:
    print(str(numbers[index]) + "+", end=' ')
  1. du willst die Summe am Ende ausgeben, nicht "number" ...
  2. Das hängt das ganze prinzipiell hintereinander. Du willst eventuell noch Leerzeichen um das Plus setzen und den String für end anpassen, aber prinzipiell passt das von der Überlegung.
  3. Warum hast du auch für das letzte Print-Statement end überschrieben? Hier ist doch ein New Line gewollt, weil damit in der nächsten Zeile die nächste Ausgabe passieren kann
  4. Du kannst das ganze noch eleganter aufbauen und ohne die zweite for-Schleife. Schau dir hierfür join-Statements für Strings an sowie eventuell f-Strings, um das schöner darzustellen.
0

Ich hätte das so gelöst...

from random import randint
L = [randint(1, 20) for _ in range(5)]
print("Liste mit fünf Zufallszahlen im Bereich 1 bis 20:")
print(L, end="\n\n")
s = sum(L)
print("Summe:")
print(f"{' + '.join(map(str, L))} = {s}")

Bzw. wenn es unbedingt ohne die sum()-Funktion sein soll, würde ich das wohl so lösen...

from random import randint
L = [randint(1, 20) for _ in range(5)]

print("Liste mit fünf Zufallszahlen im Bereich 1 bis 20:")
print(L, end="\n\n")

s = L[0]
out_sum_str = str(L[0])
for k in L[1:]:
    s += k
    out_sum_str += " + " + str(k)
out_sum_str += " = " + str(s)

print("Summe:")
print(out_sum_str)

Zwar wahrscheinlich nicht ganz das, was dein Lehrer erwartet, aber wenn du eh schon einen Term à la "5 + 6 + 9 + 3 + 4" aufbauen musst, kannst du den mit Python einfach berechnen lassen:

import random

# Zufallszahlen aufbauen
liste = [random.randint(1,20) for _ in range(5)]

# Term aufbauen
calc = " + ".join([str(num) for num in liste])

# Term berechnen
result = eval(calc)

# Ergebnis ausgeben
print(f"{calc} = {result})