鱼C论坛

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

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

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

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

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

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

#输入环节
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[int(len((x+1)/2)):]
        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)
求助代码里面的问题
还有,在一个函数执行之后,必须要把一个变量赋给这个函数吗?



最佳答案
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[int(len(x)/2)+1:]        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() 。只需要将需要判断的字符串传递给函数即可。

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

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

使用道具 举报

发表于 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[int(len(x)/2)+1:]        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() 。只需要将需要判断的字符串传递给函数即可。

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

如果回答对你有帮助,请给我一个最佳答案!
想知道小甲鱼最近在做啥?请访问 -> 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更正:
def judge(s):
    if s[::-1] == s:
        print(省略
    else:
        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-12-25 10:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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