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

Python滑板随机动作小游戏积分无法累加问题求助

问题根因
  • 你在main函数内部直接操作points变量时,Python默认将其识别为函数局部变量,不会修改全局定义的积分变量,每次重新调用main时积分都会重置。
  • 原逻辑存在两处赋值错误:答对时写points = 1是直接把积分设为1而非累加1分;答错时points = int(0)会清空之前所有累计积分,不符合「失败不得分」的规则。
修复代码

你只需要调整变量声明和积分赋值逻辑即可,修改后的完整代码如下:

import random
import time

print()
print("Welcome to 'Can you really skate?'")
print()
# 定义难度等级
print("Level")
print("1: Beginner")
print("2: Intermediate")
print("3: Kind of advanced")
print("4: Advanced")

level = input("Choose your level: ")
points = 0

def main():
    # 声明要修改全局的points变量
    global points
    if level == "1":
        stance = ["fakie", "switch", "regular", "nollie"]
        trick = ["ollie", "shuv-it", "frontside 180", "backside 180"]
        print("Your random trick is:", random.choice(stance), " ", random.choice(trick))

    elif level == "2":
        stance = ["fakie", "switch", "regular", "nollie"]
        trick = ["ollie", "shuv-it", "frontside 180", "backside 180", "kickflip", "heelflip", "popshuv-it", "frontside popshuv-it", "bigspin", "varialkickflip"]
        print("Your random trick is:", random.choice(stance), " ", random.choice(trick))
    
    # 可自行补充3、4级对应的动作库
    elif level in ["3", "4"]:
        print("待补充对应等级的动作库")

    time.sleep(4)

    print("did you make your trick? ")
    make = input("yes / no ?")

    if make == "yes":
        # 积分累加1
        points += 1
    # 答错不做操作,积分保持不变

    print(f"You have {points} points")

    play = input("play again? yes/no ?")

    if play =="yes":
        main()
    elif play =="no":
        print("you have completed the game, your final score is: ", points)
        exit()

main()
可选优化建议
  • 把递归调用main()的逻辑改成while循环,避免游玩次数过多时出现递归栈溢出问题
  • 补充3、4级难度对应的动作列表,完善等级功能
  • 增加输入校验逻辑,避免用户输入非yes/no的内容时程序报错

内容的提问来源于stack exchange,提问作者nibberlyslip

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 21:27:04