小儿无赖 发表于 2023-8-16 19:41:08

代码求助,似乎有点问题,还不小

"""拼音回文数"""
#只看拼音是否构成回文

#输入环节
def input_():
    x = input("请输入一段话:")
    while True:
      if len(x) < 2:
            x = input("字数太少,请重新输入:")
      else:
            break
    return x

#将中文转化为拼音
def translate(x):
    p = Pinyin()
    if len(x) % 2 == 0:
      y = p.get_pinyin(x)
    else:
      x = x[:int(len((x+1)/2))] + x
      y = p.get_pinyin(x)
    return y
      
#判断是否为回文数
def judge(y):
    if y.reversed() == y:
      print("[", x, "]", "是回文。")
    else:
      print("[", x, "]", "不是回文。")
   
#开始程序
from xpinyin import Pinyin
x = input_()
y = translate(x)
judge(y)

求助代码里面的问题
还有,在一个函数执行之后,必须要把一个变量赋给这个函数吗?



学习编程中的Ben 发表于 2023-8-16 19:41:35

代码存在一些问题。以下是修正后的代码:

"""拼音回文数"""
from xpinyin import Pinyin

# 输入环节
def input_():
    x = input("请输入一段话:")
    while True:
      if len(x) < 2:
            x = input("字数太少,请重新输入:")
      else:
            break
    return x

# 将中文转化为拼音
def translate(x):
    p = Pinyin()
    if len(x) % 2 == 0:
      y = p.get_pinyin(x)
    else:
      x = x[:int(len(x)/2)] + x
      y = p.get_pinyin(x)
    return y

# 判断是否为回文数
def judge(x, y):
    if y[::-1] == y:
      print("[", x, "]", "是回文。")
    else:
      print("[", x, "]", "不是回文。")

# 开始程序
x = input_()
y = translate(x)
judge(x, y)


在函数执行之后,并不需要将一个变量赋给这个函数,所以不需要将变量赋值给函数 judge() 。只需要将需要判断的字符串传递给函数即可。

如果你还有其他问题或者需要进一步帮助,请随时告诉我。

如果回答对你有帮助,请给我一个最佳答案!{:10_254:}{:10_254:}{:10_254:}

isdkz 发表于 2023-8-16 19:41:49

在这段代码中,存在几个问题:

1. 在函数 translate 中,计算 x 的长度时使用了 (x+1) ,这是错误的语法。正确的写法是 len(x) + 1 。
2. 在函数 translate 中,使用了 p.get_pinyin(x) 来将中文转化为拼音。然而, p.get_pinyin(x) 返回的是一个拼音字符串,而不是一个拼音对象。因此,在函数 judge 中,使用 y.reversed() 尝试对拼音字符串进行反转是错误的。应该使用 y[::-1] 来反转拼音字符串。
3. 在函数 judge 中,变量 x 没有在函数内部定义,因此无法访问。应该将 x 作为函数的参数传递进来。
4. 在代码的最后,调用了函数 input_ 来获取用户输入,并将结果赋值给变量 x 。然而,在函数 input_ 中,已经定义了一个局部变量 x ,因此无法将结果赋值给外部的全局变量 x 。为了解决这个问题,可以使用 global 关键字来声明变量 x 是全局变量,或者将 input_ 函数的返回值直接赋值给全局变量 x 。

至于你的第二个问题,在一个函数执行之后,不一定需要将一个变量赋给这个函数。这取决于函数的实际需求和设计。有些函数可能需要返回一个结果,以便其他部分的代码可以使用这个结果。但是,有些函数可能只是用来执行一些操作,而不需要返回任何结果。在这种情况下,函数执行后不需要将结果赋给任何变量。

歌者文明清理员 发表于 2023-8-16 19:46:57

judge更正:
def judge(s):
    if s[::-1] == s:
      print(省略
    else:
      print(省略
judge判断的是y,应该输出y
另外关于第二个问题,函数运行完如果有返回值(return xxx)且你想用到它,如果不赋值且不在其他地方继续使用,那么结果就会丢失
(没用电脑

学习编程中的Ben 发表于 2023-8-16 19:47:49

歌者文明清理员 发表于 2023-8-16 19:46
judge更正:

judge判断的是y,应该输出y


和我的gpt代码一样嘿嘿嘿

歌者文明清理员 发表于 2023-8-16 19:48:23

学习编程中的Ben 发表于 2023-8-16 19:47
和我的gpt代码一样嘿嘿嘿

{:10_249:}不一样

小儿无赖 发表于 2023-8-16 19:53:24

歌者文明清理员 发表于 2023-8-16 19:48
不一样

你们两个莫要炒了
页: [1]
查看完整版本: 代码求助,似乎有点问题,还不小