On Sun, Dec 01, 2013 at 08:43:46AM -0500, bruce wrote:
> hmm...
> 
> two questions. (new to cmdline py)
> 
> tried typing in what was typed in above in the python shell:
> 
> for i in range(1, 101):
>     print "2" in str(i)
> 
> this did nothing..

Curious. Which Python shell did you use?

I would expect that you get a prompt ">>>" (without the quotes). I've 
changed the prompt in my Python to "py>", but by default you should have 
">>>". Then, when you hit return at the end of the first line, you 
should get the second level prompt, "...". You'll need to add at least 
one space, or tab, to indent the second line. Then when you hit enter 
again you'll get a ... prompt, Enter one last time and the code will 
run. Here's what I get (changing 101 to a smaller number for brevity:


py> for i in range(1, 11):
...     "2" in str(i)
...
False
True
False
False
False
False
False
False
False
False



However, I may have inadvertently been misleading. Outside of the 
interactive shell, even though that code will run, it won't display any 
output. Only in the interactive shell does that print True and False as 
above.

Outside of the interactive shell, you need to use the print statement or 
function to see the output, otherwise Python calculates the answer and 
then doesn't do anything with it. So it may be better to write this as:

for i in range(1, 101):
    print ("2" in str(i))


which will work anywhere.



> def aa():
>   for i in range(1, 101):
>     print "2" in str(i)
> 
> aa()
> 
> error::
> >>> aa()
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
> NameError: name 'aa' is not defined

That is remarkable. I cannot explain this error. Are you using IDLE or 
some other shell?



> the other question, what does the "in" function within py do?? I've
> used str.find() to look if a substring is present, but didn't know a
> "in" even exists..!

The "in" operator tests whether one object includes another object. For 
example, with strings it tests substrings:


"hat" in "what"
=> returns True

"hat" in "h-a-t"
=> returns False

With lists and tuples, it tests to see if an item is the given value:

23 in [1, 5, 23, 99]
=> returns True

"dog" in ["cat", "dog", "mouse"]
=> returns True

"dog" in ["cats", "dogs", "mice"]
=> return False


But it only looks one level deep!

23 in [1, 2, 3, [22, 23, 24], 5, 6]
=> returns False

 
With dictionaries, it checks to see if the given object is a key:

5 in {2: "two", 5: "five", 7: "seven"}  # {key: value}
=> returns True

but not a value:

"five" in {2: "two", 5: "five", 7: "seven"}
=> returns False


-- 
Steven
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to