现有Bingo宾果卡片生成代码,如何实现叫号输入及对应空格标记功能
宾果游戏新增号码标记功能实现
需求说明
- 原有代码已实现宾果卡片随机生成、打印功能
- 新增需求:支持用户输入被叫号码后,将卡片上对应数字的位置标记为空白
完整可运行代码
import random def generate_card(): """ 生成宾果卡片,以字典格式存储各列数字 """ card = { "B": [], "I": [], "N": [], "G": [], "O": [], } min_num = 1 max_num = 15 # B列对应数字范围1-15 for letter in card: # 每个列随机取5个不重复数字 card[letter] = random.sample(range(min_num, max_num + 1), 5) min_num += 15 max_num += 15 # 每列数字范围递增15 if letter == "N": card[letter][2] = "X" # N列第三个位置为免费空位,默认标记 return card def print_card(card): """ 打印宾果卡片 参数: card (dict): 要打印的宾果卡片对象 """ for letter in card: print(letter, end="\t") for num in card[letter]: print(num, end="\t") print("\n") print("\n") def mark_called_number(card, called_num): """ 标记被叫号码,对应位置改为空白 参数: card (dict): 宾果卡片对象 called_num (int): 被叫号码,范围1-75 返回: bool: 是否成功标记 """ # 先判断号码所属列 if 1 <= called_num <= 15: col = "B" elif 16 <= called_num <= 30: col = "I" elif 31 <= called_num <= 45: col = "N" elif 46 <= called_num <= 60: col = "G" elif 61 <= called_num <= 75: col = "O" else: print("号码无效,请输入1-75之间的数字") return False # 查找号码位置并标记 if called_num in card[col]: idx = card[col].index(called_num) card[col][idx] = "" print(f"已成功标记号码{called_num}") return True else: print(f"当前卡片无号码{called_num}") return False def main(): print("欢迎游玩宾果游戏!") card = generate_card() print("\n您的宾果卡片如下:\n") print_card(card) print("请输入被叫号码,输入quit可退出游戏:") while True: input_content = input(">> ").strip() if input_content.lower() == "quit": print("游戏结束,感谢游玩") break try: called_num = int(input_content) mark_called_number(card, called_num) print("\n更新后的卡片:") print_card(card) except ValueError: print("输入格式错误,请输入有效数字或quit") if __name__ == "__main__": main()
功能说明
- 程序启动后自动生成符合规则的宾果卡片,N列中心位置默认显示
X作为免费标记 - 支持用户输入1-75之间的被叫号码,匹配成功后对应位置自动替换为空白
- 输入错误格式的内容会提示重输,输入
quit即可退出程序
内容的提问来源于stack exchange,提问作者Ben Fitzgerald
相关产品推荐
相关产品推荐

