鱼C论坛

 找回密码
 立即注册
查看: 480|回复: 5

[学习笔记] 关于29讲动动手001:这两段代码作出相同输入,有可能返回不一样结果吗?

[复制链接]
发表于 2025-3-12 15:58:02 | 显示全部楼层 |阅读模式
10鱼币
s = input('')
   
n = len(s)
for i in range(1, n//2+1):
    if n % i == 0:
        if s.startswith(s[i:i*2]) and s.count(s[i:i*2]) == n/i:
            print(True)
else:
    print(False)


上下两段代码,在作出相同输入的情况下,有可能返回不一样的结果吗?

s = input('')
   
n = len(s)
for i in range(1, n//2+1):
    if n % i == 0:
        if s.count(s[i:i*2]) == n/i:
            print(True)
else:
    print(False)

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

使用道具 举报

发表于 2025-3-12 15:58:16 | 显示全部楼层
你的两段代码在相同输入的情况下,确实有可能返回不一样的结果。让我们分析一下它们的区别:

第一段代码:
startLine: 2
endLine: 10
在 `if` 语句中包含了 `s.startswith(s)`,但 `s.startswith(s)` 永远为 `True`,因为 `s` 一定是以 `s` 开头的,所以这个条件没有实际作用。

第二段代码:
startLine: 12
endLine: 18
去掉了 `s.startswith(s)`,但仍然保留了 `s.count(s) == n / i` 这个条件。

### 关键问题:
`s.count(s) == n / i` 这个条件是错误的,因为 `s.count(s)` 只会返回 `1`(`s` 在 `s` 中出现的次数是 1),而 `n / i` 可能是其他值,所以这个条件几乎总是 `False`,导致第二段代码不会输出 `True`,而第一段代码可能会(尽管 `s.startswith(s)` 没有实际作用)。

### 结论:
两段代码在相同输入下,可能会返回不同的结果。第二段代码基本上不会输出 `True`,而第一段代码在某些情况下可能会。

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

使用道具 举报

 楼主| 发表于 2025-3-13 10:34:33 | 显示全部楼层
@FishC
具体是输入什么相同的内容,会出现不一样的结果?请具体列出输出的相同内容
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2025-3-13 10:36:45 | 显示全部楼层
ioriqq123 发表于 2025-03-13 10:34
@FishC
具体是输入什么相同的内容,会出现不一样的结 ...


Could you clarify which programming language or context you're referring to? Are you asking about non-deterministic behavior in a program, such as when using random number generation, multi-threading, or floating-point calculations? Let me know the details, and I'll be happy to help!

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

使用道具 举报

发表于 2025-3-14 20:43:11 | 显示全部楼层
这个AI 回复的是不是不太对
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2025-3-22 18:52:44 | 显示全部楼层
本帖最后由 HuangBin2025 于 2025-3-22 18:56 编辑

输入相同,不会返回不一样的结果。在 `if` 语句中包含了 `s.startswith(s[i:i*2])`,但 `s.startswith(s[i:i*2])` 永远为 `True`,因为 `s[i:i*2]` 一定是以 `s` 开头的,所以这个条件没有实际作用。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-3 04:25

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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