Help printing the integers of a longer number

K

khaosyt

I want to print the individual numbers of a large number using division and modulus division.

For example:

Enter a positive integer: 54321
5
4
3
2
1
 
J

Joel Goldstick

I want to print the individual numbers of a large number using division
and modulus division.

For example:

Enter a positive integer: 54321
5
4
3
2
1
This looks familiar. Make the integer a string and use a for loop to
iterate over each item
 
C

Chris Angelico

I want to print the individual numbers of a large number using division and modulus division.

For example:

Enter a positive integer: 54321
5
4
3
2
1

Python has two operators that can help here:

// for integer division - returns the quotient without the remainder
% for modulus - returns the remainder

You'll also want to use a while loop to continue gathering digits so
long as there's something left in the number.

And if you want the digits to come out in that order, you're probably
going to want to gather them into a list and then output them in
reverse. But start by ignoring that part and producing something that,
for the input 54321, produces 1, 2, 3, 4, and then 5.

Finally, when you're asking about homework, please be honest about it.
We can tell, you're not putting one over us :) Better still, post your
non-working code and explain where you're having trouble; we'll be
happy to help you learn, but we won't simply give you the answer.

ChrisA
 
J

Jussi Piitulainen

I want to print the individual numbers of a large number using
division and modulus division.

For example:

Enter a positive integer: 54321
5
4
3
2
1

Those numbers are called the digits of the large number.

With divmod(54321, 10) you get both the number that is "left" after
removing the last digit, and the last digit:
1

Define a function, print_digits(num), that prints the digits of the
non-negative integer num. Zero turns out fine so let's allow zero:

def print_digits(num):
left, last = divmod(num, 10)
if left < 0: print the digits of left
print(last)

How do you print the digits of left? With print_digits. Why does it
work? Because you only call print_digits again when left is closer to
zero than num.

It's called recursion.
 
J

Jussi Piitulainen

Jussi said:
Those numbers are called the digits of the large number.

With divmod(54321, 10) you get both the number that is "left" after
removing the last digit, and the last digit:

1

Define a function, print_digits(num), that prints the digits of the
non-negative integer num. Zero turns out fine so let's allow zero:

def print_digits(num):
left, last = divmod(num, 10)
if left < 0: print the digits of left
print(last)

Blush. That should be:

...
if left > 0: ...
...

(Or just "if left" because left will eventually be 0, positive numbers
are true values, and 0 is a false value.)

Sorry about that.
 
C

Chris Angelico

def print_digits(num):
left, last = divmod(num, 10)
if left < 0: print the digits of left
print(last)

How do you print the digits of left? With print_digits. Why does it
work? Because you only call print_digits again when left is closer to
zero than num.

It's called recursion.

An elegant solution, but buggy, I'm afraid... fortunately it's a
trivial problem. The comparison should be left>0. :)

ChrisA
 
C

Chris Angelico

Blush. That should be:

...
if left > 0: ...
...

(Or just "if left" because left will eventually be 0, positive numbers
are true values, and 0 is a false value.)

Sorry about that.

Sorry, I just nitpicked that very thing, hehe :)

Note that this doesn't work with negative numbers; it'll infinitely
recurse, due to divmod's behaviour. You'd need a special trap in there
to handle that:

if num<0:
print("-")
num=-num
# and continue.

ChrisA
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,755
Messages
2,569,536
Members
45,012
Latest member
RoxanneDzm

Latest Threads

Top