如何将Python猜密码代码中的while循环替换为for循环
猜密码代码while循环改for循环实现方案
首先修正原代码的缩进错误:原代码中print("Password guessed correctly")缩进层级错误,放在了while循环内部,会导致每次输入密码无论对错都会打印该提示,不符合功能逻辑。修改后转for循环的两种实现如下:
方案1:保留「无限次猜测直到猜对」的原生逻辑
利用Python内置iter()函数的哨兵参数特性,可以生成符合终止条件的迭代器,配合for循环实现和原while逻辑完全一致的效果:
correct_password = "pa55word" guesses = 0 # iter第二个参数为哨兵值,当输入内容等于哨兵值时循环自动终止 for guess in iter(lambda: input("请尝试猜密码:"), correct_password): guesses += 1 # 猜对后跳出循环,执行后续统计逻辑 guesses += 1 # 最后一次猜对的尝试需要计入总次数 print("密码猜测正确") if guesses == 1: print("你总共猜了1次") else: print(f"你总共猜了{guesses}次")
方案2:增加最大猜测次数限制
如果需要限制最多猜N次(比如最多猜5次,全部猜错就锁定访问),直接用range生成固定次数的迭代器即可:
correct_password = "pa55word" max_guesses = 5 guesses = 0 for _ in range(max_guesses): guess = input("请尝试猜密码:") guesses += 1 if guess == correct_password: print("密码猜测正确") break else: # for循环正常结束(没有触发break)说明N次全部猜错 print(f"你已经猜错{max_guesses}次,访问被锁定") exit() if guesses == 1: print("你总共猜了1次") else: print(f"你总共猜了{guesses}次")
内容的提问来源于stack exchange,提问作者Hamzah Nasser
相关产品推荐
相关产品推荐

