2017-09-23 63 views
0
import sys 
for arg in sys.argv[1:]: 
    def is_palindrome(s): 
     if len(s) <= 1: 
      return arg 
     else: 
      if s[0] != s[len(s)-1]: 
       return 
      else: 
       return is_palindrome(s[1:len(s)-1]) 
print(is_palindrome(arg)) 
+0

我需要当我写一个完整的列表,它应该只检测palindromes在这种情况下,它只检测palindromes,如果它是最后一次提前致谢 – John

+1

为什么你定义'is_palindrome'循环的每次迭代?在循环外部定义_once_,并在for循环体内放置print(is_palindrome(arg))'。 –

+0

'is_palindrome'应该返回什么?你想在函数的主体中使用's'而不是'arg'。即使有这种修复,看起来你会在非回文的情况下返回None,否则返回字符串的“中间”。如果是回文,你是否想要返回整个字符串? – chepner

回答

0

它应该是这样的。

import sys 

def is_palindrome(s): 
    length=len(s) 
    if length < 2: 
     return True 
    elif s[0] != s[-1]: 
     return False 
    else: 
     return is_palindrome(s[1:length - 1]) 

for arg in sys.argv[1:]: 
    if(is_palindrome(arg)): 
     print(arg) 

就像你的情况一样,你在循环结尾写这个print语句,所以它不检查每个参数。相反,它将首先迭代所有这些参数,并且当循环将被终止时,您的arg变量中只有最后一个参数,以便它只打印最后一个元素。

尝试更新一个。它只会打印回文参数。

+0

此打印无 无 无 夫人 赛车 船尾 – John

+0

我不希望它打印无 – John

+0

因为这里的is_palindrome功能不是以正确的方式来实现。 –

相关问题