Unterschiedliche Anzahl von Leerzeilen

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.
Benutzeravatar
Bill987654321
User
Beiträge: 136
Registriert: Sonntag 8. März 2020, 10:56

Habe mein Programm überarbeitet:

Code: Alles auswählen

#!/usr/bin/env python3

MANNSCHAFTSANZAHL = 4 #gross geschrieben, weil Konstante
MANNSCHAFTSNAMEN_DATEINAME = "Mannschaftsnamen.txt" #alles groß geschrieben, weil Konstante

mannschaftsnamen = [] #generieren einer Liste
for i in range(1, MANNSCHAFTSANZAHL + 1):
    mannschaftsname = input(f"Gebe den Namen der {i}. Mannschaft ein: ") #Eingabe der Mannschaften
    print(f"Die {i}. Mannschaft ist {mannschaftsname}.")
    print("Die {i}. Mannschaft ist {mannschaftsname}.") #format ohne f
    mannschaftsnamen.append(mannschaftsname) #mannschaftsname wird an mannschaftsname angehängt
    print(i)
    print(type(i))
    print(mannschaftsname)
    print(mannschaftsnamen, "mannschaftsnamen")
    print("Leerzeile")

print(mannschaftsnamen)

mannschaftsnamen.sort()
print(mannschaftsnamen)

mannschaftsnamen=enumerate(mannschaftsnamen,start=1)
print(mannschaftsnamen)

with open(MANNSCHAFTSNAMEN_DATEINAME, "w", encoding="utf-8") as output: #file zum Schreiben wird geöffnet
    for mannschaftsname in mannschaftsnamen:
        output.write(f"{mannschaftsname}\n")

mannschaftsnamen = [] #generieren einer Liste
with open(MANNSCHAFTSNAMEN_DATEINAME, encoding="utf-8") as lines: #file zum Lesen wird geöffnet
    for line in lines:
        mannschaftsnamen.append(line.rstrip())
print("Auslesen aus Datei vollendet*******************************\n\n")

print("Erste Zeile ((mannschaftsnamen),('mannschaftsnamen'))")
print((mannschaftsnamen),("mannschaftsnamen\n"))
print("Zweite Zeile (mannschaftsname)")
print(mannschaftsname)
print("\n\n")

print("Schleifenbeginn")
for mannschaftsname in mannschaftsnamen:
    print("[mannschaftsnamen]")
    print([mannschaftsnamen])
    print("\n")
    print("mannschaftsname")
    print(mannschaftsname)
    print("\n\n")
print("Schleifenende")
print("\n")
print("END")
Hierzu habe ich folgende Fragen: Im Listing wird in der vorletzten Zeile eine Leerzeile erzeugt. Im Bildschirmausdruck erscheinen aber zwei Leerzeilen (s. unten). Warum ist das so? Wie muss ich den Code ändern, damit im Bildschirmausdruck nur eine Leerzeile ist?

[mannschaftsnamen]
[["(1, 'e')", "(2, 'r')", "(3, 't')", "(4, 'z')"]]


mannschaftsname
(4, 'z')



Schleifenende


END
Jankie
User
Beiträge: 592
Registriert: Mittwoch 26. September 2018, 14:06

mach aus print("\n") ein print(), weil print() am Ende standartmäßig ein Zeilenumbruch hat. Es sei denn man gibt explizit was anderes an mit end.
Sirius3
User
Beiträge: 17752
Registriert: Sonntag 21. Oktober 2012, 17:20

Zeile 23: `enumerate` ist ein Generator. Du erstetzt jetzt mannschaftsnamen durch ein Objekt, das man nur einmal benutzen kann. Das führt früher oder später zu Programmfehlern. enumerate findet man eigentlich fast ausschließlich direkt als Ausdruck in for-Schleifen.
Zeile 28: Die Repräsentation eines Tupels in eine Datei zu schreiben, ist genauso falsch, wie die Repräsentation einer Liste. Den Index brauchst Du doch auch gar nicht, weil in einer Liste klar ist, welches das erste und welches das zweite Element ist. mannschaftsname ist auch wieder der FALSCHE Variablenname, denn das ist ein Tupel mit Index und Manschafstname, also `index_mit_manschaftsname` wäre der richtige Name. Da man aber dieses Tuple fast nie braucht, wird es normalerweise gleich im for entpackt:

