Fasilzy 发表于 2023-11-7 15:27:55

是不是变量命名有问题

这个报错,错误是UnboundLocalError: cannot access local variable 'sentence' where it is not associated with a value
有大佬帮忙瞅瞅嘛QuQ{:5_110:}

from xpinyin import Pinyin
   
def getstr():
    sentence = input("请输入一句话")
    while len(sentence)< 2 :
      sentence = input("字数太少,请重新输入")
    return sentence

def getpy():
    p =Pinyin()
    sentence = p.get_pinyin(sentence)
    sentence = sentence.split("-")
    return sentence

def yesno():
    if sentencetrans == sentencetrans[::-1]:
      print(f"{sentence}是回文")

    else:
      print(f"{sentence}不是回文")

sentence = getstr()
sentencetrans = getpy()

getstr()
getpy()
yesno()

      

isdkz 发表于 2023-11-7 15:28:09

问题出在变量命名上。在函数 getpy() 中,你尝试使用变量 sentence ,但是这个变量并没有在 getpy() 函数的作用域内定义,所以会报错。为了解决这个问题,你需要将 sentence 作为参数传递给 getpy() 函数,并在函数内部使用该参数。

修改后的代码如下:

from xpinyin import Pinyin

def getstr():
    sentence = input("请输入一句话")
    while len(sentence) < 2:
      sentence = input("字数太少,请重新输入")
    return sentence

def getpy(sentence):
    p = Pinyin()
    sentence = p.get_pinyin(sentence)
    sentence = sentence.split("-")
    return sentence

def yesno():
    if sentencetrans == sentencetrans[::-1]:
      print(f"{sentence}是回文")
    else:
      print(f"{sentence}不是回文")

sentence = getstr()
sentencetrans = getpy(sentence)

getstr()
getpy(sentence)
yesno()


这样修改后,你就可以在 getpy() 函数中正确访问到 sentence 变量了。

Mike_python小 发表于 2023-11-7 15:28:14

问题:Python代码中的变量命名问题

在你的代码中,的确存在一个变量命名的问题,导致了 UnboundLocalError。这个错误表明在函数内部试图访问一个未赋值的本地变量。让我们来修改一下代码:


from xpinyin import Pinyin

def get_str():
    sentence = input("请输入一句话")
    while len(sentence) < 2:
      sentence = input("字数太少,请重新输入")
    return sentence

def get_py(sentence):
    p = Pinyin()
    sentence = p.get_pinyin(sentence)
    sentence = sentence.split("-")
    return sentence

def yes_no(sentencetrans, sentence):
    if sentencetrans == sentencetrans[::-1]:
      print(f"{sentence}是回文")
    else:
      print(f"{sentence}不是回文")

sentence = get_str()
sentencetrans = get_py(sentence)
yes_no(sentencetrans, sentence)


上面的修改主要包括以下几点:
1. 将函数名从 getstr 修改为 get_str,遵循了 Python 的命名规范。
2. 在 get_py 函数中增加了一个参数 sentence,以便在函数内部能够正确访问该变量。
3. 修改了 yes_no 函数的定义,增加了两个参数 sentencetrans 和 sentence,以便在函数内部正确使用这两个变量。

通过这些修改,你的代码应该可以正常运行了。

球一个最佳答案谢谢啦!这对我非常重要!{:10_254:}{:10_254:}{:10_254:}
页: [1]
查看完整版本: 是不是变量命名有问题