Simon说挑战活动



我对通过Zybooks编写介绍类的编码和工作是全新的。这个挑战活动要求我为每个匹配的字母在user_score上加一分,并在不匹配时打破循环。Simon_Pttern和user_pattern都是输入。这是我迄今为止的代码:

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

for character in simon_pattern:
for input in user_pattern:
if input == character:
user_score += 1
continue

if input != character:
break

print('User score:', user_score)

代码有效,但返回的值是错误的。给定simon_ppattern='RRGBRYYBGY'和user_pattern='RRGBBRYBGY',输出应该是user Score:4,但我的user Score是3。

我不太确定我的代码的哪一部分需要修复,不幸的是zybooks没有给你任何提示。提前感谢这个了不起的社区的帮助!!

大家好,欢迎使用编码!注意:注意input()函数是如何用于收集用户输入的?因此,它被认为是一个关键字,将变量命名为input是不好的做法,因为它会覆盖对函数的引用。

现在考虑你的问题。我将使用一个for触发器来检查两个字符串中每个索引处的字符,而不是嵌套循环。如果匹配,则加一分。否则,中断循环。如果循环超出任一模式中的字符数,您还需要停止循环。其中一个技巧是找到两种模式之间的最小长度。min函数对此非常有用。

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

length = min(len(simon_pattern), len(user_pattern))
for i in range(length):
if user_pattern[i] == simon_pattern[i]:
user_score += 1
else:
break

print('User score:', user_score)

这应该有效:

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

for simon_character, user_character in zip(simon_pattern, user_pattern):
if simon_character == user_character:
user_score += 1
else:
break
print('User score:', user_score)

注意不要重新定义Python关键字,例如inputprint。如果你需要重新使用这些功能,你的程序的其余部分可以修改

它可能不再相关,但这里有另一种解决该问题的方法:

user_score = 0
simon_pattern = input()
user_pattern  = input()
for i in range(10):
if simon_pattern[i] == user_pattern[I]:
user_score += 1
continue
else:
break
print('User score:', user_score)

我的问题是不记得如何一次一个字母地比较这两个字符串。因此,对于任何碰巧参加类似课程的人来说,这是一个使用您已经学到的信息的解决方案。我不确定这是否是最有效的解决方案,但它确实有效。

最新更新