Code: Alles auswählen

mannschaftsnamen.sort()
with open(MANNSCHAFTSNAMEN_DATEINAME, "w", encoding="utf-8") as output:
    for index, mannschaftsname in enumerate(mannschaftsnamen, start=1):
        output.write(f"{index}: {mannschaftsname}\n")
Trotz Deiner vielen print-Anweisungen, was der Inhalt und Typ der einzelnen Variablen ist, scheinst Du noch nicht zu verstehen, was das bedeutet. Wenn Dir also etwas noch unklar ist, solltest Du das entweder nochmal nachlesen oder hier fragen. Wenn Du es dann verstanden hast, kannst Du das print auch wieder löschen. Das Überlesen der vielen `print` macht nämlich das Lesen hier im Forum nur umständlich.

Zeile 38: Sowohl der Variablenname mannschaftsname als auch mannschaftsnamen sind falsch. Das eine ist die Repräsentation eines Tuples und das andere dessen Liste, also bessere Namen wären `representation_of_tuple` und `representation_of_tuples`. Dass das mal Mannschaftsnamen waren, ist hier auch nicht mehr relevant, weil man mit diesem Ding nichts sinnvolles mehr machen kann, und das sollte durch den Namen auch sehr deutlich werden.
Zeile 40: Warum packst Du die Liste `mannschaftsnamen` nochmal in eine Liste mit einem Element? Das macht keinen Sinn.
Benutzeravatar
Bill987654321
User
Beiträge: 136
Registriert: Sonntag 8. März 2020, 10:56

@Sirius3:

Habe den Code umgeschrieben:

Code: Alles auswählen

#!/usr/bin/env python3

MANNSCHAFTSANZAHL = 4 #gross geschrieben, weil Konstante
INDEX_MIT_MANNSCHAFTSNAMEN = "Index mit Mannschaftsnamen.txt" #alles groß geschrieben, weil Konstante

mannschaftsnamen = [] #generieren einer Liste
for i in range(1, MANNSCHAFTSANZAHL + 1):
    mannschaftsname = input(f"Gebe den Namen der {i}. Mannschaft ein: ") #Eingabe der Mannschaften
    print(f"Die {i}. Mannschaft ist {mannschaftsname}.")
    mannschaftsnamen.append(mannschaftsname) #mannschaftsname wird an mannschaftsname angehängt
    #print("Type (i)=",(type(i)))
    print("mannschaftsname=",(mannschaftsname))
    print(mannschaftsnamen, "mannschaftsnamen\n")

print(mannschaftsnamen)

mannschaftsnamen.sort()
print(mannschaftsnamen)

with open(INDEX_MIT_MANNSCHAFTSNAMEN, "w", encoding="utf-8") as output:
    for index, mannschaftsname in enumerate(mannschaftsnamen, start=1):
        output.write(f"{index}: {mannschaftsname}\n")

index_mit_mannschaftsnamen = [] #generieren einer Liste
with open(INDEX_MIT_MANNSCHAFTSNAMEN, encoding="utf-8") as lines: #file zum Lesen wird geöffnet
    for line in lines:
        index_mit_mannschaftsnamen.append(line.rstrip())
print("Auslesen aus Datei vollendet*******************************\n\n")

print("((index_mit_mannschaftsnamen),('mannschaftsnamen'))")
print((index_mit_mannschaftsnamen),(mannschaftsnamen))

print("END")
Ich weiß nur nicht, was ich in `representation_of_tuple` bzw. `representation_of_tuples` umbenennen soll. Schreibe mir das bitte noch.

Ist sonst alles richtig? :?:
Sirius3
User
Beiträge: 17752
Registriert: Sonntag 21. Oktober 2012, 17:20

Im alten Code waren das die Zeilen ab 25. Also alles nachdem Du die Datei mit den 'Tuple-Repräsentationen wieder gelesen hattest.
Jetzt hast Du keine Repräsentation von Tupeln mehr und deine Variable heißt korrekt index_mit_mannschaftsnamen.
Benutzeravatar
Bill987654321
User
Beiträge: 136
Registriert: Sonntag 8. März 2020, 10:56

Vielen Dank für die Infos
Benutzeravatar
__blackjack__
User
Beiträge: 13111
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Bill987654321: Du hast da jetzt Sachen umgesetzt die man so machen würde *wenn man das so machen würde*.

