请求实现含抛硬币、掷D6/D20骰子、抽卡牌的Python交互游戏
游戏面板作业完整实现方案
功能实现说明
- 抛硬币:通过生成0或1的随机数对应正反结果,返回指定格式字符串
- 掷6面骰子(D6):生成1-6的随机整数,返回结果字符串
- 掷20面骰子(D20):生成1-20的随机整数,返回结果字符串
- 随机抽牌:先随机选择花色(0-3对应黑桃、红桃、方块、梅花),再随机选择牌面(1-13),将特殊牌面(1、11-13)转换为Ace、Jack、Queen、King,最后组合成结果字符串
- 循环交互:通过持续循环显示菜单,支持用户重复操作,输入指定指令可退出程序,同时处理无效输入的提示
完整代码实现
import random def flip_coin(): # 生成0或1的随机整数,对应硬币正反 result = random.randint(0, 1) return "Coin flip: Tails" if result == 0 else "Coin flip: Heads" def roll_d6(): # 生成1-6的随机整数作为D6结果 roll_num = random.randint(1, 6) return f"D6 roll: {roll_num}" def roll_d20(): # 生成1-20的随机整数作为D20结果 roll_num = random.randint(1, 20) return f"D20 roll: {roll_num}" def pick_card(): # 花色映射列表 suits = ["spades", "hearts", "diamonds", "clubs"] # 特殊牌面值映射字典 value_map = {1: "Ace", 11: "Jack", 12: "Queen", 13: "King"} # 随机选择花色和牌面数字 suit_index = random.randint(0, 3) value_num = random.randint(1, 13) # 处理牌面值:特殊值用映射,其余直接转字符串 card_value = value_map.get(value_num, str(value_num)) return f"Your card: {card_value} of {suits[suit_index]}" # 主循环:持续运行直到用户选择退出 while True: print('Welcome to the game center!\nHere are your options:') print('\t1) Flip a coin\n\t2) Pick a random playing card') print('\t3) Roll a 6-sided dice\n\t4) Roll a 20-sided dice') print('\tq) Quit the game') choice = input('What would you like to do? ').strip().lower() # 根据用户选择执行对应功能 if choice == '1': print(flip_coin()) elif choice == '2': print(pick_card()) elif choice == '3': print(roll_d6()) elif choice == '4': print(roll_d20()) elif choice == 'q': print("Thanks for playing! Goodbye.") break else: print("Invalid choice, please enter 1, 2, 3, 4 or q to quit.")
代码补充说明
- 每个功能函数严格按照需求实现随机逻辑和结果格式
- 主循环通过
while True维持运行,用户输入q时触发退出 - 增加输入预处理:统一转为小写并去除空格,避免大小写或空格导致的识别错误;对无效输入给出明确提示,提升交互体验
内容的提问来源于stack exchange,提问作者jake
相关产品推荐
相关产品推荐

