Python 3.7 Bug

Bassam Abdul-Baki babdulbaki at gmail.com
Mon Mar 25 08:14:25 EDT 2019


Greetings,

In the following code, there's a bug on certain parameters.

----------

def per(n, steps = 0):
 digits = [int(i) for i in str(n)]
 result = 1
 for j in digits:
  result *= j
 steps += 1
 print(steps, result, sep=" - ")
 if result == 0:
  print(result, str(result), len(str(result)), sep=" - ")
 if len(str(result)) == 1:
  print(" --- DONE ---")
  return "DONE"
 else:
  per(result, steps)

----------

What the program does:
If I run per(X) and X is a multiple of 10, I should end up with 0 in a
finite amount of steps.

The problem:
If I run per(54), I do not get 'DONE' printed through the return
statement.  WRONG!

If I run per(20), I do get 'DONE' printed through the return statement.
CORRECT!

20, 30, etc. are correct.  25, 45, etc. are not.

Is this a bug?

Thanks,
Bassam



More information about the Python-list mailing list