Comparing digits in an integer in Python

后端 未结 3 974
慢半拍i
慢半拍i 2021-01-16 12:48

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:

相关标签:
3条回答
  • 2021-01-16 13:29

    If you're working with such a small number of digits, just create a new list w/ the elements in ascending order. Fortunately, Python has a function that does exactly that, the built-in function sorted:

    def is_ascending(lst):
        return sorted(lst) == lst
    
    0 讨论(0)
  • 2021-01-16 13:34

    You would need a loop.

    for example:

    a = int(input("Enter a 4-digit number: "))
    
    b = [int(i) for i in str(a)]
    
    
    def isAscending(b):
      #loop for as many digits in the array
      for x in range(0, len(b) - 1):
        # if the next number is less than the previous return false
        if b[x] > b[x+1]:
          return False
      #  did not fail so return true
      return True
    
    if isAscending(b):
      print ("the number is in ascending order")
    else:
      print ("the number is not in ascending order")
    
    0 讨论(0)
  • 2021-01-16 13:45

    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"
    
    0 讨论(0)
提交回复
热议问题