gpt4 book ai didi

python - 检查数字是否步进的函数返回 false

转载 作者:太空宇宙 更新时间:2023-11-03 21:17:01 24 4
gpt4 key购买 nike

我编写了一个函数来检查数字是否步进:每个连续的数字与最后一个数字正好相差 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中的打印语句)。

这是为什么呢?我的代码中是否存在导致此问题的错误?

最佳答案

计算此值的另一种方法是从向右移动一位数的同一数字中减去该数字(并且忽略第一位和最后一位数字)

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

关于python - 检查数字是否步进的函数返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54615224/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com