(标签-python|关键词-函数返回)(相关搜索:random函数)

python实践练习:掷色子
我创建了两个色子的实例,通过random函数返回随机选取的值,但是两个色子返回的值是混在一起的。
我改进了代码使其分开显示,但是感觉十分臃肿,劳烦各位教导

#色子
from random import randint
p=[]
n=[]
i=0
while i<11:
    class Die:
        def __init__(self,sides1,sides2):
            self.sides1=sides1
            self.sides2=sides2

        def roll_die(self):
            k=int(self.sides1)
            b=int(self.sides2)
            num=randint(1,k)
            num2=randint(1,b)
            p.append(num)
            n.append(num2)
            
    die=Die(6,20)
    die.roll_die()
    i=i+1
print(p)
print(n)
from random import randint


# 把类的声明写在循环外
class Die:
    def __init__(self, sides):  # 用一个 Die 类只表示一个骰子
        self.sides = sides

    def roll(self):
        return randint(1, self.sides)  # 让 roll 简单地返回随机值


if __name__ == '__main__':
    die1 = Die(6)
    die2 = Die(20)
    numbers1 = []
    numbers2 = []

    for i in range(11):
        # 添加到列表的操作在类外进行
        numbers1.append(die1.roll())
        numbers2.append(die2.roll())

    print(numbers1)
    print(numbers2)

【以下回答由 GPT 生成】

# 色子
from random import randint

p = []
n = []

class Die:
    def __init__(self,sides1,sides2):
        self.sides1 = sides1
        self.sides2 = sides2

    def roll_die(self):
        k = int(self.sides1)
        b = int(self.sides2)
        num = randint(1,k)
        num2 = randint(1,b)
        return (num, num2)

for i in range(11):
    die = Die(6,20)
    roll_results = die.roll_die()
    p.append(roll_results[0])
    n.append(roll_results[1])

print(p)
print(n)

经过优化,优化后的代码如上所示。修改的地方是:

  1. 将Die类的初始化方法放在循环外部,因为只需要初始化一次即可。
  2. 修改Die类的roll_die方法,使其返回通过随机数生成的结果。
  3. 使用for循环代替while循环,简化代码。
  4. 在循环中调用roll_die方法,并将返回的结果添加到对应的列表中。

这样优化后的代码更加简洁和高效。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^