Python 3 Simon说进行循环字符串比较

2024-04-25 03:36:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我对python 3还不熟悉,我觉得我正在以最坏的方式学习。一切都是通过一本叫做zybooks的在线教科书。我一直在尝试理解for循环,对于我应该编写的程序,我必须使用for循环。

这里有一些说明:“Simon Says”是一个记忆游戏,其中“Simon”输出10个字符(R、G、B、Y)的序列,用户必须重复该序列。创建比较两个字符串的for循环。对于每一场比赛,在用户得分上加一分。如果不匹配,结束游戏。例:以下模式的用户得分为4:

simonPattern:R,R,G,B,R,Y,Y,B,G,Y

用户模式:R,R,G,B,B,R,Y,B,G,Y

首先我得到这个:

user_score = 0
simon_pattern = 'RRGBRYYBGY'
user_pattern  = 'RRGBBRYBGY'
print('User score:', user_score)

我通过了第一次“测试”,代码如下:

user_score = 0
simon_pattern = 'RRGBRYYBGY'
user_pattern  = 'RRGBBRYBGY'
for simon_pattern in str(simon_pattern):
    for user_pattern in str(user_pattern):
        if str(simon_pattern) == str(user_pattern):
            user_score += 1
            continue
        if str(simon_pattern) != str(user_pattern):
            break
print('User score:', user_score)

问题是当它进行第二次测试时,我的输出仍然是User score:4,而不是User score:7(simon_pattern和User_pattern的字符串在第二次测试中更改)

我知道我需要一次比较字符串中的每个元素,然后加上+1,一旦两个元素不匹配,我的循环就需要停止。我试过:

user_score = 0
simon_pattern = 'RRGBRYYBGY'
user_pattern  = 'RRGBBRYBGY'
for s in simon_pattern:
    for u in user_pattern:
        if simon_pattern [0] == user_pattern [0]:
            user_score += 1
        if simon_pattern [0] != user_pattern [0]:
            break
        if simon_pattern [1] == user_pattern [1]:
            user_score += 1
        if simon_pattern [1] != user_pattern [1]:
            break

(然后我继续上面的循环,直到到达[9]并打印用户的分数,但这也不起作用。)

我试过将len(simon_pattern)与len(user_pattern)进行比较,但这会返回一个错误,告诉我它不能执行该函数,因为我有字符串而不是整数。

我想知道是否有人能告诉我我做错了什么,或者给我指明正确的方向。因为现在我不知道我做错了什么,为什么。很抱歉这段时间太长了,但我想尽可能详细地解释一下。谢谢你的帮助。


Tags: 字符串用户inforifpatternscoresimon
2条回答

第二次尝试代码(for s in simon_pattern ...)的问题是,您将simon_pattern中的每个suser_pattern中的每个u进行比较。你需要把这些联系起来(通常是用索引),这样你只需要比较第一个和第一个,第二个和第二个等等

使用索引会容易得多:

user_score = 0
simon_pattern = 'RRGBRYYBGY'
user_pattern  = 'RRGBBRYBGY'
for i in range(len(simon_pattern)):
    if user_pattern[i] == simon_pattern[i]:
        user_score += 1
    else:
        break

相关问题 更多 >