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
相关产品推荐
相关产品推荐

