I am brand new to coding and working my way through an intro class via Zybooks. This challenge activity is asking me to add one point to user_score for every letter that is a match and break the loop when there is a mismatch. Simon_pattern and user_pattern are both input. This is the code I have so far:
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)
The code works, but the returned value is wrong. Given simon_pattern ='RRGBRYYBGY'and user_pattern = 'RRGBBRYBGY' the output should be User Score: 4, but my User Score is coming out as 3.
I'm not quite sure what part of my code needs fixing and unfortunately zybooks does not give you any hints. Thanks in advance for the help of this awesome community!!
Hi and welcome to coding! A few notes: Notice how the input()
function is used to gather input from the user? Because of this, it is considered a keyword and it is bad practice to name your variables input
, because it will overwrite the reference to the function.
Now considering your problem. Instead of a nested loop I would use a single for
lop and check the characters at each index within both strings. If they match, add a point. Otherwise, break the loop. You also want to stop the loop if it goes beyond the number of characters in either pattern. One trick for that is to find the minimum length between both patterns. The min
function is useful for this.
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)