这里真的需要一些帮助。超级学习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位数字,它会执行相同的过程直到最后一位数。
答案 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