自动更正回文的Python代码
在python中,我被赋予了一项任务,即编写一段代码,其中包含一个函数,该函数从用户处接收一个输入数字,如果它不是回文,它将查找最近的(较低的)回文数字,例如: findprevpalindrom(100)到99 findprevpalindrom(99)到88 findprevpalindrom(11)到9自动更正回文的Python代码,python,palindrome,Python,Palindrome,在python中,我被赋予了一项任务,即编写一段代码,其中包含一个函数,该函数从用户处接收一个输入数字,如果它不是回文,它将查找最近的(较低的)回文数字,例如: findprevpalindrom(100)到99 findprevpalindrom(99)到88 findprevpalindrom(11)到9 我们假定输入为int且大于0,因此无需修复该部分 单数是回文的 我需要使用另一个函数来查找正确的数字 这就是我到目前为止所做的。这是不正确的,我很难理解接下来会发生什么: 提前感谢所
- 我们假定输入为int且大于0,因此无需修复该部分
- 单数是回文的
- 我需要使用另一个函数来查找正确的数字
def findprevalindrom(numb):
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
s=str(numb-1)
l=len(s)
如果s[:l//2][::-1]>s[(l+1)//2:]:
top=str(int(s[:(l+1)//2])-1)
其他:
top=s[:(l+1)//2]
如果长度(顶部)<1/2:
return int(top+'9'+top[:l//2][::-1])#棘手的部分
其他:
returnint(top+top[:l//2][::-1])#通用返回
上述方法应能提供所需的输出
findprevpalindrom(100)->99
findprevpalindrom(99)->88
findprevpalindrom(11)->9小心,你的例子错了。99和11都是回文,因此函数(根据具体情况)应该分别返回99和11
def是回文(数字:int):
返回str(number)==str(number)[::-1]
def findprevpalindrom(编号:int):
assert number>0,“找不到非正回文!”
如果是回文(数字):
返回号码
其他:
返回findprevpalindrom(数字-1)
这些断言传递时不会引发异常:
断言findprevpalindrom(100)=99
断言findprevpalindrom(99)=99
断言findprevpalindrom(98)==88
断言findprevpalindrom(11)==11
断言findprevpalindrom(10)==9
Hi Crisal,如果我想使用我的代码,我该如何解决它?现在有什么问题?假设我的问题在prev-1中,对吗?嗨,Sagar,如果我想使用我的代码,我该如何着手解决它?现在有什么问题?假设我的问题在prev-1中,对吗?