/ / Python-Dateien, Hinzufügen von Werten zu / aus einer Liste - Python, Liste, Datei, Python-3.x, Benutzereingabe

Python-Dateien, Hinzufügen von Werten zu / von einer Liste - Python, Liste, Datei, Python-3.x, Benutzereingabe

Ich versuche, einer Liste einen Wert aus einer Datei hinzuzufügen und kann dann die Werte aus der Datei zur Liste hinzufügen. Das ist was ich habe:

L = []
def readFile(L):
ui = input("Please enter your file name:")
r = open(ui, "r")
files = r.readlines()
for line in files:
return float(line)
L.append(line)
r.close()

def fileAddValue(L):
ui = input("Please enter your file name:")
val = float(input("Enter the value you would like to add to the list: "))
r = open(ui, "a")
file = r.write(str(val) + "n")
for ix in r:
x = float(ix)
L.append(x)
L.sort()
r.close()

Antworten:

0 für die Antwort № 1

Sie haben ein paar Probleme ...

Wenn Sie eine Datei öffnen, müssen Sie sie zuerst verwenden withDies wird das Schließen Ihrer Datei für Sie erledigen.

Wenn Sie nun jede Zeile nacheinander lesen, geben Sie die erste zurück. Das kehrt von der ganzen Funktion zurück, also ist es nicht das, was Sie wollen. Ich nehme an, Sie möchten jedes Element an Ihre Liste anhängen.

Außerdem sind Ihre Funktionen besser generisch. Geben Sie den Dateinamen und die Daten ein. Holen Sie sie außerhalb der Funktion für mehr Flexibilität.

Es ist nicht klar, was Sie hier tun möchten. Ich habe angenommen, dass Sie Werte angeben möchten, die einer Liste hinzugefügt werden sollen, die in einer Datei gespeichert ist. Es gibt bessere Möglichkeiten, dies zu tun. Dies ist mein Versuch, der auf Ihrem ursprünglichen Code basiert.

def readFile(ui):
L = []
with open(ui, "r") as f:
for line in f.readlines():
L.append(float(line))
return sorted(L)

def fileAddValue(ui, val):
with open(ui, "a") as f:
f.write(str(val) + "n")

ui = raw_input("Please enter your file name:")
L = readFile(ui)
print("original file:")
print(L)
val = float(raw_input("Enter the value you would like to add to the list: "))
fileAddValue(ui, val)
L = readFile(ui)
print("updated file:")
print(L)

0 für die Antwort № 2

Brauchen Sie so etwas?

L = []
def readFile():
ui = input("Please enter your file name:")
r = open(ui, "r")
files = r.readlines()
for line in files:
value = float(line)
L.append(value)
r.close()

def fileAddValue():
ui = input("Please enter your file name:")
val = float(input("Enter the value you would like to add to the list: "))
r = open(ui, "a+")
r.write(str(val) + "n")
for ix in r:
x = float(ix)
L.append(x)
L.append(val)
L.sort()
r.close()

if __name__ == "__main__":
readFile()
fileAddValue()
print(L)

Während es nicht pytonisch ist (versucht, Ihre nicht zu berührenCode, sofern nicht notwendig), es funktioniert, wenn ich Ihre Frage richtig gestellt habe. Das Einrücken von Code ist in Python wichtig und die Rückgabe von einer Funktion garantiert, dass Code nach der Rückgabe niemals ausgeführt wird. Wenn Sie eine Funktion wünschen, die mehrere Werte "zurückgibt", können Sie diese Funktion mit "iterieren" for, benutzen yield Anstatt von return.