首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >回文在函数内部不工作

回文在函数内部不工作
EN

Stack Overflow用户
提问于 2022-10-27 20:59:46
回答 1查看 32关注 0票数 -2

当我把下面的代码放在def中时,我得到了错误:“UnboundLocalError:局部变量'czy_to_palindrome‘在赋值之前引用”--如果没有。

不起作用:

代码语言:javascript
复制
while True:
    print("Podaj liczbe: ", end="")
    number = input()
    czy_to_palindrome = True
    def palindrome_check(number):
        for i in range(len(number)):
            if number[i] != number[len(number)- i - 1]:
                print("No, ", number, "is NOT a palindrome.")
                czy_to_palindrome = False
                break
        if czy_to_palindrome:
           print("Yes, ",number, "is a palindrome.")

    palindrome_check(number)

作品:

代码语言:javascript
复制
while True:
    print("Podaj liczbe: ", end="")
    number = input()
    czy_to_palindrome = True
    # def palindrome_check(number):
    for i in range(len(number)):
        if number[i] != number[len(number)- i - 1]:
            print("No, ", number, "is NOT a palindrome.")
            czy_to_palindrome = False
            break
    if czy_to_palindrome:
        print("Yes, ",number, "is a palindrome.")

    # palindrome_check(number)

请解释一下我不明白的功能改变。谢谢Begginer的编码。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-27 21:22:20

正如他们在注释中所说的,只需添加一个全局变量或将变量传递给函数即可。以下是两种选择:

代码语言:javascript
复制
  while True:
        print("Podaj liczbe: ", end="")
        number = input()
        czy_to_palindrome = True
        def palindrome_check(number, czy_to_palindrome):
            for i in range(len(number)):
                if number[i] != number[len(number)- i - 1]:
                    print("No, ", number, "is NOT a palindrome.")
                    czy_to_palindrome = False
                    break
            if czy_to_palindrome:
               print("Yes, ",number, "is a palindrome.")
    
        palindrome_check(number, czy_to_palindrome)

代码语言:javascript
复制
while True:
    print("Podaj liczbe: ", end="")
    number = input()
    czy_to_palindrome = True
    def palindrome_check(number):
        global czy_to_palindrome
        for i in range(len(number)):
            if number[i] != number[len(number)- i - 1]:
                print("No, ", number, "is NOT a palindrome.")
                czy_to_palindrome = False
                break
        if czy_to_palindrome:
           print("Yes, ",number, "is a palindrome.")

    palindrome_check(number)

选择取决于您想要实现什么,如果变量确实是您需要在程序的其余部分中更改并保持不变的变量,则使用“全局”,否则使用use参数传递。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74228248

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档