Igorati wrote:
#This program will ask for a user to imput numbers. The numbers will then
be calculated
#to find the statistical mean, mode, and median. Finallly the user will be
asked
#if he would like to print out the answers.
>
numbers = [ ] print 'Enter numbers to add to the list. (Enter 0 to quit.)'

so 0 is not a valid value ? Since you only want numbers, any alpha char could be used to exit...

def getint():
     return int(raw_input('Number? '))

What happens if the user type "foo" ?

numbers = sorted(iter(getint, 0))

numbers
[2, 3, 5, 7]
def variable_median(x):
return sorted(x)[len(x)//2]
def variable_mode(x):
counts = {}
for item in x:
counts[x] = counts.get(x, 0) + 1
return sorted(counts, key=counts.__getitem__, reverse=True)[0]




s = variableMean(numbers)
y = variableMedian(numbers)
t = variableMode (numbers)

import pickle
pickle.dump((s, y, t), file('avg.pickle', 'w'))

Take care of removing hard-coded filenames... (this is ok for testing but should not be released like this)



print 'Thank you! Would you like to see the results after calculating' print 'The mode, median, and mean? (Please enter Yes or No)' print 'Please enter Yes or No:'


if raw_input == yes:

First, raw_input() is a function, you need to use the () operator to *call* (execute) the function.


Then, raw_input() returns a string. A string is something between quotes. Yes is a symbol (a variable name, function name or like), not a string. And since this symbol is not defined, you have an exception.

What you want to do is to compare the string returned by the raw_input() function to the literral string "Yes". What you're doing in fact is comparing two symbols, one being defined, the other one being undefined...

  if raw_input() == "Yes":


f = open("avg.py","r")
Same remark as above about hard-coded file names...

avg.py = f.read()

Notice that the dot is an operator. Here you trying to access the attribute 'py' of an (actually inexistant) object named 'avg'. What you want is to bind the data returned by f.read() to a variable.


      data = f.read()


    print 'The Mean average is:', mean
    print 'The Median is:', meadian
    print 'The Mode is:', mode

At this time, mean, meadian and mode are undefined symbols. Since you used the pickle module to persist your data, you should use it to unserialize'em too. The pickle module is well documented, so you may want to read the manual.



I got the error:

Traceback (most recent call last):
  File "C:\Python24\Lib\New Folder\Wade_StoddardSLP3-2.py", line 9, in ?
    numbers = sorted(iter(getint, 0))
  File "C:\Python24\Lib\New Folder\Wade_StoddardSLP3-2.py", line 7, in
getint
    return int(raw_input('Number? '))
TypeError: 'str' object is not callable

Can't tell you since I'm running python 2.3.x here (sorted() is new in 2.4)

and this one for my if statement:

Traceback (most recent call last):
  File "C:\Python24\Lib\New Folder\Wade_StoddardSLP3-2.py", line 39, in ?
    if raw_input == Yes:
NameError: name 'Yes' is not defined

See above.

I cannot understand how I can define yes so that when they type yes the
data is printed out.

Yes = 'yes' ?-)

Also if they type no how do I make the program do
nothing. Or is that just infered.

May I suggest that you :
- subscribe to the 'tutor' mailing-list (it's a ml for absolute beginners)
- do some tutorials (there's one with the doc, and many others freely available on the net)
- use the interactive python shell to test bits of your code ?


HTH
Bruno
--
bruno desthuilliers
python -c "print '@'.join(['.'.join([w[::-1] for w in p.split('.')]) for p in '[EMAIL PROTECTED]'.split('@')])"
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to