我试图重新掷多个骰子,每次都要记住之前的重新骰子。所以,例如,如果我滚动5个模具并获得1,2,3,4,5。我问你想要重新选择哪个模具 - 1,3,4,然后得到像3,2,5,3,5这样的东西。但正如我在一个循环中所要求的那样,它会覆盖以前的新卷并仅提供最后一卷。当我在循环中运行时,如何存储新找到的数字?
reroll1 = input("Would you like to reroll? Yes or No: ")
if reroll1 == "Yes" or "yes":
count = 0
times = int(input("How many die would you like to reroll? "))
while count < times:
whichreroll = input("Reroll die: ")
if whichreroll == "1":
reroll1 = random.randint(1,6)
else:
reroll1 = die1
if whichreroll == "2":
reroll2 = random.randint(1,6)
else:
reroll2 = die2
if whichreroll == "3":
reroll3 = random.randint(1,6)
else:
reroll3 = die3
if whichreroll == "4":
reroll4 = random.randint(1,6)
else:
reroll4 = die4
if whichreroll == "5":
reroll5 = random.randint(1,6)
else:
reroll5 = die5
newset = [reroll1, reroll2, reroll3,reroll4,reroll5]
count += 1
print(newset)
答案 0 :(得分:0)
你可以通过循环遍历骰子滚动块而不是使用所有if语句来清理一些东西。这是通过使用所选择的骰子来索引现有的骰子卷列表来完成的。我假设你已经有一个原始骰子卷的列表,所以我只做了一个并复制到newset。
oldset = [1,2,3,4,5]
reroll1 = str(raw_input("Would you like to reroll? Yes or No: "))
if reroll1.lower() == "yes":
count = 0
times = int(input("How many die would you like to reroll? "))
newset = oldset
while count < times:
whichreroll = input("Reroll die: ")
reroll = random.randint(1,6)
newset[whichreroll-1]= reroll
count += 1
print(newset)
答案 1 :(得分:0)
如果我的问题是正确的,你可以通过拥有两组列表来做到这一点,一组是你已经拥有的新组合,另一组是prevSet。 prevSet存储结果的最后一个值,所以基本上你可以在每次迭代开始时初始化prevSet,这样就可以了
while (count < times):
prevSet = newset
.
.
.