如何在Python掷骰子模拟程序中实现非重复的previous_roll功能?
掷骰子模拟程序:实现非重复掷骰与上一次结果追踪
问题分析
你的代码存在两个核心问题:
- 未定义
start和end变量,调用random.randint会直接报错; - 未利用
previous_roll参数做判断逻辑,无法保证本次掷骰结果与上一次不同。
完整实现代码
import random def roll_dice(previous_roll=None, start=1, end=6): # 第一次掷骰,无历史结果,直接生成随机数 if previous_roll is None: return random.randint(start, end) # 循环生成随机数,直到与上一次结果不同 while True: current_roll = random.randint(start, end) if current_roll != previous_roll: return current_roll # 使用示例 # 第一次掷骰(无历史结果) first_roll = roll_dice() print(f"第一次掷骰结果:{first_roll}") # 第二次掷骰(传入第一次结果作为上一次记录) second_roll = roll_dice(previous_roll=first_roll) print(f"第二次掷骰结果:{second_roll}") # 第三次掷骰(传入第二次结果) third_roll = roll_dice(previous_roll=second_roll) print(f"第三次掷骰结果:{third_roll}")
关键逻辑说明
- 给
previous_roll设置默认值None,让第一次调用函数时无需传参,直接生成初始掷骰结果; start和end设置默认值1和6(对应标准六面骰子),你也可以根据需求修改参数(比如roll_dice(previous_roll=5, start=1, end=12)生成12面骰子的非重复结果);- 循环生成逻辑:当存在历史结果时,不断生成新的随机数,直到其与
previous_roll不同,确保满足“下一次结果与上一次不同”的要求。
内容的提问来源于stack exchange,提问作者beginnercoder354
相关产品推荐
相关产品推荐