Das müsste `INDEX_MIT_MANNSCHAFTSNAMEN` heissen, wenn man denn den Index mitspeichern würde. Der Index ist doch aber ein völlig redundantes Datum, was Sirius3 ja auch geschrieben hat. Warum speicherst Du das in die Datei? Das ist was für die Ausgabe der Daten für Menschen. Zum Beispiel wenn man es auf dem Bildschirm ausgibt, oder wenn man eine Report-Datei schreibt die für menschliche Leser gedacht ist. Wenn man das in eine Datei schreibt wo Daten für das Programm gespeichert und gelesen werden sollen, dann ist die laufende Nummer einfach nur unnötig. Wenn man den Mannschaftsnamen ohne Nummer benötigt, hat man zusätzliche Arbeite das man den wieder entfernen muss. Und falls man die Nummern nicht speichert, für die Anzeige aber welche braucht, dann sind die mit `enumerate()` einfach und effizient erstellbar.

Bei den Kommentaren ist zu viel offensichtliches dabei. Faustregel für Kommentare ist, dass die nicht beschreiben *was* der Code macht, denn das steht da bereits als Code, sondern warum er das so macht. Sofern das nicht klar ist. Wobei Dokumentierte Sachen hier in aller Regel als klar anzusehen sind. Man schreibt also nicht die Bedeutung von Sachen in den Quelltext die man in der Dokumentation der Sprache oder der verwendeten Funktionen/Datentypen finden kann.

Da sind zu viele `print()`-Ausgaben drin. Einige mit unnötigen Klammern um einzelne Namen.

Und was ja auch schon mehrfach gesagt wurde: Das gehört alles nicht auf Modulebene, sondern ausser den Konstanten gehört das alles in Funktionen. Mehrzahl, denn Du hast da ja schon drei, eigentlich eigenständige Aufgaben, die man sinnvoll aufteilen kann. Die Eingabe der Mannschaftsnamen durch den Benutzer, das Speichern der Mannschaftsnamen, und das laden der Mannschaftsnamen.

Ungetestet:

Code: Alles auswählen

#!/usr/bin/env python3

MANNSCHAFTSANZAHL = 4
MANNSCHAFTSNAMEN_DATEINAME = "Mannschaftsnamen.txt"


def mannschaftsnamen_eingeben(anzahl):
    namen = []
    for i in range(1, anzahl + 1):
        namen.append(input(f"Gebe den Namen der {i}. Mannschaft ein: "))
    namen.sort()
    return namen


def mannschaftsnamen_speichern(namen, dateiname):
    with open(dateiname, "w", encoding="utf-8") as datei:
        for name in namen:
            datei.write(f"{name}\n")


def mannschaftsnamen_laden(dateiname):
    namen = []
    with open(dateiname, encoding="utf-8") as lines:
        for line in lines:
            namen.append(line.rstrip())
    return namen


def print_numbered_items(items):
    for i, item in enumerate(items, 1):
        print(f"{i}. {item}")


def main():
    print("Eingabe")
    mannschaftsnamen = mannschaftsnamen_eingeben(MANNSCHAFTSANZAHL)
    print_numbered_items(mannschaftsnamen)

    print("Speichern")
    mannschaftsnamen_speichern(mannschaftsnamen, MANNSCHAFTSNAMEN_DATEINAME)

    print("Laden")
    mannschaftsnamen = mannschaftsnamen_laden(MANNSCHAFTSNAMEN_DATEINAME)
    print_numbered_items(mannschaftsnamen)


if __name__ == "__main__":
    main()
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
Bill987654321
User
Beiträge: 136
Registriert: Sonntag 8. März 2020, 10:56

@blackjack
Habe gerade deinen Code getestet. Er war fehlerfrei, hat auf Anhieb funktioniert.
Werde in den nächsten Tagen das nachlesen, was ich nicht kenne.
Vielen Dank.
Benutzeravatar
Bill987654321
User
Beiträge: 136
Registriert: Sonntag 8. März 2020, 10:56

Muss im Code von blackjack zwingend zwischen "namen" und "mannschaftsnamen" unterschieden werden? Würde nicht "namen" oder "mannschaftsnamen" ausreichen?
Benutzeravatar
Bill987654321
User
Beiträge: 136
Registriert: Sonntag 8. März 2020, 10:56

