Anfängerin braucht Hilfe..

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Gary123456
User
Beiträge: 318
Registriert: Dienstag 26. Februar 2013, 18:39

Hallo,

Code: Alles auswählen

Zahl = int(input("Type any numbers: "))
Zahlenmenge = []
for i in range (2, Zahl + 1):
    y = i * i
    Zahlenmenge.append(y)

print Zahlenmenge

Das sollte ein Denkanstoß sein. Du machst Dir vieles zu kompliziert.

Diese Zeilen sind unnötig:

Code: Alles auswählen

print("Type any number:")
n=int(n)
i=1
i=i+1
y=(i*i) => Die Klammern
Mit meinem Code hast Du dieselbe Ausgabe mit viel kürzerem Code. Versuche ihn zu verstehen. Vll sollest Du als Übung erstmal Listen erstellen, Elemente hinzufuegen etc. :)
aber ich kann y nicht sortieren oder in eine liste tun - die fehlermeldung lautet "int object is not iterable".
Dazu bräuchten wir aber auch den Code + vollständige Fehlermeldung ;)

EDIT: Mein COde ginge noch kürzer. Kleine Aufgabe für Dich: Wie würde mein Code noch kürzer gehen?
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

junii hat geschrieben:

Code: Alles auswählen

i=1
for i in range (1,n):
    i=i+1
Du hast die for-Schleife in Verbindung mit range noch nicht verstanden oder nutzt zumindest die Möglichkeiten nicht aus. range liefert dir die Zahlen im angegebenen Bereich. Mit dem for i durchläufst du alle diese Zahlen in einer Schleife. Es gibt keine Notwendigkeit i vorher auf irgendeinen Wert zu setzen oder i innerhalb der Schleife manuell hochzuzählen.

Mir ist bisher nicht ganz klar geworden ob die 1 Teil der zu berechnenden Zahlen sein soll oder nicht. Du müsstest bei Bedarf die Parameter von range entsprechend anpassen.
junii
User
Beiträge: 6
Registriert: Montag 22. April 2013, 16:34

danke für die hinweise. ich werde nochmal von vorn anfangen und mich mit diesen ausdrücken vertraut machen und die aufgaben dann für nächste woche bearbeiten.
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

junii hat geschrieben:danke für die hinweise. ich werde nochmal von vorn anfangen und mich mit diesen ausdrücken vertraut machen und die aufgaben dann für nächste woche bearbeiten.
Ich habe hier mal eine simple Logik verwendet. number ist die Zahl bis zu der berechnet werden soll. result nimmt die Summe auf. In infotext wird der auszugebende Text aufgebaut.

Code: Alles auswählen

number = 5
result = 0
infotext = ''
for i in range(1, number + 1):
    # Ergebnisse aufaddieren
    result += i * i
    # Ausgabetext zusammensetzen
    infotext += str(i * i) + ' + '

# Mal schauen wie es aussieht
print(infotext)
# letztes Plus-Zeichen und Leerzeichen abschneiden und die Summe ergänzen
infotext = infotext[:-2] + '= ' + str(result)
print(infotext)
Das funktioniert, ist aber nicht besonders schön.

Alternativ kommt jetzt hier eine sehr kurze Variante in der alle Zahlen in einer Liste gesammelt werden. Was beim print passiert mag für einen Anfänger erst einmal erschreckend aussehen ist aber eigentlich gar nicht dramatisch. Das ließe sich für eine anfängliche Übersichtlichkeit auch durchaus auf mehrere Zeilen verteilen. Das Wesentliche ist der Ansatz alle Einzelergebnisse in einer Liste zu sammeln und dann damit zu arbeiten.

Code: Alles auswählen

number = 5
results = [i * i for i in range(1, number + 1)]
print('{} = {}'.format(' + '.join(map(str, results))), (sum(results)))
Antworten