我應該編寫一個程序,它不斷地向用戶提供一個文件名,直到它輸入正確的文件名爲止。然後,find_min_percent應該接受一個參數,GDP.txt文件中的一行(str)然後遍歷該行以找到最小值並返回該值。這裏是我的代碼到目前爲止Python程序:讀取文件
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))
我的問題是與readline()。它說變量文件是未定義的。此代碼的大綱不包含「def find_min_percent(line):」部分中的文件。所以我不知道如何去解決這個問題。我也不能在函數之外設置行,因爲我必須在程序的其他函數中使用相同的行變量來讀取其他行。所以我不知道該怎麼做才能保持不變
爲什麼不保存'open_file()'的返回值並將它傳遞給'find_min_percent'? 'print(open_file())'調用'open_file()',打印返回的文件對象的表示形式,然後拋棄它。 –
Oups!從一個錯誤處理程序遞歸是一個非常糟糕的主意......請從'open_file'中刪除'break'行(在'return'之後無用),並從結尾刪除糟糕的'open_file'行功能。 –