2017-09-23 66 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功能不是以正確的方式來實現。 –

相關問題