Zufallszahlen in einer Textdatei speichern

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
peoplez
User
Beiträge: 8
Registriert: Donnerstag 2. August 2018, 17:08

Hallo Leute,

ich bin noch recht unerfahren und bräuchte etwas Hilfe bei meinem kleinen Code. Es soll eine 20zig stellige Zahl per Zufall generiert werden. Die Menge der generierten Zahlen wird wird dabei über ein input bestimmt.

Nun habe ich aber das Problem, dass wenn ich z.B. 100 Zahlen generieren lasse, immer nur die letzte generierte Zahl gespeichert wird. Ich habe schon den ganzen Abend in meinen Anfängerbüchern verbracht, konnte aber leider nix finden. Googel hat mich nur noch mehr verwirrt.

Ich hoffe jemand kann mir einen Tipp geben, wie ich alle generierten Zahlen in die Textdatei bekomme.

Code: Alles auswählen


def datei_schreiben(string_wert):
    with open("generated.txt", "a") as file:
              file.write("\n" + string_wert)
i = int(input("Zeilenanzahl (1-1000): "))

for i in range(1,i+1):

    import random
    a = random.randint(10000000000000000000, 99999999999999999999)
    
    int_wert = (a)
    string_wert = str(int_wert)
    
    print(string_wert)

datei_schreiben(string_wert)

__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Indem du die Zahlen in ein List steckst, und die dann nacheinander (mit einem Zeilentrenner versehen) ab speicherst. Listen habt ihr doch bestimmt schon gehabt?
peoplez
User
Beiträge: 8
Registriert: Donnerstag 2. August 2018, 17:08

ich lerne privat nach der Arbeit, Schule ist schon lange vorbei^^.
Kannst du mir vielleicht den Code für so eine Liste zeigen? Stehe diesbezüglich total auf dem Schlauch
Sirius3
User
Beiträge: 18272
Registriert: Sonntag 21. Oktober 2012, 17:20

Einrückungen sind wichtig. Es wird immer mit 4 Leerzeichen pro Ebene eingerückt, nicht mal 4 und mal 10. Eine Zeile wird mit dem Zeileendezeichen abgeschlossen, und fängt nicht mit einem Zeileendezeichen an.
Importe gehören an den Anfang der Datei, nicht mitten in eine for-Schleife.
Da es egal ist, ob i von 0 bis i-1 oder von 1 bis i geht, ist ersteres zu bevorzugen.
Statt 9en zu zählen, würde man die Zahl ausrechnen.
Was ist der Sinn, eine Zahl erst an den Namen a und dann an int_wert zu binden?

Code: Alles auswählen

import random

STELLEN_ZAHL = 20
MIN_NUMMER = 10 ** (STELLEN_ZAHL-1)
MAX_NUMMER = 10 ** STELLEN_ZAHL

anzahl = int(input("Zeilenanzahl (1-1000): "))
with open("generated.txt", "a") as output:
    for _ in range(anzahl):
        zahl = random.randrange(MIN_NUMMER, MAX_NUMMER)
        print(zahl)
        output.write(f"{zahl}\n")
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

nach welcher Quelle lernst du denn? Das offizielle Python Tutorial behandelt auch Listen. Und die Zufallszahlenaufgabe hast du dir doch auch nicht selbst ausgedacht. Hat der Kurs oder was auch keine untersagen dazu?
peoplez
User
Beiträge: 8
Registriert: Donnerstag 2. August 2018, 17:08

wow, danke. ich lerne mit 2 Büchern in denen eigentlich nur kleine Programme wie Kalender und Minispiele veranschaulicht werden. Da war bisher nichts dabei, was mir hier in dem Fall helfen würde. Könnt ihr mir noch verraten was das "a" hinter dem Dateinamen.txt bedeutet? Eine Variable scheint es ja nicht zu sein...

Danke Sirius für den Code, das hat mir sehr geholfen.
Benutzeravatar
__blackjack__
User
Beiträge: 14050
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@peoplez: Was ist denn an der Erklärung in der Dokumentation unverständlich? https://docs.python.org/3.6/library/functions.html#open
“Vir, intelligence has nothing to do with politics!” — Londo Mollari
Antworten