Help
khaosyt at gmail.com
khaosyt at gmail.com
Mon Apr 1 20:38:05 EDT 2013
On Monday, April 1, 2013 8:00:30 PM UTC-4, Steven D'Aprano wrote:
> On Mon, 01 Apr 2013 14:44:45 -0700, khaosyt wrote:
>
>
>
> > If I wanted to get the sum of some numbers (for example: 1 + 2 + 3 + 4 +
>
> > 5 = 15) from the attached program what do I do? Keep in mind that the
>
> > print statement prints the integers individually.
>
>
>
>
>
> Yes, we know what the print statement does. Some of us have been using
>
> Python for weeks now.
>
>
>
>
>
> Some comments interspersed within your code below:
>
>
>
>
>
>
>
> > integer = 0
>
> > denom = 10
>
> > again = "y" #sentinel:
>
>
>
> Technically, that's not a sentinel.
>
>
>
> > while again == "y" or again == "Y":
>
> > integer = input("Enter a positive integer: ")
>
>
>
> I believe that the last time you asked this question, you were told not
>
> to use the "input" function as it was dangerous or can lead to hard-to-
>
> understand bugs. Change the above line to:
>
>
>
> integer = raw_input("Enter a positive integer: ")
>
>
>
>
>
> Notice that if you do this, the so-called "integer" is actually a string.
>
> This is a good thing! You want it as a string, since that makes it easy
>
> to extract individual digits.
>
>
>
>
>
> > while denom <= integer:
>
> > denom = denom*10
>
> > while denom > 1:
>
> > denom = denom/10
>
> > number = integer/denom
>
> > integer = integer%denom
>
> > print str(number)
>
>
>
> All this stuff with denom seems to be aimed at extracting the digits from
>
> a number. There's an easier way: just work with the string.
>
>
>
> After the line I suggested above
>
>
>
> integer = raw_input("Enter a positive integer: ")
>
>
>
>
>
> "integer" is a string of digits. So you can iterate over the digits using
>
> a for-loop:
>
>
>
> # this is not what you want!
>
> for digit in integer:
>
> print digit
>
>
>
>
>
> Instead of printing the digits, you want to add them up. So start by
>
> initialising a total, then add them:
>
>
>
> total = 0
>
> for digit in integer:
>
> total = total + digit
>
>
>
>
>
> Warning! The above three lines contains a bug. If you make the changes I
>
> suggest, and try it, you will get an error. That's okay. Read the error.
>
> Try to understand what it is telling you. Hint: remember that total is an
>
> actual int, a number, while each digit is a single character, a string.
>
>
>
> You need to convert each digit into a number before adding it. Hint: the
>
> int function takes a string, and converts it to a number.
>
>
>
> py> 42 + "23"
>
> Traceback (most recent call last):
>
> File "<stdin>", line 1, in <module>
>
> TypeError: unsupported operand type(s) for +: 'int' and 'str'
>
> py> 42 + int("23")
>
> 65
>
>
>
>
>
> This should hopefully give you enough information to get some working
>
> code. Try to write as much of the code as you can, and come back with any
>
> further questions *after* making a good effort.
>
>
>
> Another hint: try experimenting at the interactive interpreter, or IDLE.
>
> If you're unsure about something, try it and see what happens *before*
>
> asking.
>
>
>
>
>
> Good luck.
>
>
>
>
>
>
>
>
>
> --
>
> Steven
Thanks. I'll try it out.
More information about the Python-list
mailing list