You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 06:15:29