Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
自动更正回文的Python代码_Python_Palindrome - Fatal编程技术网

自动更正回文的Python代码

自动更正回文的Python代码,python,palindrome,Python,Palindrome,在python中,我被赋予了一项任务,即编写一段代码,其中包含一个函数,该函数从用户处接收一个输入数字,如果它不是回文,它将查找最近的(较低的)回文数字,例如: findprevpalindrom(100)到99 findprevpalindrom(99)到88 findprevpalindrom(11)到9 我们假定输入为int且大于0,因此无需修复该部分 单数是回文的 我需要使用另一个函数来查找正确的数字 这就是我到目前为止所做的。这是不正确的,我很难理解接下来会发生什么: 提前感谢所

在python中,我被赋予了一项任务,即编写一段代码,其中包含一个函数,该函数从用户处接收一个输入数字,如果它不是回文,它将查找最近的(较低的)回文数字,例如:

findprevpalindrom(100)到99

findprevpalindrom(99)到88

findprevpalindrom(11)到9

  • 我们假定输入为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中,对吗?