Angela Yu Python100天Day14:Higher or Lower游戏逻辑疑问
Higher or Lower游戏核心逻辑疑问解答
一、为什么account_a = account_b能复用上一轮的正确答案?
这是变量赋值的执行顺序决定的:
- 进入循环时,
account_a = account_b先执行,此时account_b存储的还是上一轮游戏结束时的正确账号(因为上一轮答对后,循环继续,还没重新生成新的account_b)。 - 紧接着执行
account_b = get_random_account(),才会生成一个全新的随机账号。 - 这样就自然把上一轮的正确答案(原
account_b)赋值给了新的account_a,实现了复用需求。
简单说:先把旧值传给A,再给B换新值,顺序不能反。
二、用return返回获胜答案作为game()参数的思路是否可行?
完全可行,而且逻辑更直观,符合你一开始的思考路径。
你可以修改game()函数,让它接受一个可选参数(比如prev_winner),第一次调用时不传参数,随机生成初始账号;答对后,把本轮的获胜账号作为参数传入下一次调用的game(),直接作为下一轮的account_a。
示例代码如下:
def game(prev_winner=None): print(logo) score = 0 # 初始化账号:有上一轮获胜账号就用它当A,否则随机生成 account_a = prev_winner if prev_winner else get_random_account() account_b = get_random_account() # 避免A和B是同一个账号 while account_a == account_b: account_b = get_random_account() print(f"Compare A: {format_data(account_a)}.") print(vs) print(f"Against B: {format_data(account_b)}.") guess = input("Who has more followers? Type 'A' or 'B': ").lower() a_follower_count = account_a["follower_count"] b_follower_count = account_b["follower_count"] is_correct = check_answer(guess, a_follower_count, b_follower_count) clear() print(logo) if is_correct: score += 1 print(f"You're right! Current score: {score}.") # 确定本轮获胜账号,传入下一轮游戏 winning_account = account_a if guess == 'a' else account_b # 递归调用game,继续游戏 game(winning_account) else: print(f"Sorry, that's wrong. Final score: {score}")
这样的写法逻辑更清晰,每一轮的获胜账号都明确传递给下一轮,比参考答案的变量覆盖方式更容易理解。
内容的提问来源于stack exchange,提问作者Did_Vidurina
相关产品推荐
相关产品推荐

