1 回答

TA貢獻1833條經驗 獲得超4個贊
你的問題是不正確的縮進:
for i in range(0,len(password)):
for j in range(0,len(guess)):
if(guess[j]==password[i]):
numCorrect=numCorrect+1
for i in range(0,len(password)):
if(guess[i]==password[i]):
posNumCorrect=posNumCorrect+1
您的外循環的索引為i,然后您可以在第二個內循環中劫持并更改該索引。這將i超過循環限制,在第一次迭代時退出外循環。
您需要將第二個“內部”循環和所有后續代碼拉回到其正確位置,向左縮進一個,離開第一個循環。
def reportResult(password,guess):
'''Reports users results, see if positions/numbers are correct'''
numCorrect = 0
posNumCorrect = 0
for i in range(len(password)):
for j in range(len(guess)):
if(guess[j] == password[i]):
numCorrect = numCorrect+1
for i in range(len(password)):
if(guess[i] == password[i]):
posNumCorrect = posNumCorrect+1
if(posNumCorrect == 5):
return True
else:
print(numCorrect," of 5 correct digits.")
print(posNumCorrect," of 5 correct locations.")
return False
輸出:
I've set my password, enter 5 digits in the range [1-9] (e.g. 9 3 2 4 7):
[8, 2, 4, 5, 6]
10 guesses remaining.
> 8 3 4 5 6
4 of 5 correct digits.
4 of 5 correct locations.
9 guesses remaining.
> 3 8 4 6 5
4 of 5 correct digits.
1 of 5 correct locations.
8 guesses remaining.
>
添加回答
舉報