簡體   English   中英

檢查數字是否步進的函數返回false

[英]Function to check if number is stepping returns false

我編寫了一個函數來檢查數字是否在步進 :每個連續的數字與最后一個數字相差1。

def isStep(num):
    num = str(num)
    prevDigit = int(num[0])-1

    for i in str(num):
        if (int(i)-1 == prevDigit or int(i)+1 == prevDigit):
            prevDigit = i
            continue
        else:
            print(int(i)-1, prevDigit)
            return False

    return True

我已經試過了1234 出於某種原因,當它到達第二個數字時,它會返回False ,認為2-1不等於1。(請參閱else中的print語句)。

為什么是這樣? 我的代碼中是否有導致此問題的錯誤?

另一種計算方式是從向右移一位數字的相同數字中減去數字(而忽略第一位和最后一位數字)

1232     (a)
 1232    (b)
-----
_111_    (abs(a-b) per digit)

通過減去,我的意思是絕對差abs(2-1)==1abs(3-2)==1abs(2-3)==1 (即相差1,向上或向下)。

在Python中,它看起來像:

def isStep(n):
    a = map(int, str(n)[1:])   # convert to a list of integer digits
    b = map(int, str(n)[:-1])
    return all(abs(a_digit - b_digit) == 1 for a_digit, b_digit in zip(a, b))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM