New to Python. For in loops curiosity

Ned Batchelder ned at nedbatchelder.com
Wed May 14 09:41:48 EDT 2014


On 5/13/14 11:38 PM, Leonardo Petry wrote:
> Hi All,
>
> So I am starting with python and I have been working on some simple exercises.
>
> Here is something I found curious about python loops
>
> This loop run each character in a string
>
> def avoids(word,letters):
> 	flag = True
> 	for letter in letters:
> 		if(letter in word):
> 			flag = False
> 	return flag
>
> The loop below (at the bottom) runs each line of the file
>
> fin = open('wordplay.txt');
> user_input = raw_input('Enter some characters: ')
> count = 0
> for line in fin:
>      word = line.strip()
>      if(avoids(word, user_input)):
>      	count += 1;
>
> This is just too convenient.
> Basically my question is: Why is python not treating the contents of wordplay.txt as one long string and looping each character?
>
> Any comment is greatly appreciate. Thanks
>
>

Every class can decide for itself how it will behave when iterated over 
(including deciding whether it can be iterated at all).   File objects 
produce lines, strings produce characters, lists produce elements, 
dictionaries produce keys.  Other objects do more exotic things.

You might find this helpful:  http://bit.ly/pyiter  It's a PyCon talk 
all about iteration in Python, aimed at new learners.

-- 
Ned Batchelder, http://nedbatchelder.com




More information about the Python-list mailing list