我創建了一個代碼來測驗字串是否是回文。當我給函式一個字符時,測驗通過了。這時我得到了這個錯誤:
UnboundLocalError:分配前參考的區域變數“is_palindrome”
"""
Given a string str, return true if the str can be palindrome and false if not.
Input: str = "aba"
Output: true
Input: str = "abc"
Output: false
"""
def validPalindrome(str: str) -> bool:
for i in range(len(str)//2):
is_palindrome = False
if str[i] == str[-i-1]:
is_palindrome = True
if is_palindrome:
return True
else:
return False
print(validPalindrome('aba'))
print(validPalindrome('abc'))
print(validPalindrome('a'))
uj5u.com熱心網友回復:
當您if is_palindrome在函式的第 6 行中使用時,它應該已經定義過。如果您的輸入是單個字符,則您的輸入長度為 1,因此 1//2 = 0。程式永遠不會進入回圈。因此is_palindrome永遠不會被定義。我認為將程式更改為此會有所幫助。
def validPalindrome(str: str) -> bool:
is_palindrome = True
for i in range(len(str)//2):
if str[i] != str[-i-1]:
is_palindrome = False
break
return is_palindrome
uj5u.com熱心網友回復:
您應該is_palindrome在正確的范圍內設定變數:
def validPalindrome(str: str) -> bool:
is_palindrome = False
...
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/455035.html
