You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Zybooks入门课Simon Says挑战:代码得分计算结果错误求助

问题分析与修复

你的代码核心问题是使用了嵌套循环,这完全不符合“逐个位置对比字符,不匹配则立即终止”的需求。嵌套循环会导致每次遍历simon_pattern的一个字符时,都完整遍历一遍user_pattern的所有字符,最终计数逻辑完全混乱。

错误代码的问题点

以测试用例simon_pattern='RRGBRYYBGY'、user_pattern='RRGBBRYBGY'为例:

  • 外层循环第一个字符是R,内层循环会遍历user_pattern的所有字符,把所有R都计入分数,这已经偏离了“对应位置匹配”的要求;
  • 后续循环的逻辑也完全错位,最终导致实际得分与预期不符。

修复后的代码

我们需要逐个对比两个字符串对应位置的字符,匹配则加分,不匹配立即终止循环。以下是两种可行的实现方式:

方式1:使用索引遍历

user_score = 0
simon_pattern = input()
user_pattern = input()

# 遍历两个字符串中较短的长度,避免索引越界
for i in range(min(len(simon_pattern), len(user_pattern))):
    if simon_pattern[i] == user_pattern[i]:
        user_score += 1
    else:
        break  # 不匹配时直接终止循环

print('User score:', user_score)

方式2:使用zip()函数配对字符

zip()会自动将两个字符串对应位置的字符配对,直到其中一个字符串遍历完毕:

user_score = 0
simon_pattern = input()
user_pattern = input()

for simon_char, user_char in zip(simon_pattern, user_pattern):
    if simon_char == user_char:
        user_score += 1
    else:
        break

print('User score:', user_score)

验证测试用例

对于你提供的测试输入:

  • simon_pattern='RRGBRYYBGY',user_pattern='RRGBBRYBGY'
  • 前4个字符RRGB完全匹配,第5个字符R(simon)与B(user)不匹配,循环终止,最终得分为4,符合预期。

内容的提问来源于stack exchange,提问作者SwanSong

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 14:15:41