codehaus


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Python Program Help


I can't seem to figure out what I am doing wrong.  I have tried everything.  This is what it is supposed to do:

(1) Prompt the user for a title for data. Output the title. (1 pt)

Ex:

Enter a title for the data:
Number of Novels Authored
You entered: Number of Novels Authored

(2) Prompt the user for the headers of two columns of a table. Output the column headers. (1 pt)

Ex:

Enter the column 1 header:
Author name
You entered: Author name

Enter the column 2 header:
Number of novels
You entered: Number of novels

(3) Prompt the user for data points. Data points must be in this format: string, int. Store the information before the comma into a string variable and the information after the comma into an integer. The user will enter -1 when they have finished entering data points. Output the data points. Store the string components of the data points in a list of strings. Store the integer components of the data points in a list of integers. (4 pts)

Ex:

Enter a data point (-1 to stop input):
Jane Austen, 6
Data string: Jane Austen
Data integer: 6

(4) Perform error checking for the data point entries. If any of the following errors occurs, output the appropriate error message and prompt again for a valid data point.

If entry has no comma
Output: Error: No comma in string. (1 pt)
If entry has more than one comma
Output: Error: Too many commas in input. (1 pt)
If entry after the comma is not an integer
Output: Error: Comma not followed by an integer. (2 pts)

Ex:

Enter a data point (-1 to stop input):
Ernest Hemingway 9
Error: No comma in string.

Enter a data point (-1 to stop input):
Ernest, Hemingway, 9
Error: Too many commas in input.

Enter a data point (-1 to stop input):
Ernest Hemingway, nine
Error: Comma not followed by an integer.

Enter a data point (-1 to stop input):
Ernest Hemingway, 9
Data string: Ernest Hemingway
Data integer: 9

(5) Output the information in a formatted table. The title is right justified with a minimum field width value of 33. Column 1 has a minimum field width value of 20. Column 2 has a minimum field width value of 23. (3 pts)

Ex:

        Number of Novels Authored
Author name         |       Number of novels
--------------------------------------------
Jane Austen         |                      6
Charles Dickens     |                     20
Ernest Hemingway    |                      9
Jack Kerouac        |                     22
F. Scott Fitzgerald |                      8
Mary Shelley        |                      7
Charlotte Bronte    |                      5
Mark Twain          |                     11
Agatha Christie     |                     73
Ian Flemming        |                     14
J.K. Rowling        |                     14
Stephen King        |                     54
Oscar Wilde         |                      1

(6) Output the information as a formatted histogram. Each name is right justified with a minimum field width value of 20. (4 pts)

Ex:

         Jane Austen ******
     Charles Dickens ********************
    Ernest Hemingway *********
        Jack Kerouac **********************
 F. Scott Fitzgerald ********
        Mary Shelley *******
    Charlotte Bronte *****
          Mark Twain ***********
     Agatha Christie *************************************************************************
        Ian Flemming **************
        J.K. Rowling **************
        Stephen King ******************************************************
         Oscar Wilde *

Here is my code:

data_title = input("Enter a title for the data:\n")
print("You entered:", data_title)
h1 = input("\nEnter the column 1 header:\n")
print("You entered:", h1)
h2 = input("\nEnter the column 2 header:\n")
print("You entered:", h2)
point = input("\nEnter a data point (-1 to stop input):\n")

data = []
while point != "-1":
    words = point.split(",")
    if len(words) == 1:
        print("Error: No comma in string.")
    elif len(words) > 2:
        print("Error: Too many commas in input. ")
    else:
        try:
            author = words[0]
            num_novels = int(words[1])
            print("Author:", author)
            print("Number of Novel(s):", num_novels)
            data.append((author, num_novels))
        except ValueError:
            print("Error: Comma not followed by an integer.")
    point = input("\nEnter a data point (-1 to stop input):\n")

print("%33s" % data_title)
print("%-20s|%23s" % (h1, h2))
print("-" * 44)
for item in data:
    print("%-20s|%23d" % (item[0], item[1]))
for item in data:
    print("%20s %s" % (item[0], '*' * item[1]))

I get this error:

Traceback (most recent call last):
  File "main.py", line 1, in <module>
    data_title = input("Enter a title for the data:\n")
EOFError: EOF when reading a line

And can't seem to figure out how to correct it any help would be greatly appreciated.