我想在python中运行一个简单的die程序,将六个侧面的die滚动10次,但是该程序没有

时间:2019-06-10 02:23:27

标签: python random dice

我希望这个骰子程序每次使用forloop十次滚动六面骰子时都模拟六面骰子的滚动。

正如我所说,我编写了一个for循环并指定了我希望六面模滚动的次数。

import random
class Die():

    def __init__(self):
        self.sides=6

    def roll_die(self):
        dice=random.randint(1,self.sides)
        for dice in range(11):
            print("Rolling "+str(dice))

dice_roll=Die()
print("=========================================================")
dice_roll.roll_die()

输出:

=========================================================
Rolling 0
Rolling 1
Rolling 2
Rolling 3
Rolling 4
Rolling 5
Rolling 6
Rolling 7
Rolling 8
Rolling 9
Rolling 10

我希望模拟中的for循环可以打印一堆从1到6十次的随机数。相反,它按顺序打印数字,而不仅打印范围从1到6的数字。

3 个答案:

答案 0 :(得分:1)

写你这样循环:

    for _ in range(10):
        dice=random.randint(1,self.sides)
        print("Rolling "+str(dice))

如果您只希望循环一定次数而无需根据迭代次数更改过程,则不需要在for循环中使用变量。

为了在每个循环上获得不同的骰子值,您需要在循环内进行计算。你在外面通过在for循环中使用相同的变量名称,您还将覆盖放置在dice变量中的随机值。

答案 1 :(得分:1)

第一次分配骰子dice = random.randint(1, self.sides)之后,请在下一行重新分配它。要解决此错误,只需将for dice in range(11):更改为for i in range(11):

答案 2 :(得分:0)

首先,您将骰子滚动11次(0,1,2,...,10)。如果只需要10次,则应使用range(10)

循环

接下来,您将相同的变量骰子用于两件事。

  1. 掷骰子的值
  2. 掷骰子的次数

您可以更改为dice_val = random.randint(1, self.sides)print("Rolling "+str(dice_val))或 将for dice in range(11):更改为for roll_count in range(10):