Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Comparing digits in an integer in Python

Really need some help here. Super early in learning Python.

The goal is to take a number and see if the digits are in ascending order. What I have so far is:

a = int(input("Enter a 4-digit number: "))

b = [int(i) for i in str(a)]

if b[0] > b[1]:
    print "Not ascending"
elif b[1] > b[2]:
    print "Not ascending"
elif b[2] > b[3]:
    print "Not ascending"
else:
    print "Ascending!"

My question is, how can I make it so that there's no limit on the amount of digits entered? So if someone enters a 7 digit number it does the same process up to the last digit.

like image 266
Alpha Moses Avatar asked Sep 17 '25 14:09

Alpha Moses


1 Answers

First step sort all your input

b = [int(i) for i in str(a)]

Second step, compare the origin input with the sorted-list, all the element of the list can be concat with a string (digit-string), so you can compare them with only one time.

c = sorted(b)

''.join([str(i) for i in b]) > ''.join([str(i) for i in c]):

   print "Not ascending"
else:
   print "Ascending!"

Or use the std lib, check every element with the next element just like your way:

every_check = [b[i] <= b[i+1] for i in xrange(len(b)-1)]

[True, True, False, False]

and use all() check if all True

if all(every_check):
    print "Ascending!"
else:
    print "Not ascending"
like image 143
Frank AK Avatar answered Sep 20 '25 06:09

Frank AK