On Friday, October 24, 2014 12:36:23 PM UTC-7, Seymore4Head wrote:
> On Fri, 24 Oct 2014 12:25:33 -0700 (PDT), [email protected] wrote:
>
> >On Friday, October 24, 2014 12:12:10 PM UTC-7, Seymore4Head wrote:
> >> On Fri, 24 Oct 2014 11:57:12 -0700 (PDT), [email protected] wrote:
> >>
> >> >On Friday, October 24, 2014 11:17:53 AM UTC-7, Seymore4Head wrote:
> >> >> On Fri, 24 Oct 2014 11:52:15 -0600, Ian Kelly <[email protected]>
> >> >> wrote:
> >> >>
> >> >> >On Fri, Oct 24, 2014 at 11:03 AM, Seymore4Head
> >> >> ><[email protected]> wrote:
> >> >> >> Actually I was a little frustrated when I added that line back in as
> >> >> >> the other lines all work.
> >> >> >> Using list(range(10)) Doesn't throw an error but it doesn't work.
> >> >> >>
> >> >> >> http://i.imgur.com/DTc5zoL.jpg
> >> >> >>
> >> >> >> The interpreter. I don't know how to use that either.
> >> >> >
> >> >> >Try both of these in the interpreter, and observe the difference:
> >> >> >
> >> >> >7 in range(10)
> >> >> >
> >> >> >"7" in range(10)
> >> >> >
> >> >> >Do you understand what the difference between 7 and "7" is?
> >> >>
> >> >> I do understand that. 7 is a number and "7" is a string.
> >> >> What my question was...and still is...is why
> >> >> Python 3 fails when I try using
> >> >> y=1 800 get charter
> >> >>
> >> >> y in range str(range(10))
> >> >> should work because y is a string and str(range(10)) should be
> >> >> "y" in str(1) fails.
> >> >> It doesn't give an error it's just not True when y is a number.
> >> >>
> >> >> These hints are just not working. I am too thick for hints. :)
> >> >> If you could use it in the code, I might understand.
> >> >> The other work arounds that were posted work.
> >> >> I have used them. str(range(10)) doesn't work.
> >> >>
> >> >> import string
> >> >> def nametonumber(name):
> >> >> lst=[]
> >> >> nx=[]
> >> >> digit=[]
> >> >> digit="".join(str(i) for i in range(10))
> >> >> for x in name:
> >> >> lst.append(x)
> >> >> for y in (lst):
> >> >> if y in list(range(1,10)):
> >> >> #if y in "1234567890":
> >> >> #if y.isdigit():
> >> >> #if y in digit:
> >> >> #if y in string.digits:
> >> >> nx.append(y)
> >> >> if y in " -()":
> >> >> nx.append(y)
> >> >> if y in "abc":
> >> >> nx.append("2")
> >> >> if y in "def":
> >> >> nx.append("3")
> >> >> if y in "ghi":
> >> >> nx.append("4")
> >> >> if y in "jkl":
> >> >> nx.append("5")
> >> >> if y in "mno":
> >> >> nx.append("6")
> >> >> if y in "pqrs":
> >> >> nx.append("7")
> >> >> if y in "tuv":
> >> >> nx.append("8")
> >> >> if y in "wxyz":
> >> >> nx.append("9")
> >> >> number="".join(e for e in nx)
> >> >> return number
> >> >> a="1-800-getcharter"
> >> >> print (nametonumber(a))#1800 438 2427 837
> >> >> a="1-800-leo laporte"
> >> >> print (nametonumber(a))
> >> >> a="1 800 dialaho"
> >> >> print (nametonumber(a))
> >> >>
> >> >> Please
> >> >
> >> >Your code here is actually pretty close to a correct answer. Just a few
> >> >things to consider...
> >> >
> >> >- Why are you converting your name string to a list? It is unnecessary.
> >> >When you do "for y in <some string>", then y will still be single
> >> >characters on each iteration of the loop.
> >> >
> >> >- "if y in string.digits" should work fine.
> >> >
> >> >- "if y in list(range(1,10)" won't work for two reasons: First, it
> >> >creates a list of numbers, not strings. Second, even if it did, it would
> >> >be missing the "0" digit.
> >> >
> >> >- At the end, when you convert your list to a string, you don't need to
> >> >use list comprehension, since nx is already a list. number = "".join(nx)
> >> >should work fine.
> >> >
> >> >Also, in general, you need to stop and slow down and think like a
> >> >programmer. If you get an error, your instinct shouldn't be to just hack
> >> >at it to make the error go away. Look at the error and try to make sense
> >> >of it. Learn what the error means and try to fix the core problem.
> >> >
> >> >And for @#$%'s sake...stop saying "It isn't working" and not elaborating.
> >> > You've been told by every other post in this thread to show us what you
> >> >did and what the error was. You've also been told to *NOT* retype what
> >> >you see and to copy/paste your code and the error because when you make a
> >> >typo when copying, we might see a problem that doesn't exist and then you
> >> >just get more confused.
> >>
> >> Ok I think I may have the question you guys are looking for.
> >> I just posted it.
> >> See above.
> >>
> >> But it's still broke. :(
> >
> >str(range(10)) doesn't do what you think it does.
> >
> >Run 'print(str(range(10)))' and look at what you get.
>
> Yeah, I know that. My question is why?
> The answer was that Python 3 only stores the min and max values but
> you can still iterate over them.
> I don't think that means what I think it means.
"You can iterate over them" pretty much just means you can use them as the
source of a 'for' loop. But in your case, when you're calling 'for y in
str(range(10))', you're not using 'range(10)' as the source of your loop,
you're using the result of a str() function call, and you're calling str() on
range(), which doesn't return a concrete value in Python 3. If you try to
print a range(), you're just getting a string containing your original call to
range.
And that's why you're seeing the 1 and a in your output. str(range(10))
returns the string 'range(10)'.
Like I said in a previous post, use 'string.digits'. Try this test code and
see what you get:
import string
name="123-xyz-abc"
print("string.digits is", string.digits)
for x in name:
if x in range(10):
print ("Range",(x))
if x in string.digits:
print ("string.digits",(x))
--
https://mail.python.org/mailman/listinfo/python-list