Re: [Tutor] largest and smallest numbers
You've got upper and lower bounds - maybe you could do a binary search to find the max exactly? It should only take the same number of steps again... On 9/25/07, Terry Carroll <[EMAIL PROTECTED]> wrote: > On Mon, 24 Sep 2007, Christopher Spears wrote: > > > How can I find the largest float and complex numbers? > > That's an interesting question.. > > I just tried this: > > x = 2.0 > while True: > x = x*2 > print x > if repr(x) == "1.#INF": break > > to just keep doubling X until Python began representing it as infinity. > My output: > > 4.0 > 8.0 > 16.0 > 32.0 > 64.0 > 128.0 > . . . > 137438953472.0 > 274877906944.0 > 549755813888.0 > 1.09951162778e+012 > 2.1990232e+012 > 4.3980465111e+012 > . . . > 2.24711641858e+307 > 4.49423283716e+307 > 8.98846567431e+307 > 1.#INF > > So I'd say, the answer is somewhere between 8.98846567431e+307 and double > that. > > On complex numbers, I'm not so sure. My math is rusty. Is there a concept > of "greater than" or "largest" in complex numbers on different axis? > Which is larger, 4+2i or 2+4i? > > >>> complex(4,2) > (4+2j) > >>> complex(2,4) > (2+4j) > >>> complex(4,2) > complex(2,4) > Traceback (most recent call last): > File "", line 1, in > TypeError: no ordering relation is defined for complex numbers > > ___ > Tutor maillist - Tutor@python.org > http://mail.python.org/mailman/listinfo/tutor > ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] python problem
On 9/25/07, Chris <[EMAIL PROTECTED]> wrote: > I have this GUESSING GAME code found below: > - > import random > number = random.randint(1, 101) > print "I've thought of a number between 1 and 100." > print "Try and guess it!" > print > guess = input( "What's your guess? ") > while guess != number: > if guess > number: > print "Your guess is too high." > else: #elif guess < number: > print "Your guess is too low." > guess = input( "What's your next guess? " ) > print "Congratulations! You guessed the number." > > What do I have to do to the code so that the Guessing Game that tries to > guess a number the user has thought of. (Make sure it can tell if the user > tries to cheat, e.g. by changing the number during the game?? > > I hope you can help! > Chris I hope so too. You can have the user enter the "secret number" at the beginning of the game, and the computer can check it's guess against the secret number. If the computer's guess is higher than the number, the user can reply with "<" or "Lower". If the computer's guess is lower than the secret number, the user can give the computer the hint of ">" or "Higher", whatever. But since the secret number is stored in a variable at the beginning of the game, the user can't 'cheat' by changing the number the computer is trying to guess, in the middle of the game. Just have a test that checks the computer's guess against the number stored in the secret number variable. I recently ran across this problem while working through the Chapter 3 Challenges in Michael Dawson's _Programming Python for the Absolute Beginner, Second Edition_. Challenge #4 : Here's a bigger challenge. Write the pseudocode for a program where the player and the computer trade places in the number guessing game. That is, the player picks a random number between 1 and 100 that the computer has to guess. Before you start, think about how you guess. If all goes well, try coding the game. So my question for you, is: Where is your pseudocode? The challenge is to plan the game beforehand using pseudocode. Have you thought about how you guess when you play the Guess-A-Number game? Show us your pseudocode for the game. -- bhaaluu at gmail dot com ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] Need help speeding up algorithm. (Terry Carroll)
Terry, I liked your answer! ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] largest and smallest numbers (Linpeiheng)
On Mon, 24 Sep 2007, Terry Carroll write: >My math is rusty. Is there a concept of "greater than" >or "largest" in complex numbers on different axis? Which >is larger, 4+2i or 2+4i? In fact, complex numbers can not compare directly. People always compare complex numbers with their 'model'. For example, sqrt(a**2 + b**2) is the 'model' of a+bi. ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] largest and smallest numbers
On Tue, 25 Sep 2007, John Fouhy wrote: > You've got upper and lower bounds - maybe you could do a binary search > to find the max exactly? It should only take the same number of steps > again... I thought of that; and then I thought I'd rather go home and have dinner. ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] Need help speeding up algorithm.
On Tue, 25 Sep 2007, Ian Witham wrote: > As I was using a list comprehension I wasn't sure how to make the > calculations stop when the result of integer division == 0. I don't see how to do that, either. Someone on this list (sorry, I forget who) once suggested that the list comprehension should support a "while" predicate, similar to the "if" filter. Such a predicate would not just filter the generated list, but actually stop its computation. I think that would be a great idea, and this is a good use case why. Absent that capability, your only alternatives that I see are either 1) use the if-filter to filter out the list entries beyond those needed; or 2) force the programmer to work backwards to figure out when that while-condition would be hit, and bake that into something like a range (as you did). The downside of #1 is the computational expense: you generate a lot of potential list enties, just to throw them away. The downside of #2 is that it's programmer-intensive, wasting programmer time, and prone ro errors, as you discovered. Now that you've solved your code, here's the function I came up with. As I said, it resists implimentation as a list comprehension: def numfaczeroes(n): """ return the count of trailing zeroes from n! e.g., 10! = 3628800; count of trailing zeros = 2 """ exponent = 1 fivecount = 0 while (n//(5**exponent)) > 0: fivecount += n//(5**exponent) exponent += 1 return fivecount But what I like about is is that the only math is integer division and addition (and all the addition is simple incrementation). No use of logarithms, not even any multiplication (which is just perverse, when you think about the fact that it's analyzing factorials, which are pure multiplication). ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] Need help speeding up algorithm.
Terry Carroll wrote: > On Tue, 25 Sep 2007, Ian Witham wrote: > >> As I was using a list comprehension I wasn't sure how to make the >> calculations stop when the result of integer division == 0. > > I don't see how to do that, either. Someone on this list (sorry, I forget > who) once suggested that the list comprehension should support a "while" > predicate, similar to the "if" filter. Such a predicate would not just > filter the generated list, but actually stop its computation. Take a look at itertools.takewhile() > Now that you've solved your code, here's the function I came up with. As > I said, it resists implimentation as a list comprehension: > > def numfaczeroes(n): > """ > return the count of trailing zeroes from n! > e.g., 10! = 3628800; count of trailing zeros = 2 > """ > exponent = 1 > fivecount = 0 > while (n//(5**exponent)) > 0: > fivecount += n//(5**exponent) > exponent += 1 > return fivecount Here is a version using takewhile() and a generator expression: from itertools import count, takewhile def numfaczeroes2(n): def while_(e): return n//(5**e) > 0 return sum(n//(5**exponent) for exponent in takewhile(while_, count(1))) It is quite a bit slower, though; probably because of the extra function call introduced for while_(): from timeit import Timer print min(Timer('for i in range(1, 101): numfaczeroes(i)', setup='from __main__ import numfaczeroes').repeat(number=1000)) print min(Timer('for i in range(1, 101): numfaczeroes2(i)', setup='from __main__ import numfaczeroes2').repeat(number=1000)) prints: 0.14363694191 0.412271022797 You could also encapsulate the condition in a generator function: def numfaczeroes3(n): def gen(n): e = 1 while (n//(5**e)) > 0: yield e e += 1 return sum(n//(5**exponent) for exponent in gen(n)) This is faster than numfaczeroes2 but still not as fast as the original. Kent ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
[Tutor] data type conversion for print statement
Hello, I have a print statement where I use concatenation of variables with "+" to avoid extra whitespaces. The variables are mixed (float/int). How can I convert them all to strings to have a clean print statement? example print str(var1)+"and this "+str(var2)+"needs to check "+str(var3) how can I convert var1, var2, var3 all at once? This would avoid errors because of mixed data types. BTW, why does a statment like print var1, var2 automatically add spaces between the variables? Thanks in advance for your help. Timmie ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] data type conversion for print statement
Excerpt from an email Danny Yoo sent to me and the list in 2005. I had the same question. ;-) Hi Tom, The 'print' statement is hardcoded to add a space between elements. print is meant to make output easy, at the cost of control. If we need more fine-grained control over output, we may want to take a look at the sys.stdout object; it's a file object that corresponds to the output we send to the user. ### >>> import sys >>> sys.stdout ', mode 'w' at 0x2a060> ### As a file object, we can use the methods that files provide: http://www.python.org/doc/lib/bltin-file-objects.html But the one we'll probably want is 'write()': the write() method of a file object lets us send content out, without any adulteration: ## >>> import sys >>> for i in range(5): ... sys.stdout.write('hello' + str(i)) ... hello0hello1hello2hello3hello4 ## We might have to be a little bit more careful with write(), because unlike the print statement, the write() method isn't magical, and won't automatically try to coerse objects to strings. The code above shows that we str() each number, and for good reason. If we try without it, we'll get a TypeError: ## >>> sys.stdout.write(42) Traceback (most recent call last): File "", line 1, in ? TypeError: argument 1 must be string or read-only character buffer, not int ## So it just means we'll have to be more aware about the type of a value when we use write(). For some more information, see: http://www.python.org/doc/tut/node9.html#SECTION00920 http://www.python.org/doc/tut/node9.html#SECTION00910 Please feel free to ask more questions. Good luck! On 9/25/07, Tim <[EMAIL PROTECTED]> wrote: > > Hello, > I have a print statement where I use concatenation of variables with "+" > to > avoid extra whitespaces. The variables are mixed (float/int). > > How can I convert them all to strings to have a clean print statement? > > example > print str(var1)+"and this "+str(var2)+"needs to check "+str(var3) > > how can I convert var1, var2, var3 all at once? > > This would avoid errors because of mixed data types. > > BTW, why does a statment like > print var1, var2 > automatically add spaces between the variables? > > Thanks in advance for your help. > > Timmie > > ___ > Tutor maillist - Tutor@python.org > http://mail.python.org/mailman/listinfo/tutor > ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] data type conversion for print statement
Tim wrote: > Hello, > I have a print statement where I use concatenation of variables with "+" to > avoid extra whitespaces. The variables are mixed (float/int). > > How can I convert them all to strings to have a clean print statement? > > example > print str(var1)+"and this "+str(var2)+"needs to check "+str(var3) > > how can I convert var1, var2, var3 all at once? Use string formatting: print '%sand this %s needs to check %s' % (var1, var2, var3) The %s format calls str() for its parameter. > BTW, why does a statment like > print var1, var2 > automatically add spaces between the variables? Because it is convenient. Use string formatting to get closer control. Kent ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
[Tutor] Take if offline
Anytime someone posts in HTML, or posts without a subject, or accidentally hijacks a thread, or top-posts, or writes in caps, a couple of posters pop up and complain. Rather than posting to the entire list, I think it'd be best if you send your complaint directly to the "offending" user. I'd prefer to read about Python not read lessons in net/mail-list etiquette. Thanks, Mike ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] Take if offline
So by your own rules, you should have sent that to the offending user(s). - Original Message - From: "Hansen, Mike" <[EMAIL PROTECTED]> To: "python tutor" Sent: Tuesday, September 25, 2007 2:27 PM Subject: [Tutor] Take if offline > Anytime someone posts in HTML, or posts without a subject, or > accidentally > hijacks a thread, or top-posts, or writes in caps, a couple of posters > pop up > and complain. Rather than posting to the entire list, I think it'd be > best if > you send your complaint directly to the "offending" user. I'd prefer to > read > about Python not read lessons in net/mail-list etiquette. > > Thanks, > > Mike > ___ > Tutor maillist - Tutor@python.org > http://mail.python.org/mailman/listinfo/tutor > ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] largest and smallest numbers (Linpeiheng)
林培恒 wrote: > On Mon, 24 Sep 2007, Terry Carroll write: > >> My math is rusty. Is there a concept of "greater than" >> or "largest" in complex numbers on different axis? Which >> is larger, 4+2i or 2+4i? > > In fact, complex numbers can not compare directly. People always compare > complex numbers with their 'model'. For example, sqrt(a**2 + b**2) is the > 'model' of a+bi. i think you mean "modulus". Also, you can get it directly. The abs builtin does it for you. >>> foo = 3+4j >>> print abs(foo) I don't think there is a direct way to the get the argument. You'd have to use arctan for that. -- ~noufal ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] Take if offline
Hansen, Mike wrote: > Anytime someone posts in HTML, or posts without a subject, or > accidentally > hijacks a thread, or top-posts, or writes in caps, a couple of posters > pop up > and complain. Rather than posting to the entire list, I think it'd be > best if > you send your complaint directly to the "offending" user. I'd prefer to > read > about Python not read lessons in net/mail-list etiquette. Hmmm. So instead, whenever someone complains about netiquette on-list we should post on-list complaining about it? I'm not sure that improves the situation any, especially if it sparks a discussion. Perhaps you should email your suggestion privately to the offending parties. :-) I definitely think this list is about how to be part of the Python community, as well as how to program in Python. Knowing how to participate in a mailing list is part of that. Maybe you could just skip those posts, there are not that many of them. Kent ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] data type conversion for print statement
Tim wrote: > Hello, > I have a print statement where I use concatenation of variables with "+" to > avoid extra whitespaces. The variables are mixed (float/int). > > How can I convert them all to strings to have a clean print statement? > > example > print str(var1)+"and this "+str(var2)+"needs to check "+str(var3) Well, if they're all ints or floats, you could do something like print "%fand this %fneeds to check %f"%(val1,val2,val3) but you'll get decimal points for everything. I suppose you could also do but it's a little less readable print "%sand this %sneeds to check %s"%tuple([str(x) for x in (val1,val2,val3)]) Both don't look very pythonic to me though. :( -- ~noufal ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] Take if offline
I agree with Kent... -- Michael Langford Phone: 404-386-0495 Consulting: http://www.TierOneDesign.com/ Entertaining: http://www.ThisIsYourCruiseDirectorSpeaking.com On 9/25/07, Kent Johnson <[EMAIL PROTECTED]> wrote: > > Hansen, Mike wrote: > > Anytime someone posts in HTML, or posts without a subject, or > > accidentally > > hijacks a thread, or top-posts, or writes in caps, a couple of posters > > pop up > > and complain. Rather than posting to the entire list, I think it'd be > > best if > > you send your complaint directly to the "offending" user. I'd prefer to > > read > > about Python not read lessons in net/mail-list etiquette. > > Hmmm. So instead, whenever someone complains about netiquette on-list we > should post on-list complaining about it? I'm not sure that improves the > situation any, especially if it sparks a discussion. Perhaps you should > email your suggestion privately to the offending parties. :-) > > I definitely think this list is about how to be part of the Python > community, as well as how to program in Python. Knowing how to > participate in a mailing list is part of that. Maybe you could just skip > those posts, there are not that many of them. > > Kent > ___ > Tutor maillist - Tutor@python.org > http://mail.python.org/mailman/listinfo/tutor > ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] data type conversion for print statement
Noufal Ibrahim wrote: > I suppose you could also do but it's a little less readable > print "%sand this %sneeds to check %s"%tuple([str(x) for x in > (val1,val2,val3)]) The %s formatter takes care of the string conversion, the list comprehension is not needed. Just use print "%sand this %sneeds to check %s" % (val1,val2,val3) ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] Take if offline
All jokes aside now (glad you took it that way Mike). Maybe I havn't gave the tutor enough attention, but I have never witnessed someone jump down anothers throat because they posted in all caps, didn't enter a subject etc... etc... The one time I have seen an argument (well heated debate) was about a subject entitled 'Losing the expressiveness of C' (or something similar), which I found pretty interesting. - Original Message - From: "Shawn Milochik" <[EMAIL PROTECTED]> To: "Darren Williams" <[EMAIL PROTECTED]> Sent: Tuesday, September 25, 2007 3:06 PM Subject: Re: [Tutor] Take if offline > No, not really. He had to give everyone the rule once. Otherwise, he'd > have to do it a hundred times a day, and monitor every single post to > find out who he had to inform. He'd end up doing not much else with > his life, and would flee to a monastery and give up coding forever. > You wouldn't want that to happen, would you? > > > > On 9/25/07, Darren Williams <[EMAIL PROTECTED]> wrote: >> So by your own rules, you should have sent that to the offending user(s). >> >> - Original Message - >> From: "Hansen, Mike" <[EMAIL PROTECTED]> >> To: "python tutor" >> Sent: Tuesday, September 25, 2007 2:27 PM >> Subject: [Tutor] Take if offline >> >> >> > Anytime someone posts in HTML, or posts without a subject, or >> > accidentally >> > hijacks a thread, or top-posts, or writes in caps, a couple of posters >> > pop up >> > and complain. Rather than posting to the entire list, I think it'd be >> > best if >> > you send your complaint directly to the "offending" user. I'd prefer to >> > read >> > about Python not read lessons in net/mail-list etiquette. >> > >> > Thanks, >> > >> > Mike >> > ___ >> > Tutor maillist - Tutor@python.org >> > http://mail.python.org/mailman/listinfo/tutor >> > >> ___ >> Tutor maillist - Tutor@python.org >> http://mail.python.org/mailman/listinfo/tutor >> > > > -- > Please read: > http://milocast.com/2007/07/31/this-i-believe/ > ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] Need help speeding up algorithm.
> > > from itertools import count, takewhile > > def numfaczeroes2(n): > def while_(e): > return n//(5**e) > 0 > return sum(n//(5**exponent) for exponent in takewhile(while_, > count(1))) > > > It is quite a bit slower, though; probably because of the extra function > call introduced for while_(): > I sped this up slightly by using a lambda function instead of while_(), but not by much. My solution still took over 5 seconds on the Sphere Judge machine. The top Python solution takes around 0.6 seconds! While I haven't submitted Terry's solution, my Timer comparisons suggest that it would take around 1.5 seconds to process the data. This doesn't take into account any time used inputting and outputting the test data. If anyone knows the 0.6 second solution feel free to share! Ian. ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] Need help speeding up algorithm.
On Wed, 26 Sep 2007, Ian Witham wrote: > My solution still took over 5 seconds on the Sphere Judge machine. How much data are they throwing at you? For the sample data they provide on the website, your first "slow" solution finished on my machine almost instantaneously. ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] Need help speeding up algorithm.
On 9/26/07, Terry Carroll <[EMAIL PROTECTED]> wrote: > > On Wed, 26 Sep 2007, Ian Witham wrote: > > > My solution still took over 5 seconds on the Sphere Judge machine. > > How much data are they throwing at you? For the sample data they provide > on the website, your first "slow" solution finished on my machine almost > instantaneously. Approximately 10 numbers in the range 1 <= N <= 10, and they run your solution on a Pentium III 700MHz. ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] Need help speeding up algorithm.
On 9/26/07, Terry Carroll <[EMAIL PROTECTED]> wrote: > > On Tue, 25 Sep 2007, Ian Witham wrote: > > def numfaczeroes(n): > """ > return the count of trailing zeroes from n! > e.g., 10! = 3628800; count of trailing zeros = 2 > """ > exponent = 1 > fivecount = 0 > while (n//(5**exponent)) > 0: > fivecount += n//(5**exponent) > exponent += 1 > return fivecount > I've come up with a couple of improvements to your function First I moved the (n//(5**exponent)) out of the while definition as it was being evaluated twice for each iteration: def numfaczeroes(n): """ return the count of trailing zeroes from n! e.g., 10! = 3628800; count of trailing zeros = 2 """ exponent = 1 fivecount = 0 count = (n//(5**exponent)) while count > 0: fivecount += count exponent += 1 count = (n//(5**exponent)) return fivecount This shaved about 10% off the run time. Then I got rid of the (n//(5**exponent)) altogether: def numfaczeroes(n): """ return the count of trailing zeroes from n! e.g., 10! = 3628800; count of trailing zeros = 2 """ fivecount = 0 count = n//5 while count > 0: fivecount += count count /= 5 return fivecount This shaved a further 40% off the run time! In practice, the Sphere Judge still takes 3 seconds to execute. So perhaps there is another bottleneck in my program -- maybe the input/output? Interestingly, print runs faster than sys.stout.write, but input() is far slower than sys.stdin.readline import sys for test in range(int(sys.stdin.readline())): n = int(sys.stdin.readline()) fivecount = 0 count = n/5 while count > 0: fivecount += count count /= 5 print fivecount ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
[Tutor] pickle question
hello, I have a question about the pickler. I'm using it to save objects in a program of mine that I can later reload to use. I was wondering how the pickle works and how it references the class module when I unpickle the pickled objects. for example I save some objects using the pickler, then I continue to develop my program so the class module is changed and additional attributes and methods are added. What happens now when I unpickle the pickled data and try to operate on it using the new methods and new attributes? here's an example if I didn't explain myself well... I create a class of data called 'var' class var: def __init__(self): self.data = numpy.array([1,2,3,4]) self.color = 'blue' def operate(self): return self.data+1 now create the instance: myVariable = var() I then pickle it to some file. and now I continue to develop my class module: class var: def __init__(self): self.data = numpy.array([1,2,3,4]) self.color = 'blue' self.name = 'bob' def operate(self): return self.data+1 def GetName(self): return self.name So now I unpickle my object from before using my new program. and I use MyVar.GetName(). does this work? If not, how do people usually handle this type of problem? or do they not use the pickler to save program data? big thanks! Jeff - Fussy? Opinionated? Impossible to please? Perfect. Join Yahoo!'s user panel and lay it on us.___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] data type conversion for print statement
> > The 'print' statement is hardcoded to add a space between elements. > print is meant to make output easy, at the cost of control. Well, that was a good example. I had prepared Notes for myself also along the same lines. print and softspace in python In python, whenever you use >>>print statement it will append a newline by default. If you don't want newline to be appended, you got use a comma at the end (>>>print 10,) When, you have a list of characters and want them to be printed together a string using a for loop, there was observation that no matter what there was space coming between the characters. No split or join methods helped. >>>list1=['a','b','c'] >>>for e in list1: print e, a b c >>># Without whitespace it will look like. >>>print "abc" abc The language reference says that print is designed to output a space before any object. And some search goes to find and that is controlled by softspace attribute of sys.stdout. Way to print without leading space is using sys.stdout.write() >>>import sys >>>for e in list1: sys.stdout.write(e) abc Reference manual says: A space is written before each object is (converted and) written, unless the output system believes it is positioned at the beginning of a line. This is the case (1) when no characters have yet been written to standard output, (2) when the last character written to standard output is "\n", or (3) when the last write operation on standard output was not a print statement. (In some cases it may be functional to write an empty string to standard output for this reason.) Not getting the last part as how you will write a empty string and use print not appending blank space in a single line http://phoe6.livejournal.com/50886.html -- O.R.Senthil Kumaran http://uthcode.sarovar.org ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] Take if offline
It also seems, for people like me, I've learned a lot of 'what not to do' by seeing peoples replies to others posts telling them.. well, what not to do. If all these were taken 'off list' you'd have a whole lot more people doing bad things because they wouldn't have seen yet not to do it, not to mention a whole lot more people having to send 'off-list' complaints to people, due to the same reason. On 9/25/07, Darren Williams <[EMAIL PROTECTED]> wrote: > > All jokes aside now (glad you took it that way Mike). Maybe I havn't gave > the tutor enough attention, but I have never witnessed someone jump down > anothers throat because they posted in all caps, didn't enter a subject > etc... etc... The one time I have seen an argument (well heated debate) > was > about a subject entitled 'Losing the expressiveness of C' (or something > similar), which I found pretty interesting. > > - Original Message - > From: "Shawn Milochik" <[EMAIL PROTECTED]> > To: "Darren Williams" <[EMAIL PROTECTED]> > Sent: Tuesday, September 25, 2007 3:06 PM > Subject: Re: [Tutor] Take if offline > > > > No, not really. He had to give everyone the rule once. Otherwise, he'd > > have to do it a hundred times a day, and monitor every single post to > > find out who he had to inform. He'd end up doing not much else with > > his life, and would flee to a monastery and give up coding forever. > > You wouldn't want that to happen, would you? > > > > > > > > On 9/25/07, Darren Williams <[EMAIL PROTECTED]> wrote: > >> So by your own rules, you should have sent that to the offending > user(s). > >> > >> - Original Message - > >> From: "Hansen, Mike" <[EMAIL PROTECTED]> > >> To: "python tutor" > >> Sent: Tuesday, September 25, 2007 2:27 PM > >> Subject: [Tutor] Take if offline > >> > >> > >> > Anytime someone posts in HTML, or posts without a subject, or > >> > accidentally > >> > hijacks a thread, or top-posts, or writes in caps, a couple of > posters > >> > pop up > >> > and complain. Rather than posting to the entire list, I think it'd be > >> > best if > >> > you send your complaint directly to the "offending" user. I'd prefer > to > >> > read > >> > about Python not read lessons in net/mail-list etiquette. > >> > > >> > Thanks, > >> > > >> > Mike > >> > ___ > >> > Tutor maillist - Tutor@python.org > >> > http://mail.python.org/mailman/listinfo/tutor > >> > > >> ___ > >> Tutor maillist - Tutor@python.org > >> http://mail.python.org/mailman/listinfo/tutor > >> > > > > > > -- > > Please read: > > http://milocast.com/2007/07/31/this-i-believe/ > > > > ___ > Tutor maillist - Tutor@python.org > http://mail.python.org/mailman/listinfo/tutor > ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] Take if offline
h!!! You posted in HTML and top posted! OH NO! I top-posted too! """ runs away screaming and bouncing off the walls like Daffy Duck """ _ From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Fiyawerx Sent: Tuesday, September 25, 2007 6:45 PM To: Darren Williams Cc: tutor@python.org; Shawn Milochik Subject: Re: [Tutor] Take if offline It also seems, for people like me, I've learned a lot of 'what not to do' by seeing peoples replies to others posts telling them.. well, what not to do. If all these were taken 'off list' you'd have a whole lot more people doing bad things because they wouldn't have seen yet not to do it, not to mention a whole lot more people having to send 'off-list' complaints to people, due to the same reason. On 9/25/07, Darren Williams mailto:[EMAIL PROTECTED]"[EMAIL PROTECTED]> wrote: All jokes aside now (glad you took it that way Mike). Maybe I havn't gave the tutor enough attention, but I have never witnessed someone jump down anothers throat because they posted in all caps, didn't enter a subject etc... etc... The one time I have seen an argument (well heated debate) was about a subject entitled 'Losing the expressiveness of C' (or something similar), which I found pretty interesting. - Original Message - From: "Shawn Milochik" mailto:[EMAIL PROTECTED]"[EMAIL PROTECTED]> To: "Darren Williams" mailto:[EMAIL PROTECTED]"[EMAIL PROTECTED]> Sent: Tuesday, September 25, 2007 3:06 PM Subject: Re: [Tutor] Take if offline > No, not really. He had to give everyone the rule once. Otherwise, he'd > have to do it a hundred times a day, and monitor every single post to > find out who he had to inform. He'd end up doing not much else with > his life, and would flee to a monastery and give up coding forever. > You wouldn't want that to happen, would you? > > > > On 9/25/07, Darren Williams mailto:[EMAIL PROTECTED]" [EMAIL PROTECTED]> wrote: >> So by your own rules, you should have sent that to the offending user(s). >> >> - Original Message - >> From: "Hansen, Mike" mailto:[EMAIL PROTECTED]" [EMAIL PROTECTED]> >> To: "python tutor" mailto:tutor@python.org"tutor@python.org> >> Sent: Tuesday, September 25, 2007 2:27 PM >> Subject: [Tutor] Take if offline >> >> >> > Anytime someone posts in HTML, or posts without a subject, or >> > accidentally >> > hijacks a thread, or top-posts, or writes in caps, a couple of posters >> > pop up >> > and complain. Rather than posting to the entire list, I think it'd be >> > best if >> > you send your complaint directly to the "offending" user. I'd prefer to >> > read >> > about Python not read lessons in net/mail-list etiquette. >> > >> > Thanks, >> > >> > Mike >> > ___ >> > Tutor maillist - HYPERLINK "mailto:Tutor@python.org"Tutor@python.org >> > http://mail.python.org/mailman/listinfo/tutor >> > >> ___ >> Tutor maillist - HYPERLINK "mailto:Tutor@python.org"Tutor@python.org >> HYPERLINK "http://mail.python.org/mailman/listinfo/tutor"http://mail.python.org/ma ilman/listinfo/tutor >> > > > -- > Please read: > http://milocast.com/2007/07/31/this-i-believe/ > ___ Tutor maillist - HYPERLINK "mailto:Tutor@python.org"Tutor@python.org http://mail.python.org/mailman/listinfo/tutor ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
[Tutor] home_finance.py
I'm working on a problem in Chapter 5 of Core Python Programming(2nd Edition). I am supposed to write a script that take an opening balance and a monthly payment from the user. The script then displays the balance and payments like so: Enter opening balance: 100 Enter monthly payment: 16.13 Amount Remaining Pymnt# PaidBalance 0 0.00100.00 1 16.13 83.87 2 16.13 67.74 3 16.13 51.61 4 16.13 35.48 5 16.13 19.35 6 16.13 3.22 73.22 0.00 Here is what I have written so far: #!/usr/bin/env python balance = float(raw_input("Enter opening balance: ")) payment = float(raw_input("Enter monthly payment: ")) print "\tAmount\tRemaining" print "Pymnt#\tPaid\tBalance" payment_num = 0 print "%d\t%.2f\t%.2f" % (payment_num,0,balance) while balance >= 0: payment_num = payment_num + 1 if balance > 0: balance = balance - payment print "%d\t%.2f\t%.2f" % (payment_num,payment,balance) else: payment = balance balance = balance - payment print "%d\t%.2f\t%.2f" % (payment_num,payment,balance) This is what my script displays: Enter opening balance: 100 Enter monthly payment: 16.13 Amount Remaining Pymnt# PaidBalance 0 0.00100.00 1 16.13 83.87 2 16.13 67.74 3 16.13 51.61 4 16.13 35.48 5 16.13 19.35 6 16.13 3.22 7 16.13 -12.91 I'm not sure how to solve this problem. Apparently, trying to catch the remaining balance when it becomes negative doesn't work! ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] python problem
Ok, in this case the guessing game is design to guess the number (0-100) that the user holds in his head. I assume that Python off the bat Python gives a first guess. Example: I guess 50 #(using the split range) Depending on the user # Python asks: Press 1 if I am high. Press 2 if I am low. Press 3 if I got it. Throughout the guessing Python should use the split range method. Python should also be able to tell the user if he or she is cheatingand you wonder why I need help...yikes! Pseudo code: Guess the number from the user using 1,2,3 keys Ask the user if # is high, low, or dead on. Print 'you got it' when Python gets it. As you can see I need help. I've given you the pseudo code. Chris -Original Message- From: bhaaluu [mailto:[EMAIL PROTECTED] Sent: Tuesday, September 25, 2007 4:37 AM To: Chris Cc: tutor@python.org Subject: Re: [Tutor] python problem On 9/25/07, Chris <[EMAIL PROTECTED]> wrote: > I have this GUESSING GAME code found below: > - > import random > number = random.randint(1, 101) > print "I've thought of a number between 1 and 100." > print "Try and guess it!" > print > guess = input( "What's your guess? ") > while guess != number: > if guess > number: > print "Your guess is too high." > else: #elif guess < number: > print "Your guess is too low." > guess = input( "What's your next guess? " ) > print "Congratulations! You guessed the number." > > What do I have to do to the code so that the Guessing Game that tries to > guess a number the user has thought of. (Make sure it can tell if the user > tries to cheat, e.g. by changing the number during the game?? > > I hope you can help! No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.5.487 / Virus Database: 269.13.25/1018 - Release Date: 9/19/2007 3:59 PM ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] pickle question
Jeff Peery wrote: > hello, > > I have a question about the pickler. I'm using it to save objects in a > program of mine that I can later reload to use. I was wondering how the > pickle works and how it references the class module when I unpickle the > pickled objects. for example I save some objects using the pickler, then > I continue to develop my program so the class module is changed and > additional attributes and methods are added. What happens now when I > unpickle the pickled data and try to operate on it using the new methods > and new attributes? The pickle docs suggest that the way to handle this is to write your own __setstate__() method and possibly to include a version number in the object or write one with a __getstate__() method. In your example, I think you could have something like this (not tested): def __setstate__(self, d): if 'name' not in d: d['name'] = 'bob' # some appropriate default for old pickles self.__dict__.update(d) Every time you change the class data, add a bit of conversion code to __setstate__(). If you just keep accreting converters to the end of __setstate__(), it will be able to upgrade any version of pickle. Kent PS Please don't start a new thread by replying to another thread, create a new message. Those of use who use threaded mail readers will appreciate it. PPS Mike Hansen please ignore the previous PS ;-) ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] python problem
Chris wrote: > Guess the number from the user using 1,2,3 keys > Ask the user if # is high, low, or dead on. > Print 'you got it' when Python gets it. > > As you can see I need help. I've given you the pseudo code. OK, how about some real code? If we write the program for you that won't help you learn. What have you tried so far? Which parts of the pseudocode do you know how to code? Which parts do you need help with? Kent ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] python problem
Ok as I see it, it's should go like this: Print 'Think of a number between 1 and 100, and let me guess it' Type1 = input ('Type 1 if I am high') Type2 = input ('Type 2 if I am low') Type3 = input ('Type 3 if I am dead on') I can't seem to get the guts of it. I assume that there are 3 if statements and a while statement. guess While x != If guess I get lost right around here...help! import random > number = random.randint(1, 101) > print "I've thought of a number between 1 and 100." > print "Try and guess it!" > print > guess = input( "What's your guess? ") > while guess != number: > if guess > number: > print "Your guess is too high." > else: #elif guess < number: > print "Your guess is too low." > guess = input( "What's your next guess? " ) print > "Congratulations! You guessed the number." -Original Message- From: Kent Johnson [mailto:[EMAIL PROTECTED] Sent: Tuesday, September 25, 2007 7:32 PM To: Chris Cc: tutor@python.org Subject: Re: [Tutor] python problem Chris wrote: > Guess the number from the user using 1,2,3 keys > Ask the user if # is high, low, or dead on. > Print 'you got it' when Python gets it. > > As you can see I need help. I've given you the pseudo code. OK, how about some real code? If we write the program for you that won't help you learn. What have you tried so far? Which parts of the pseudocode do you know how to code? Which parts do you need help with? Kent No virus found in this incoming message. Checked by AVG Free Edition. Version: 7.5.487 / Virus Database: 269.13.25/1018 - Release Date: 9/19/2007 3:59 PM No virus found in this outgoing message. Checked by AVG Free Edition. Version: 7.5.487 / Virus Database: 269.13.25/1018 - Release Date: 9/19/2007 3:59 PM ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] home_finance.py
On 9/26/07, Christopher Spears <[EMAIL PROTECTED]> wrote: > > I'm working on a problem in Chapter 5 of Core Python > Programming(2nd Edition). I am supposed to write a > script that take an opening balance and a monthly > payment from the user. The script then displays the > balance and payments like so: > > > Enter opening balance: 100 > Enter monthly payment: 16.13 > Amount Remaining > Pymnt# PaidBalance > 0 0.00100.00 > 1 16.13 83.87 > 2 16.13 67.74 > 3 16.13 51.61 > 4 16.13 35.48 > 5 16.13 19.35 > 6 16.13 3.22 > 73.22 0.00 > > Here is what I have written so far: > > #!/usr/bin/env python > > balance = float(raw_input("Enter opening balance: ")) > payment = float(raw_input("Enter monthly payment: ")) > > print "\tAmount\tRemaining" > print "Pymnt#\tPaid\tBalance" > > payment_num = 0 > print "%d\t%.2f\t%.2f" % (payment_num,0,balance) > > while balance >= 0: > payment_num = payment_num + 1 > if balance > 0: You have: if balance > 0: You should be checking whether the remaining balance is greater than the payment amount, not whether it is greater than 0. This is probably just a typo as it looks like you're on the right track. Ian ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
[Tutor] New to Python and Linux
Hi I am new to python programming and also the linux enviroment most of my skills are windows based and programming skills is visual basics. I decided that it would be a great start and new direction for me to learn python and at the same time linux. However I have already run into a wall, and any help would be appreciated even if you can direct me where to find the info or 'turor'. I am running Fedoracore 7 and Python 2.5 In windows, if i write a program in Python and save it I then can simply double click the icon and the program will execute in a console window. Now under Fedoracore I write my program in gedit save it in my \home\(username)\python directory, when I double click it, it opens up agian in gedit. Now true it is maybe a simple error from me but mostly it is me that don't know how to work with python on linux. I would like to know how do I test(run) the programs I write under fedoracore? Simple yet challanging for me, Your patience and wisdom on this subject will be greatly appreciated. Regards Digitalhobo ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] New to Python and Linux
Somewhere in the start menu, you'll be able to open a terminal. It might be called GTerm, Gnome Term, xterm, or any number of things with "term" in the name. Once you've done that, you need to see if python is in your path. Do that by typing python in the terminal. If you enter the python shell, you're in luck.exit out (Ctrl-Z return, probably), If not, you need to install/find python and add it to your path by typing export PATHTOPY=/usr/bin/python #I don't know where python is for you...this is just a guess export PATH=$PATH:$PYTHTOPY If you google bashrc, you'll learn how to make it so you don't have to type this every time. Now, you should be able to type "cd python" in a terminal you broght up. This will change into the python directory you said you made in your home dir. Now type "ls". That should show you a list of files in the directory. If there is a python file there, say, named foo.py, then you'd type python foo.py to run the application. You can also set python up as the default app when you click a .py ext file. I dislike this, then again, on windows, that's exactly how I have it setup (while not in windows). To change this to match the windows behavior, you need to right click on the .py file, and pray that you see an "Open with" option. If you don't, ask for help on a Gnome mailing list :o). If you do see the Open with option, select it, then select "other", then using the folder on the command line, browse to your python executable. I don't know where it is. If you open up a terminal and type: which python that *may* show you where it is. -- Michael Langford Phone: 404-386-0495 Consulting: http://www.TierOneDesign.com/ Entertaining: http://www.ThisIsYourCruiseDirectorSpeaking.com On 9/26/07, Armand Nell <[EMAIL PROTECTED]> wrote: > > Hi > > I am new to python programming and also the linux enviroment most of my > skills are windows based and programming skills is visual basics. I decided > that it would be a great start and new direction for me to learn python and > at the same time linux. However I have already run into a wall, and any help > would be appreciated even if you can direct me where to find the info or > 'turor'. > > I am running Fedoracore 7 and Python 2.5 > > In windows, if i write a program in Python and save it I then can simply > double click the icon and the program will execute in a console window. Now > under Fedoracore I write my program in gedit save it in my > \home\(username)\python directory, when I double click it, it opens up agian > in gedit. Now true it is maybe a simple error from me but mostly it is me > that don't know how to work with python on linux. > > I would like to know how do I test(run) the programs I write under fedoracore? > > Simple yet challanging for me, > > Your patience and wisdom on this subject will be greatly appreciated. > > Regards > > Digitalhobo > ___ > Tutor maillist - Tutor@python.org > http://mail.python.org/mailman/listinfo/tutor > > ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor
Re: [Tutor] New to Python and Linux
Hi, Another way to execute your program is to open up your file with gedit, and on the very first line type (sans quotes) "#!/usr/bin/env python" by itself and save it. Then, go to the terminal like Michael said, and cd into the directory with your file. Type "chmod 0700 your-program.py" at the prompt. This allows you to execute your program without invoking python first. That way when you are cd'ed into the directory that contains your program, you can type "./your-program.py" at the prompt, and it should run. If you're going to switch to linux, then you'll need to learn how to make the most of your CLI. I'd suggest googling for tutorials on the linux command line. Jason ___ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor