为何满足条件时代码最后一行仍无法执行?来自《Automate The Boring Stuff》
问题原因
当猜对数字时,代码执行了else: break分支,直接跳出for循环。循环体中break之后的所有代码(包括你写的判断猜对的if语句)都不会被执行,所以祝贺语句永远无法显示。
修复方案
方案一:将祝贺语句移到猜对的分支内
直接在猜对时先打印祝贺信息,再跳出循环,确保信息能被输出:
import random secret_number = random.randint(1, 20) print("I'm thinking of a number between 1 and 20") for guesses_taken in range(1, 7): guess = int(input("Take a guess: ")) if guess < secret_number: print("This number is too low") elif guess > secret_number: print("This number is too high") else: print(f"Good job! You guessed my number in {guesses_taken} guesses!") break if guesses_taken == 6: print(f"Nope, the number I was thinking about was {secret_number}")
方案二:用标记变量统一处理结果
通过变量记录是否猜对,循环结束后再输出对应信息,结构更清晰:
import random secret_number = random.randint(1, 20) print("I'm thinking of a number between 1 and 20") guessed_correctly = False for guesses_taken in range(1, 7): guess = int(input("Take a guess: ")) if guess < secret_number: print("This number is too low") elif guess > secret_number: print("This number is too high") else: guessed_correctly = True break if guessed_correctly: print(f"Good job! You guessed my number in {guesses_taken} guesses!") else: print(f"Nope, the number I was thinking about was {secret_number}")
内容的提问来源于stack exchange,提问作者Nuela
相关产品推荐
相关产品推荐

