首页 > > 详细

讲解留学生Python语言、Python编程辅导、辅导留学生Python设计

Asignment Overview

This asignment focuses on the design, implementation and testing of a Python program to analyze
some real data using strings, files, and functions.

Asignment Deliverable

The deliverable for this asignment is the following file:

proj03.py – your source code program

Be sure to use the specified file name and to submit it for grading via the Mirmir system before the
project deadline.

Asignment Background

We collected national GDP (Gross Domestic Project) data from the Bureau of Economic Analysis (part
of the U.S. Department of Commerce) for the years 1969 through 2015. The GDP is one of the
primary indicators used to gauge the health of a country's economy. It represents the total dollar value
of al goods and services produced over a specific time period; you can think of it as the size of the
economy. When the economy is healthy GDP is increasing, but if GDP is decreasing, that can indicate
problems. Therefore, the change in GDP is useful to examine and that is the goal of this project.

We put the data in a file named GDP.txt that is available in the project directory. The file contains
data on the annual change in GDP which may be positive or negative and the GDP value itself for each
of the years 1969 through 2015.

If you are interested in where we got our data, here is the link:
http:/ww.bea.gov/iTable/iTable.cfm?ReqID=9step=1#reqid=9step=1isuri=1

(One note about the data. GDP data gets adjusted in a variety of ways. I have extracted two tables
from a few thousand lines of tables in the original file. If you try to derive the annual change in GDP
from the data on line 44, it wil difer by as many as a few percentage points from the change data we
are using from line 9. That is, some adjustments are being done that we are ignoring for this
asignment.)

Asignment Specifications

The lines of interest in the file GDP.txt are the 9
th
line which has the annual change in GDP and the
44
th
line which has the value of GDP for each year. The data starts in column 76 and each of the 47
data items spans 12 columns (there are 47 years inclusively from 1969 through 2015). These numbers


are important because you can use string slicing to extract them. For example, the first data item in a
line can be extracted using the slice line[76:76+12].

Your task is to find the minimum and maximum change in GDP for the years 1969 through 2015 and
to find the GDP value for those two years. Se the sample output below. Your program wil prompt
for an input file and then display the output.

You must use specific functions as described below and you are not alowed to use collections such as
lists, tuples and dictionaries.

Mirmir tests: I can provide any file with the same format as the provided GDP.txt—the number of
rows wil be the same (so you can select lines 9 and 44), but the number of columns may be diferent
(i.e. diferent years).

Asignment Notes

Divide-and-conquer is an important problem solving technique. In fact, inside of every chalenging
problem is a simpler problem trying to get out. Your chalenge is to find those simpler problems and
divide the problem into smaler pieces that you can conquer. Functions can asist in this approach.
We provide skeleton code on Mirmir that has al the function skeletons for you to fil in.
Hint: build the following functions one at a time and test each one before moving on to the next.

1. The open_file()function takes no arguments and returns a file pointer. It repeatedly
prompts for file names until a file succesfully opens. Use the try-except construct
checking for the FileNotFoundError exception. You do not need to check that the
filename is correct—simply check that the file opened. The simplest version of this function
has no eror checking so the body of the function is simply
fp = open(“GDP.txt”)
return fp
Hint: Start with that as your function body and add the try-except eror checking later.

2. The find_min_percent(line) function takes one argument, one line (str) from the
GDP.txt file. It returns the minimal value (float) in that line and an index (int) indicating
where the minimal value is in the line (you get to decide what value is the index—there are
multiple possibilities). You can return two values simply by separating them by commas:
return min_value, min_value_index
Here is an algorithm to find a minimal value of a series of values that you read. The algorithm
is writen in pseudo-code so it looks somewhat like Python, but needs details of Python to be
complete:
min_value = 10000000 # some large value
for each value
if value 8.1f}{:>6d}{:>18.2f}"

6. The main() function loops through the file to aces lines 9 and 44, and sets up values for the
cal to display function.

7. You are not alowed to use collections such as list, tuples and dictionaries. Specificaly, do not
use the string .split() method—it returns a list. Use string slicing to extract values from
lines in the file.

8. You wil be responsible for adhering to items 1-6 of the Coding Standard.


Suggested Procedure

• Solve the problem using pencil and paper first. You cannot write a program until you have
figured out how to solve the problem. This first step can be done collaboratively with another
student. However, once the discussion turns to Python specifics and the subsequent writing of
Python, you must work on your own.

• Use Anaconda to create a new program. Use the required file name (proj03.py).

• Write a simple version of the program, e.g. open the file and print al the lines in the file. Run
the program and track down any erors. Add one function and retest.

• Use the Mirmir system to turn in the first version of your program.

• Cycle through the steps to incrementaly develop your program:

o Edit your program to add new capabilities.


o Run the program and fix any erors.

• Use the Mirmir system to submit your final version.

Sample Output

Test 1

Enter a file name: xxxx
Error. Please try again
Enter a file name: GDP.txt

Gross Domestic Product
min/max change year GDP (trillions)
min -2.8 2009 14.42
max 7.3 1984 4.04

Grading Rubric

Computer Project #3 Scoring Summary


General Requirements

__0__ ( 5 pts) Coding standard


Program Implementation

__0__ (10 pts) Function (no Mirmir test): open_file

__0__ (10 pts) Function Test 2: find_min_percent

__0__ ( 5 pts) Function Test 3: find_max_percent

__0__ (15 pts) Function Test 4: find_gdp

__0__ (10 pts) Function (no Mirmir test): display

__0__ (20 pts) Test 1

 

联系我们
  • QQ:99515681
  • 邮箱:99515681@qq.com
  • 工作时间:8:00-21:00
  • 微信:codinghelp
热点标签

联系我们 - QQ: 99515681 微信:codinghelp
程序辅导网!