2024-09-27 21:33:33 发布
网友
在python中,我被赋予了一项任务,即编写一段代码,其中包含一个函数,该函数从用户处接收一个输入数字,如果它不是回文,它将查找最近的(较低的)回文数字,例如:
findprevpalindrom(100)到99
findprevpalindrom(99)到88
findprevpalindrom(11)到9
这就是我到目前为止所做的。这是不正确的,我很难理解接下来会发生什么: screenshot
提前感谢所有帮助者
def findprevpalindrom(numb): s = str(numb - 1) l = len(s) if s[:l//2][::-1] > s[(l+1)//2:]: top = str(int(s[:(l+1)//2])-1) else: top = s[:(l+1)//2] if len(top) < l/2: return int(top + '9' + top[:l//2][::-1]) #tricky part else: return int(top + top[:l//2][::-1]) #the generic return
上述方法应能提供所需的输出
findprevpalindrom(100)->;九十九
findprevpalindrom(99)——>;88
findprevpalindrom(11)——>;九,
注意,你的例子是错误的。99和11都是回文,因此函数(根据具体情况)应该分别返回99和11
def is_palindrome(number: int): return str(number) == str(number)[::-1] def findprevpalindrom(number: int): assert number > 0, "Cannot find non-positive palindrome!" if is_palindrome(number): return number else: return findprevpalindrom(number - 1)
这些断言传递时不会引发异常:
assert findprevpalindrom(100) == 99 assert findprevpalindrom(99) == 99 assert findprevpalindrom(98) == 88 assert findprevpalindrom(11) == 11 assert findprevpalindrom(10) == 9
上述方法应能提供所需的输出
findprevpalindrom(100)->;九十九
findprevpalindrom(99)——>;88
findprevpalindrom(11)——>;九,
注意,你的例子是错误的。99和11都是回文,因此函数(根据具体情况)应该分别返回99和11
这些断言传递时不会引发异常:
相关问题 更多 >
编程相关推荐