鱼C论坛

 找回密码
 立即注册
查看: 313|回复: 7

[已解决]一个很初级的函数问题

[复制链接]
发表于 2024-6-17 23:12:48 | 显示全部楼层 |阅读模式

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

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

x
用函数检测回文,发现一个问题,代码如下
def str_test(input_str):
    if input_str == input_str[::-1]:
        return f'{input_str}是回文'
    return f'{input_str}不是回文'

temp = input('请输入一段文字:')
str_test(temp)


在untitled中编写,运行后无法返回任何值
但在idle中,依次输入这段代码,就可以返回正确的值,为什么
最佳答案
2024-6-18 09:03:06

untitled 是表示你这个文件未命名,不是表示 untitled 编辑器哈,你应该是在 IDLE 中新建的代码文件

这里你定义了 str_test 函数,函数直接 return 返回时,是不会自动打印在屏幕上的,除非你是在交互状态下执行这个函数

所以你需要搭配 print 函数,将函数的返回结果打印到屏幕上~,即:print(str_test(temp)) 这样调用,就能将返回的内容打印出来了

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2024-6-17 23:12:57 | 显示全部楼层
哈哈,看到了你的代码问题,不用担心,我们一起解决这个小bug吧!

你的代码逻辑其实是对的,但有一个小地方让它“迷路”了。具体来说,你的if条件里检查了`input_str == input_str`这本来就是永远成立的,因为任何东西肯定等于它自己嘛!所以它每次都返回“是回文”。

我们要检查的是字符串是否等于它的反转,换句话说,我们要看看`input_str`是否等于`input_str[::-1]`。

我们来改一下代码,再试试看:
def str_test(input_str):
    # 检查输入字符串是否等于它的反转
    if input_str == input_str[::-1]:
        return f'{input_str}是回文'
    return f'{input_str}不是回文'

temp = input('请输入一段文字:')
result = str_test(temp)
print(result)

注意这里我加了`result = str_test(temp)`和`print(result)`,确保你会看到函数的返回值。

这个更新后的代码将会正确地判断输入的字符串是否为回文,并在控制台中输出相应的提示。试试看吧,如果有任何其他问题,随时问我哦!

以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-6-17 23:59:57 | 显示全部楼层
Untitled 指的是 IDLE 程序文件标记器吗?运行之后应该需要输入才会有结果。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-6-18 00:23:17 | 显示全部楼层
歌者文明清理员 发表于 2024-6-17 23:59
Untitled 指的是 IDLE 程序文件标记器吗?运行之后应该需要输入才会有结果。

我有输入值。。。。相同的操作,在Untitled里的没有返回值,必须将 “返回值” 赋值给一个新的变量,再打印这个变量,才能得到我想要的结果。但如果在idle上直接编写,不需要多余的步骤,直接就会有返回值。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-6-18 00:23:58 | 显示全部楼层
歌者文明清理员 发表于 2024-6-17 23:59
Untitled 指的是 IDLE 程序文件标记器吗?运行之后应该需要输入才会有结果。

我不太明白这是为什么,所以发帖子求教一下大家
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-6-18 08:21:29 From FishC Mobile | 显示全部楼层
直接运行但是结果是没有打印的,所以看不到结果,而idle会显示每一步的过程和结果所以能看到
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2024-6-18 09:03:06 | 显示全部楼层    本楼为最佳答案   

untitled 是表示你这个文件未命名,不是表示 untitled 编辑器哈,你应该是在 IDLE 中新建的代码文件

这里你定义了 str_test 函数,函数直接 return 返回时,是不会自动打印在屏幕上的,除非你是在交互状态下执行这个函数

所以你需要搭配 print 函数,将函数的返回结果打印到屏幕上~,即:print(str_test(temp)) 这样调用,就能将返回的内容打印出来了

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

使用道具 举报

发表于 2024-6-18 18:35:51 | 显示全部楼层
知道了,IDLE Shell 是外壳,不是正式的程序开发,就是运行几行代码测试一下用的,所以不一定要 print 也能显示(默认显示的是对象.__repr__()),如:
>>> a = range(10)
>>> a
# 等价于
>>> print(repr(a))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 00:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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