如果第 N 个索引应该大于以前的索引,如何检查索引

我想运行一个从 0 到 1000 的循环我想打印低于前一位数字的数字“例如:123 3 大于 2 并且 2 大于 1 所以打印 123”我尝试了从 1 到 100 以及如何检查对于 1000 个或更多的数字


我试图将 int 输入转换为列表并用 2 位数字检查


no=int(input())

lis=[]

num_lis=[]

le=0


for i in range(10,no):

    lis=str(i)

    num_lis=[int (x)for x in lis]

    le=len(num_lis)-1

    if num_lis[le]>num_lis[le-1]:

        print(i)

从 1 到 100 没问题我想检查三位数字以喜欢 1<2<3 如果正确打印我我的代码只检查最后两位数字我如何检查三位和四位数字


千万里不及你
浏览 202回答 2
2回答

红颜莎娜

您可以创建一个函数来验证数字的数字是否已排序:def int_sorted(i):&nbsp; &nbsp; s = str(i)&nbsp; &nbsp; return s == ''.join(sorted(s, key=int))print(int_sorted(123))print(int_sorted(1234))print(int_sorted(4234))输出TrueTrueFalse请注意,sorted(s, key=int)种类s根据各个手指的int值,通过使用(数字串)key的参数排序。此功能的工作与位数无关。如果它必须大于严格,你可以这样做:def int_sorted(i):&nbsp; &nbsp; s = str(i)&nbsp; &nbsp; sorted_s = sorted(s, key=int)&nbsp; &nbsp; return s == ''.join(sorted_s) and all(int(c) < int(n) for c, n in zip(sorted_s, sorted_s[1:]))print(int_sorted(123))print(int_sorted(1234))print(int_sorted(4234))print(int_sorted(99))输出TrueTrueFalseFalse

慕盖茨4494581

打印所有小于后面的数字:您可以简单地记住一位数字并在下一位更大时打印它:number = Nonewhile number is None:&nbsp; &nbsp; number = int(input("Input a number: "))&nbsp;number = str(number)last_digit = int(number[0])for s in number[1:]:&nbsp; &nbsp; this_digit = int(s)&nbsp; &nbsp; if this_digit > last_digit:&nbsp; &nbsp; &nbsp; &nbsp; print(last_digit, end="")&nbsp; &nbsp; &nbsp; &nbsp; last_digit = this_digitprint(last_digit)输出12354:1235这将打印所有低于下一个数字的数字。检查数字是否“按升序排列”:要进行 zimply 检查,您可以使用zip(). 字符'0123456789'按以下顺序比较:'0'<'1'<'2'<'3'<'4'<'5'<'6'<'7'<'8'<'9'- 无需将其转换为整数,只需“按原样”比较字符:def IsIncreasing(number):&nbsp; &nbsp; n = str(number)&nbsp; &nbsp; return all(a<b for a,b in zip(n,n[1:]))这是如何工作的?它从数字和数字移位 1 生成元组:"123456789"&nbsp;"23456789"&nbsp;==> ('1','2'),('2','3'),...,('7','8'),('8','9') as generator of tuples并确保所有第一个元素都小于第二个元素使用 all()例子:for k in [1234,1,123456798]:&nbsp; &nbsp; print(k,IsIncreasing(k))输出(重新格式化):1234&nbsp; &nbsp; &nbsp; True1&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;True123456798 False不需要通过排序进行比较,这需要更多的计算。测试从 1 到 1000 的所有数字:您可以使用以下IsIncreasing()函数创建从 1 到 1000 的所有“递增”数字的列表:get_all_up_to_1000 = [k for k in range(1,1001) if IsIncreasing(k)]print( *(f"{k:>3}," for k in get_all_up_to_1000))输出:&nbsp; 1,&nbsp; &nbsp;2,&nbsp; &nbsp;3,&nbsp; &nbsp;4,&nbsp; &nbsp;5,&nbsp; &nbsp;6,&nbsp; &nbsp;7,&nbsp; &nbsp;8,&nbsp; &nbsp;9,&nbsp; 12,&nbsp; 13,&nbsp; 14,&nbsp; 15,&nbsp;&nbsp;&nbsp;16,&nbsp; 17,&nbsp; 18,&nbsp; 19,&nbsp; 23,&nbsp; 24,&nbsp; 25,&nbsp; 26,&nbsp; 27,&nbsp; 28,&nbsp; 29,&nbsp; 34,&nbsp; 35,&nbsp;&nbsp;&nbsp;36,&nbsp; 37,&nbsp; 38,&nbsp; 39,&nbsp; 45,&nbsp; 46,&nbsp; 47,&nbsp; 48,&nbsp; 49,&nbsp; 56,&nbsp; 57,&nbsp; 58,&nbsp; 59,&nbsp;&nbsp;&nbsp;67,&nbsp; 68,&nbsp; 69,&nbsp; 78,&nbsp; 79,&nbsp; 89, 123, 124, 125, 126, 127, 128, 129,&nbsp;134, 135, 136, 137, 138, 139, 145, 146, 147, 148, 149, 156, 157,&nbsp;158, 159, 167, 168, 169, 178, 179, 189, 234, 235, 236, 237, 238,&nbsp;239, 245, 246, 247, 248, 249, 256, 257, 258, 259, 267, 268, 269,&nbsp;278, 279, 289, 345, 346, 347, 348, 349, 356, 357, 358, 359, 367,&nbsp;368, 369, 378, 379, 389, 456, 457, 458, 459, 467, 468, 469, 478,&nbsp;479, 489, 567, 568, 569, 578, 579, 589, 678, 679, 689, 789,
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python