亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

檢查數字中的數字是否在python中按遞增順序排列

檢查數字中的數字是否在python中按遞增順序排列

皈依舞 2021-11-23 19:51:21
我正在研究一個問題,該問題確定數字中的數字是否按遞增順序排列。現在,我用來解決問題的方法是,例如,考慮數字 5678。要檢查是否是5678的遞增序列,我把第一位和下一位和最后一位數字是5,6,8在范圍內的功能替代 range(first,last,(diff of first digit and the next to first digit))即range(5,8+1,abs(5-6))。結果是數字的升序排列對于這個問題,有一個約束說For incrementing sequences, 0 should come after 9, and not before 1, as in 7890.現在我的程序在輸入 7890 處中斷。我不知道如何編碼這個邏輯。有人能幫助我嗎?。增加序列的代碼是  len(set(['5','6','7','8']) - set(map(str,range(5,8+1,abs(5-6))))) == 0
查看完整描述

3 回答

?
交互式愛情

TA貢獻1712條經驗 獲得超3個贊

您可以簡單地檢查數字在轉換為字符串時是否是 的子字符串'1234567890'

str(num) in '1234567890'


查看完整回答
反對 回復 2021-11-23
?
楊__羊羊

TA貢獻1943條經驗 獲得超7個贊

你可以用一個移位的 self 壓縮數字的字符串表示,并一起迭代連續的數字。使用all檢查號碼跟隨,使用模10來處理0的情況。

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


查看完整回答
反對 回復 2021-11-23
?
陪伴而非守候

TA貢獻1757條經驗 獲得超8個贊

我會創建一個循環生成器并切片:


from itertools import cycle, islice


num = 5678901234


num = tuple(str(num))

print(num == tuple(islice(cycle(map(str, range(10))), int(num[0]), int(num[0]) + len(num))))

這比檢查單個數字之間差異的解決方案更快。當然,你可以犧牲長度來讓它更快:


def digits(num):

    while num:

        yield num % 10

        num //= 10


def check(num):

    num = list(digits(num))

    num.reverse()

    for i, j in zip(islice(cycle(range(10)), num[0], num[0] + len(num)), num):

        if i != j:

          return False

    return True


查看完整回答
反對 回復 2021-11-23
  • 3 回答
  • 0 關注
  • 312 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號