我目前正在通過一個包含定義函數的練習來工作,並且我已經遇到了將所有支持函數放到主函數中的障礙。將支持函數放入主函數
下面是代碼最初是什麼樣子..
fn = input('Enter filename: ')
f = open(fn)
f.readline() # Skip the first two lines
f.readline()
line = f.readline() # Line containing site info
stuff = line.split(',')
print('\nSite: {}.\n(lat, long) = ({}, {})'.format(stuff[0], stuff[3], stuff[4]))
# Now process body of file, accumulating monthly rainfalls.
f.readline()
f.readline()
f.readline()
f.readline()
f.readline()
f.readline()
line = f.readline()
stuff = line.split(',')
rfs = 12 * [0] # Rainfall totals for months
while len(stuff) > 1:
date = stuff[1]
m = int(date[4:6]) # Month
rainfall = float(stuff[2])
rfs[m - 1] += rainfall
line = f.readline()
stuff = line.split(',')
# Print results
months = ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec']
print('\nMonth Rainfall')
for i in range(12):
print(' {} {:6.1f}'.format(months[i], rfs[i]))
print('\nTotal rainfall = {:.1f}'.format(sum(rfs)))
f.close()
此打印出..
Enter filename:
Site: Christchurch Aero.
(lat, long) = (-43.493, 172.537)
Month Rainfall
Jan 58.0
Feb 35.4
Mar 54.2
Apr 50.8
May 52.6
Jun 41.0
Jul 29.4
Aug 62.6
Sep 21.4
Oct 90.8
Nov 63.6
Dec 60.8
Total rainfall = 620.6
我試過現在拆分此代碼放到單獨的功能,但每當我去跑它只是凍結的代碼,我不確定潛在的問題是什麼。這裏是我有..
def main():
'''Main function, opens the text file, reads and then prints the
relevant info'''
file_input = input('Enter filename: ')
file = open(file_input)
file.readline()
file.readline()
site_line = file.readline() # Line containing site info
site_info = site_line.split(',')
print('\nSite: {}.\n(lat, long) = ({}, {})'.
format(site_info[0], site_info[3], site_info[4]))
rfs = rainfall_function(file)
print_rainfall(rfs)
def rainfall_function(file):
'''Read text file for the required data and process the information'''
file.readline()
file.readline()
file.readline()
file.readline()
file.readline()
file.readline()
rain_line = file.readline()
rain_info = rain_line.split(',')
rfs = 12 * [0] # Rainfall totals for months
while len(rain_info) > 1:
date = rain_info[1]
month = int(date[4:6]) # Month
rainfall = float(rain_info[2])
rfs[month - 1] += rainfall
return rfs
def print_rainfall(rfs):
'''Months to print rainfall statistics for'''
months = ['Jan', 'Feb', 'Mar', 'Apr', ' May', 'Jun',
'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
print('\nMonth Rainfall')
for i in range(12):
print(' {} {:6.1f}'.format(months[i], rfs[i]))
print('\nTotal rainfall = {:.1f}'.format(sum(rfs)))
main()
我欣賞的幫助!
是的,事實證明,我只是斬斷了部分代碼。非常基本的錯誤,歡呼指出>< – Ergo 2013-05-10 02:48:48