Ich soll für ein Programm codieren, das einen Benutzer ständig nach einem Dateinamen fragt, bis er den richtigen eingibt. Dann soll der find_min_percent ein Argument, eine Zeile (str) aus der Datei GDP.txt nehmen, dann durch die Zeile iterieren, um den kleinsten Wert zu finden und diesen Wert zurückzugeben. Hier ist mein Code so weitPython-Programm: Lesen einer Datei
line = " "
def open_file():
''' Repeatedly prompt until a valid file name allows the file to be opened.'''
while True:
user_input = input('Enter a file name: ')
try:
file = open(user_input, 'r')
return file
break
except FileNotFoundError:
print('Error. Please try again')
open_file()
def find_min_percent(line):
'''Find the min percent change in the line; return the value and the index.'''
percent_lst = []
line = file.readline(9)
percent_lst += [line]
percent_int = [float(i) for i in percent_lst]
min_value = 10000
for percent in percent_int:
if percent < min_value:
min_value = percent
return min_value
print(open_file())
print (find_min_percent(line))
Mein Problem ist mit der readline(). Es besagt, dass die Variablendatei nicht definiert ist. Der Umriss dieses Codes enthält keine Datei im Teil "def find_min_percent (line):". Also weiß ich nicht, wie ich das beheben würde. Ich kann die Zeile auch nicht außerhalb der Funktion setzen, weil ich die gleiche Zeilenvariable für andere Funktionen später im Programm verwenden muss, um andere Zeilen zu lesen. Also ich weiß nicht, was zu tun ist, damit es nicht hält
Warum speichern Sie nicht den Rückgabewert von 'open_file()' und übergeben ihn in 'find_min_percent'? 'print (open_file())' ruft 'open_file()' auf, gibt die Darstellung des zurückgegebenen Dateiobjekts aus und verwirft es dann. –
Oups! Das Wiederholen von einem Fehlerhandler ist eine ** sehr ** schlechte Idee ... Bitte entfernen Sie die 'break' Zeile von' open_file' (nutzlos nach einer 'return'), und entfernen Sie die schreckliche' open_file' Zeile vom Ende des Funktion. –