[英]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)==1
, abs(3-2)==1
和abs(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.