Woher weiß Python, das die "anzahl" = 4 ist?
Im Code ist angegeben: MANNSCHAFTSANZAHL=4. Eine "Verbindung" zwischen "anzahl" und "MANNSCHAFTSANZAHL" finde ich nicht.
Sirius3
User
Beiträge: 17752
Registriert: Sonntag 21. Oktober 2012, 17:20

Du solltest dringend nachlesen, was Funktionen sind und wie man sie definiert.
Einfach mal nach MANNSCHAFTSANZAHL suchen, dann findest Du die Stelle, an der der Aufruf von mannschaftsnamen_eingeben ist, und dieses Argument ist in der Funktion anzahl.
Zwingend unterscheiden mußt Du nicht, weil namen und mannschaftsnamen in verschiedenen Namespaces (also Funktionen) definiert werden. Aber __blackjack__ zeigt damit auch, dass man verschiedene Variablennamen benutzen kann.
Benutzeravatar
Bill987654321
User
Beiträge: 136
Registriert: Sonntag 8. März 2020, 10:56

Bill987654321 hat geschrieben: Mittwoch 8. April 2020, 18:51 Woher weiß Python, das die "anzahl" = 4 ist?
Im Code ist angegeben: MANNSCHAFTSANZAHL=4. Eine "Verbindung" zwischen "anzahl" und "MANNSCHAFTSANZAHL" finde ich nicht.
Dann ist da hier wohl der selbe Fall?.
__deets__
User
Beiträge: 14542
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ja. Es besteht kein Zusammenhang zwischen den Parameternamen einer Funktion, und dem Namen der Variablen an der Stelle, wo sie aufgerufen wird.
Benutzeravatar
Bill987654321
User
Beiträge: 136
Registriert: Sonntag 8. März 2020, 10:56

Könnte ich dann aber auch für den Parameternamen einer Funktion und dem Namen der Variablen das selbe "Wort" verwenden?
__deets__
User
Beiträge: 14542
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ehrlich gesagt kannst du das schneller ausprobieren, als fragen. Und lernst dabei noch mehr. Denn Experimente bilden. Aber sei's drum: natuerlich. Unabhaengig impliziert doch, dass man es nennen kann, wie man will, und es keinen Effekt hat. Also auch gleich. Und oft macht das Sinn, denn wenn ein Ding einen guten Namen hat, dann hat es den im Zweifel auf der aufrufenden wie auf der gerufenen Seite.
Benutzeravatar
bwbg
User
Beiträge: 407
Registriert: Mittwoch 23. Januar 2008, 13:35

Der eingangs gezeigte Code errinnert mich sehr an BASIC. Daher wahrscheinlich auch deine Verwirrung um die verschiedenen Namen.

Du solltest deine Fußballtabelle für eine Weile an die Seite legen und ein Grundlagentutorial durcharbeiten. Hiernach solltest du Kenntnisse über die wesentlichen Bestandteile von Python haben: Namen, Kontrollstrukturen, Funktionen und zumindest wissen, wofür Klassen verwendet werden. Ohne eben diese Grundlagen wirst du mit deinem Projekt nicht weiterkommen. Das Forum kann dieses Tutorial nicht ersetzen, aber sehr gute Ratschläge geben, wenn es konkret hakt.

Grüße ... bwbg
"Du bist der Messias! Und ich muss es wissen, denn ich bin schon einigen gefolgt!"
Benutzeravatar
Bill987654321
User
Beiträge: 136
Registriert: Sonntag 8. März 2020, 10:56

Danke für die zeitnahe Antwort.
Benutzeravatar
__blackjack__
User
Beiträge: 13111
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Ich hatte mich für unterschiedliche Namen entschieden weil das sonst so lang und redundant wird und der Namenszusatz keinerlei Zusatznutzen bringt. Bei einer Signatur ``def mannschaftsnamen_eingeben(anzahl):`` sollte doch klar sein worauf sich `anzahl` bezieht, auch ohne dass man es `namensanzahl` nennt oder gar `mannschaftsnamensanzahl` nennt. Lokale Namen müssen ja nur lokal eindeutig und aussagekräftig sein und nicht im ganzen Programm eindeutig.

@Bill987654321: Warum willst Du denn da nicht einfach `anzahl` oder `namen` als Argumentnamen haben? Ich denke das hängt damit zusammen das Du immer noch über das komplette Programm nachdenkst wenn Du an Namensfindung denkst. Du brauchst aber nur die einzelne Funktion betrachten. Und die einzelne Funktion liefert auch einen Kontext in dem die lokalen Namen zu verstehen sind. Wie gesagt, wenn die Funktion `mannschaftsnamen_eingeben()` heisst, dann ist IMHO ziemlich eindeutig auf was sich `anzahl` bezieht. Und welche `namen` werden das bei einer Funktion ``def mannschaftsnamen_speichern(namen, dateiname):`` wohl sein. Genauso der Dateiname. Wenn Du immer Argumentnamen, lokale Namen an der Aufrufstelle, und Namen von Konstanten gleich vergeben willst, dann wäre das ja:

Code: Alles auswählen

def mannschaftsnamen_speichern(mannschaftsnamen, mannschaftsnamen_dateiname):
    ...
Das macht das ganze nicht übersichtlicher. Ich würde sogar sagen das macht es unnötig aufgebläht und unleserlicher.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
Bill987654321
User
Beiträge: 136
Registriert: Sonntag 8. März 2020, 10:56

bwbg hat geschrieben: Mittwoch 8. April 2020, 19:28 Der eingangs gezeigte Code errinnert mich sehr an BASIC. Daher wahrscheinlich auch deine Verwirrung um die verschiedenen Namen.

Du solltest deine Fußballtabelle für eine Weile an die Seite legen und ein Grundlagentutorial durcharbeiten. Hiernach solltest du Kenntnisse über die wesentlichen Bestandteile von Python haben: Namen, Kontrollstrukturen, Funktionen und zumindest wissen, wofür Klassen verwendet werden. Ohne eben diese Grundlagen wirst du mit deinem Projekt nicht weiterkommen. Das Forum kann dieses Tutorial nicht ersetzen, aber sehr gute Ratschläge geben, wenn es konkret hakt.

Grüße ... bwbg
Vielen Dank für die Anwort.

Du hast recht. Ich komme von Basic. Deswegen die Verwirrung mit den verschiedenen Namen für ein und das selbe. Mir erscheint das unlogisch. Ich werde im Programm die "Wörter" gleichsetzen. Ich glaube sowas kommt 3 mal vor.
Deswegen, weil ich von Basic komme, habe ich auch vor ein paar Tagen die ersten 3 Vereinsnamen gesucht und nicht gefunden, weil sie überschrieben worden sind. In Basic gabs indizierte Varaiblen, in denen alle 4 Namen gespeichert wurden. Aber das weißt du ja.

Ich habe bereits Tutorials durchgearbeitet und auch in Büchern gelesen. Gerade vorhin habe ich in einem dicken Wälzer das Kapitel "Objektorientierung" begonnen zu lesen. Dort ist anhand eines Kontoverwaltungsprogrammes die Funktionsweise von Python erklärt. Den Sinn habe ich verstanden und natürlich auch festgestellt, dass Python hier ganz anders ist als Basic V2. In den nächsten Tagen werde ich beginnen, das Beispiel der Kontoverwaltung auf mein Programm zu übertragen.

Vor ca. 3 Jahren habe ich schon mal begonnen mit Tutorials Python zu lernen. Dort gibt es dutzende von einzelnen "Folgen", die (selbstverständlich) aufbauend sind. Wenn aber nur rein die Syntax erklärt wird und keine Einsatzmöglichkeit und auch der Sinn nicht erklärt wird, ist dies sehr trocken. Es führte dann dazu, jedenfalls bei mir, das ich aufgegeben habe, Python zu lernen. Autofahren lernt man auch nicht über Tutorials, in denen alles erklärt wird. Hier ist das Prinzip "Learning by doing" - was anderes macht auch keinen Sinn. Man bräuchte dann keine Fahrlehrer, weil man alles über Tutorials und Bücher lernen könnte. Ich habe auch privat und beruflich die Erfahrung gemacht, dass es wichtig ist, beim Lernen Fragen stellen zu können. Das Prinzip in der Schule ist von der ersten bis zu dreizehnten Klasse, dass man von einem Lehrer etwas neues beigebracht bekommt und auch nachfrragen kann. Es ist auch Zeit für Übungen eingeplant. Sogut wie niemand kann etwas Neues aufnehmen und dann fehlerfrei anwenden. Der Staat (wir alle) würden uns eine Menge Geld sparen, wenn man über Tutorials lesen, schreiben, Mathematik, Chemie, Englisch, usw. lernen könnte. Bis heute wurden Lehrer nicht abgeschafft. Ein Buch mit über 1000 Seiten durchlesen kann jeder. Ich möchte aber mal den/die kennenlernen, die noch alles wissen und was noch wichtiger ist, auch alles sofort korrekt in die Praxis / in Programme umsetzen können.

