社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

使用python时字符串是否为回文-UnboundLocalError

Aykc • 3 年前 • 1173 次点击  

我创建了一个代码来测试字符串是否是回文。当我给函数一个字符时,测试通过。这时我发现了一个错误:

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'))

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/130636
 
1173 次点击  
文章 [ 2 ]  |  最新文章 3 年前
Mohammad Jafari
Reply   •   1 楼
Mohammad Jafari    3 年前

你应该设定 is_palindrome 正确范围内的变量:

def validPalindrome(str: str) -> bool:
  is_palindrome = False
  ...
Nima Afshar
Reply   •   2 楼
Nima Afshar    3 年前

当你使用 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