Hi all,
New to the forum here, and coding in general. I am posting because I am having a problem with a simple program intended to act as a word, character and line counter, with each counter being its own function.
I keep running into the same problem over and over. Everything works fine if I don't break them out into separate functions. But when I break them into individual functions, something breaks. If I call the linecount function first, then it will work fine, but the other two return a value of 0. If I call the other two first, then the linecount function will will return a value of 0.
I am sure something is happening as variables are passed from the main function to linecount, but I can't seem to understand why it's changing. My understanding is that passing a variable into a function as a parameter wouldn't alter the original value (it's only modified locally within the local function).
Anyway, here is what I have. I removed most of the comments so it was shorter and quicker for people to read. If that was a bad move (again, I am a complete beginner) then let me know and i will post the commented version.
I am not looking for someone to fix my code, as much as help me understand what I am missing.
def linecount(x):
lines = 0
for line in x:
lines += 1
return lines
def wordcount(wc_target):
split_words = wc_target.split(None)
words = len(split_words)
return words
def charactercount(cc_target):
characters = 0
for number in cc_target:
characters += 1
return characters
def main():
print """
This program will evaluate a text (.txt) file, count the number
of lines, words, and total characters in the file you enter then
display each value.
------------------------------------------------------------
"""
filename = raw_input("Please enter the name of the file you would like to count: ")
readfile = open(filename)
listdata = readfile.read()
print "For the file %s, here are your values:" % filename
print "Lines :", linecount(readfile)
print "Words :", wordcount(listdata)
print "Characters:", charactercount(listdata)
readfile.close()
main()
thanks for any thoughts, guidance!