2017-04-03 4 views
2

Dies ist, was ich bisher habe. Es hat funktioniert, bis ich die Funktionen hinzugefügt habe. Ich brauche zwei Funktionen im Code und ich weiß nicht, wie ich das richtig machen kann und habe verschiedene Möglichkeiten ausprobiert. Der Code muss X Anzahl der Zufallszahlen in eine Textdatei schreiben.Python Random Number File Writer

import random 

random_numbers = open('ran_numbers.txt', 'w') 

def main(): 

    getRandom() 
    writeFunction() 

def getRandom(): 
    qty_numbers = int(input('How many random numbers should be written to the file? ')) 

    for count in range (qty_numbers): 
     number = random.randint(1,500) 

def writeFunction(): 
    random_numbers.write(str(number)+ '\n') 
    random_numbers.close() 
    print('Your list of random numbers have been written to the file named') 
    print('ran_numbers.txt') 

main() 
+1

'getRandom' kehrt' nichts 'zurück, so weit wie der Rest des Programms betroffen ist, tut diese Funktion nichts. Dann versucht 'writeFunction' etwas zu verwenden, das' number' genannt wird, aber es gibt keine solche Variable in Ihrem Programm. Es gibt noch ein paar andere Probleme, aber versuchen Sie es zuerst: Schreiben Sie ein einfacheres Programm, das Sie fragt, wie viele Zahlen Sie wollen und dann * viele Zufallszahlen ausdruckt. Danach können Sie mit dem Schreiben in eine Datei fortfahren. –

Antwort

0

ändern diese:

random_numbers = open('ran_numbers.txt', 'w') 

def main(): 

    getRandom() 
    writeFunction() 

def getRandom(): 
    qty_numbers = int(input('How many random numbers should be written to the file? ')) 

    for count in range (qty_numbers): 
     number = random.randint(1,500) 

Um dies:

random_numbers = open('ran_numbers.txt', 'w') 

def main(): 

    getRandom() 


def getRandom(): 
    qty_numbers = int(input('How many random numbers should be written to the file? ')) 

    for count in range (qty_numbers): 
     number = random.randint(1,500) 
     writeFunction(number) 

Denn Zahlen ist eine lokale Variable für die getRandom() Funktion, also entweder direkt in die Datei in das schreiben Funktion selbst oder Rückgabe der Zahl in der Hauptfunktion und übergeben sie an writeFunction()

def main(): 
    number= getRandom() 
    writeFunction(number) 

Was Sie tun, ist Ihre Wahl, aber die Definition der Nummer in einem Block wird nicht funktionieren.

0

Sie nie die writeFunction() aufrufen, nach dem Erstellen ändern, um die Zufallszahl

Nur:

for count in range (qty_numbers): 
    number = random.randint(1,500) 

dazu:

for count in range (qty_numbers): 
    number = random.randint(1,500) 
    writeFunction(number) 

und ändern Sie die Zeile:

def writeFunction(): 

an:

def writeFunction(number): 

und schließlich Ihre main() ändern:

def main(): 

    getRandom() 
    random_numbers.close() 

und

random_numbers.close() 

vom writeFunction()

ich das Ihnen hilft, Hoffnung entfernen.

+0

Können Sie auch erklären, wohin 'random_numbers.close()' gehen soll? –

+0

Ich würde es am Ende der main() -Funktion setzen, auf diese Weise wird die Datei nur einmal geschlossen, nachdem die Funktion abgeschlossen ist. – Jebby

+1

Richtig, ich meinte, können Sie Ihre Antwort ändern, um diese Information zu enthalten –

0

Ich denke, Sie müssen nur eine Liste von Nummern, die generated sind und haben sie an die Datei_Writer übergeben. Hier ist die Änderung, die ich an Ihrem Code gemacht habe:

+0

Dies wird nicht ausgeführt, weil 'getRandom' verwendet wird, bevor es definiert ist. Ich denke du hast versehentlich einen überflüssigen Code am Anfang von 'main' hinterlassen. Kannst du es bearbeiten, um das zu beheben? –

+0

Ich habe fälschlicherweise die Definition der Funktion eingerückt, Just fixed. Hoffe es löst dein Problem. – ida

0

Wenn Sie zwei Funktionen haben müssen, dann wäre dies eine bessere Lösung. Setzen Sie die Zufallszahlen in eine Liste und übergeben Sie sie dann an die Funktion writeFunction.

import random 

random_numbers = open('ran_numbers.txt', 'w') 

def main(): 

    writeFunction(getRandom()) 

def getRandom(): 
    qty_numbers = int(input('How many random numbers should be written to  the file? ')) 

    nums = [] 
    for count in range (qty_numbers): 
     nums.append(random.randint(1,500)) 
    return nums 

def writeFunction(a_list): 
    random_nums = '\n'.join([str(x) for x in a_list]) 
    random_numbers.write(random_nums) 
    random_numbers.close() 
    print('Your list of random numbers have been written to the file named') 
    print('ran_numbers.txt') 

main()