比较Python中整数的数字

时间:2018-04-25 01:07:25

标签: python python-3.x

这里真的需要一些帮助。超级学习Python的早期。

目标是取一个数字并查看数字是否按升序排列。 到目前为止我所拥有的是:

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!"

我的问题是,如何才能使输入的数字量没有限制?因此,如果有人输入一个7位数字,它会执行相同的过程直到最后一位数。

3 个答案:

答案 0 :(得分:1)

第一步对所有输入进行排序

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

第二步,将原点输入与sorted-list进行比较,列表的所有元素都可以与字符串(数字字符串)连接,因此您只能将它们与一次进行比较。

c = sorted(b)

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

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

或者使用std lib,用你的方式检查每个元素和下一个元素:

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

[真,真,假,假]

并使用all()检查是否所有True

if all(every_check):
    print "Ascending!"
else:
    print "Not ascending"

答案 1 :(得分:0)

你需要一个循环。

例如:

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")

答案 2 :(得分:0)

如果你正在处理如此少量的数字,只需按升序创建一个带有元素的新列表。幸运的是,Python有一个函数可以完成,内置函数sorted

def is_ascending(lst):
    return sorted(lst) == lst