鱼C论坛

 找回密码
 立即注册
查看: 1119|回复: 6

[已解决]代码求助,似乎有点问题,还不小

[复制链接]
发表于 2023-8-16 19:41:08 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
  1. """拼音回文数"""
  2. #只看拼音是否构成回文

  3. #输入环节
  4. def input_():
  5.     x = input("请输入一段话:")
  6.     while True:
  7.         if len(x) < 2:
  8.             x = input("字数太少,请重新输入:")
  9.         else:
  10.             break
  11.     return x

  12. #将中文转化为拼音
  13. def translate(x):
  14.     p = Pinyin()
  15.     if len(x) % 2 == 0:
  16.         y = p.get_pinyin(x)
  17.     else:
  18.         x = x[:int(len((x+1)/2))] + x[int(len((x+1)/2)):]
  19.         y = p.get_pinyin(x)
  20.     return y
  21.         
  22. #判断是否为回文数
  23. def judge(y):
  24.     if y.reversed() == y:
  25.         print("[", x, "]", "是回文。")
  26.     else:
  27.         print("[", x, "]", "不是回文。")
  28.    
  29. #开始程序
  30. from xpinyin import Pinyin
  31. x = input_()
  32. y = translate(x)
  33. judge(y)

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



最佳答案
2023-8-16 19:41:35
代码存在一些问题。以下是修正后的代码:
  1. """拼音回文数"""
  2. from xpinyin import Pinyin
  3. # 输入环节
  4. def input_():
  5.     x = input("请输入一段话:")
  6.     while True:
  7.         if len(x) < 2:
  8.             x = input("字数太少,请重新输入:")
  9.         else:
  10.             break
  11.     return x
  12. # 将中文转化为拼音
  13. def translate(x):
  14.     p = Pinyin()
  15.     if len(x) % 2 == 0:
  16.         y = p.get_pinyin(x)
  17.     else:
  18.         x = x[:int(len(x)/2)] + x[int(len(x)/2)+1:]
  19.         y = p.get_pinyin(x)
  20.     return y
  21. # 判断是否为回文数
  22. def judge(x, y):
  23.     if y[::-1] == y:
  24.         print("[", x, "]", "是回文。")
  25.     else:
  26.         print("[", x, "]", "不是回文。")
  27. # 开始程序
  28. x = input_()
  29. y = translate(x)
  30. judge(x, y)
复制代码

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

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

如果回答对你有帮助,请给我一个最佳答案!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-8-16 19:41:35 | 显示全部楼层    本楼为最佳答案   
代码存在一些问题。以下是修正后的代码:
  1. """拼音回文数"""
  2. from xpinyin import Pinyin
  3. # 输入环节
  4. def input_():
  5.     x = input("请输入一段话:")
  6.     while True:
  7.         if len(x) < 2:
  8.             x = input("字数太少,请重新输入:")
  9.         else:
  10.             break
  11.     return x
  12. # 将中文转化为拼音
  13. def translate(x):
  14.     p = Pinyin()
  15.     if len(x) % 2 == 0:
  16.         y = p.get_pinyin(x)
  17.     else:
  18.         x = x[:int(len(x)/2)] + x[int(len(x)/2)+1:]
  19.         y = p.get_pinyin(x)
  20.     return y
  21. # 判断是否为回文数
  22. def judge(x, y):
  23.     if y[::-1] == y:
  24.         print("[", x, "]", "是回文。")
  25.     else:
  26.         print("[", x, "]", "不是回文。")
  27. # 开始程序
  28. x = input_()
  29. y = translate(x)
  30. judge(x, y)
复制代码

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

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

如果回答对你有帮助,请给我一个最佳答案!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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 。

至于你的第二个问题,在一个函数执行之后,不一定需要将一个变量赋给这个函数。这取决于函数的实际需求和设计。有些函数可能需要返回一个结果,以便其他部分的代码可以使用这个结果。但是,有些函数可能只是用来执行一些操作,而不需要返回任何结果。在这种情况下,函数执行后不需要将结果赋给任何变量。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-16 19:46:57 | 显示全部楼层
judge更正:
  1. def judge(s):
  2.     if s[::-1] == s:
  3.         print(省略
  4.     else:
  5.         print(省略
复制代码

judge判断的是y,应该输出y
另外关于第二个问题,函数运行完如果有返回值(return xxx)且你想用到它,如果不赋值且不在其他地方继续使用,那么结果就会丢失
(没用电脑
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-16 19:47:49 | 显示全部楼层
歌者文明清理员 发表于 2023-8-16 19:46
judge更正:

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

和我的gpt代码一样嘿嘿嘿
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-8-16 19:48:23 | 显示全部楼层
学习编程中的Ben 发表于 2023-8-16 19:47
和我的gpt代码一样嘿嘿嘿

不一样
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-8-16 19:53:24 | 显示全部楼层

你们两个莫要炒了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-20 20:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表