首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在python中检查数字中的数字是否按递增顺序排列

在python中检查数字中的数字是否按递增顺序排列
EN

Stack Overflow用户
提问于 2019-03-02 10:35:52
回答 8查看 10.7K关注 0票数 15

我正在解决一个问题,该问题确定数字中的数字是否按递增顺序排列。现在,我解决这个问题的方法是,例如,考虑数字5678。

为了检查5678是否是递增序列,我取了第一个数字、下一个数字和最后一个数字,它是范围函数range(first,last,(diff of first digit and the next to first digit))中的5,6,8和替换,即range(5,8+1,abs(5-6)).The结果是按升序排列的数字列表

对于这个问题,有一个约束说

For incrementing sequences, 0 should come after 9, and not before 1, as in 7890.现在,我的程序在输入7890处中断。我不知道如何编码这个逻辑。有人能帮帮我吗?

增加序列的代码是

代码语言:javascript
复制
  len(set(['5','6','7','8']) - set(map(str,range(5,8+1,abs(5-6))))) == 0 
EN

回答 8

Stack Overflow用户

回答已采纳

发布于 2019-03-02 11:51:09

您可以简单地检查数字在转换为字符串时是否为'1234567890'的子字符串

代码语言:javascript
复制
str(num) in '1234567890'
票数 29
EN

Stack Overflow用户

发布于 2019-03-02 10:43:38

你可以用一个移位的self压缩数字的字符串表示,并在连续的数字上一起迭代。使用all检查数字是否跟在后面,并使用模10来处理0的情况。

代码语言:javascript
复制
num = 7890

result = all((int(y)-int(x))%10 == 1 for x,y in zip(str(num),str(num)[1:]))
票数 3
EN

Stack Overflow用户

发布于 2019-03-02 10:43:53

由于您已经有了zip版本,这里有一个替代解决方案:

代码语言:javascript
复制
import sys


order = dict(enumerate(range(10)))
order[0] = 10

def increasing(n):
    n = abs(n)
    o = order[n % 10] + 1
    while n:
        n, r = divmod(n, 10)
        if o - order[r] != 1:
            return False
        o = order[r]
    return True


for n in sys.argv[1:]:
    print n, increasing(int(n))
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54954713

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档