为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

千万里不及你 2021-09-28 20:41:53
我想运行一个从 0 到 1000 的循环我想打印低于前一位数字的数字“例如:123 3 大于 2 并且 2 大于 1 所以打印 123”我尝试了从 1 到 100 以及如何检查对于 1000 个或更多的数字我试图将 int 输入转换为列表并用 2 位数字检查no=int(input())lis=[]num_lis=[]le=0for 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 如果正确打印我我的代码只检查最后两位数字我如何检查三位和四位数字
查看完整描述

2 回答

?
红颜莎娜

TA贡献1842条经验 获得超12个赞

您可以创建一个函数来验证数字的数字是否已排序:


def int_sorted(i):

    s = str(i)

    return s == ''.join(sorted(s, key=int))


print(int_sorted(123))

print(int_sorted(1234))

print(int_sorted(4234))

输出


True

True

False

请注意,sorted(s, key=int)种类s根据各个手指的int值,通过使用(数字串)key的参数排序。此功能的工作与位数无关。


如果它必须大于严格,你可以这样做:


def int_sorted(i):

    s = str(i)

    sorted_s = sorted(s, key=int)

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

输出


True

True

False

False


查看完整回答
反对 回复 2021-09-28
?
慕盖茨4494581

TA贡献1850条经验 获得超11个赞

打印所有小于后面的数字:


您可以简单地记住一位数字并在下一位更大时打印它:


number = None


while number is None:

    number = int(input("Input a number: ")) 

number = str(number)


last_digit = int(number[0])

for s in number[1:]:

    this_digit = int(s)

    if this_digit > last_digit:

        print(last_digit, end="")

        last_digit = this_digit

print(last_digit)

输出12354:


1235

这将打印所有低于下一个数字的数字。


检查数字是否“按升序排列”:


要进行 zimply 检查,您可以使用zip(). 字符'0123456789'按以下顺序比较:'0'<'1'<'2'<'3'<'4'<'5'<'6'<'7'<'8'<'9'- 无需将其转换为整数,只需“按原样”比较字符:


def IsIncreasing(number):

    n = str(number)

    return all(a<b for a,b in zip(n,n[1:]))

这是如何工作的?

它从数字和数字移位 1 生成元组:


"123456789" 

"23456789" 

==> ('1','2'),('2','3'),...,('7','8'),('8','9') as generator of tuples

并确保所有第一个元素都小于第二个元素使用 all()


例子:


for k in [1234,1,123456798]:

    print(k,IsIncreasing(k))

输出(重新格式化):


1234      True

1         True

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

输出:


  1,   2,   3,   4,   5,   6,   7,   8,   9,  12,  13,  14,  15,  

 16,  17,  18,  19,  23,  24,  25,  26,  27,  28,  29,  34,  35,  

 36,  37,  38,  39,  45,  46,  47,  48,  49,  56,  57,  58,  59,  

 67,  68,  69,  78,  79,  89, 123, 124, 125, 126, 127, 128, 129, 

134, 135, 136, 137, 138, 139, 145, 146, 147, 148, 149, 156, 157, 

158, 159, 167, 168, 169, 178, 179, 189, 234, 235, 236, 237, 238, 

239, 245, 246, 247, 248, 249, 256, 257, 258, 259, 267, 268, 269, 

278, 279, 289, 345, 346, 347, 348, 349, 356, 357, 358, 359, 367, 

368, 369, 378, 379, 389, 456, 457, 458, 459, 467, 468, 469, 478, 

479, 489, 567, 568, 569, 578, 579, 589, 678, 679, 689, 789,


查看完整回答
反对 回复 2021-09-28
  • 2 回答
  • 0 关注
  • 201 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信