Deshalb bitte ich um Verständnis, wenn ich nachfrage und meine Fragen euch dumm erscheinen.

:) Wünsche Allen frohe Ostern. :)

Bill
Benutzeravatar
__blackjack__
User
Beiträge: 13111
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Bill987654321: Die „indizierten Variablen“ in BASIC sind Arrays, und wenn Du in Python eine Liste so verwendest wie ein Array in BASIC, dann würde da auch nichts überschrieben. In Python müsste man eine Liste erst einmal erstellen, was bei CBM BASIC bei Arrays ”automagisch” passiert wenn man eine Arrayvariable das erste mal benutzt. Das ist in dem BASIC-Dialekt ein implizites ``DIM X(10)`` falls die Variable das Array `X` war. *Das* müsste man dann in Python tatsächlich selbst von Hand machen, weil hier Listen nicht einfach so magisch entstehen. Das ginge auch gar nicht, weil Python nicht wüsste das beispielsweise bei ``name[2] = "test"`` der Name `name` an eine Liste gebunden werden soll. Denn die Bedeutung der eckigen Klammern nach einem Wert wird durch den Typ des Wertes bestimmt. `name` könnte beispielsweise auch ein Wörterbuch sein. Wenn der Programmierer das nicht explizit vorher klar macht, kann Python nicht wissen was für einen Wert es bei so einer Anweisung erstellen soll.

Ein und Ausgabe in so einem BASIC könnte so aussehen:

Code: Alles auswählen

10 FOR I=1 TO 4:PRINT I;". MANNSCHAFTSNAME";:INPUT N$(I):NEXT
20 PRINT:PRINT"MANNSCHAFTSNAMEN:"
30 FOR I=1 TO 4:PRINT I;"- ";N$(I):NEXT
Das als ”Python” wenn man nicht Python sondern BASIC in Python-Syntax schreiben würde:

Code: Alles auswählen

n = [""] * 11
for i in range(1, 5): n[i] = input(f"{i}. Mannschaftsname? ")
print()
print("Mannschaftsnamen:")
for i in range(1, 5): print(f"{i} - {n[i]}")
Aber schon in nur *etwas* modernerem BASIC, wobei moderner hier beispielsweise QBasic in 1991 meint, hätte man ja schon Funktionen, und würde auch dort für Parameternamen nicht zwingend den gleichen Namen nehmen wie der Variablenname von einem Argument beim Aufruf, wenn ein kürzerer Name in dem Kontext vollkommen ausreicht:

Code: Alles auswählen

DECLARE SUB MannschaftsnamenAusgeben (namen() AS STRING)
DECLARE SUB MannschaftsnamenEinlesen (namen() AS STRING)

DIM Mannschaftsnamen(1 TO 4) AS STRING

MannschaftsnamenEinlesen Mannschaftsnamen()
MannschaftsnamenAusgeben Mannschaftsnamen()

SUB MannschaftsnamenAusgeben (namen() AS STRING)
  DIM i AS INTEGER
  PRINT
  PRINT "Mannschaftsnamen:"
  FOR i = LBOUND(namen) TO UBOUND(namen)
    PRINT i; "- "; namen(i)
  NEXT
END SUB

SUB MannschaftsnamenEinlesen (namen() AS STRING)
  DIM i AS INTEGER
  FOR i = LBOUND(namen) TO UBOUND(namen)
    PRINT i; ". Mannschaftsname";
    INPUT namen(i)
  NEXT
END SUB
Versuch einfach mal Funktionen als kleine, eigenständige Teilprogramme zu sehen. Denn genau dafür sind sie da, dass man sie für sich betrachtet analysieren kann, ohne zu viel vom Rest vom Programm wissen zu müssen.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Antworten