python-20-零基础自学python-用类和while设计一个掷多次、多面骰子的工具的基础

学习内容:《python编程:从入门到实践》第二版

知识点:类、random、while循环、把while循环和类结合起来

练习内容:

练习9-13:骰子

创建一个Die类,它包含一个名为sides的属性,该属性的默认值为6。编写一个名为roll_die()的方法,它打印位于1和骰子面数之间的随机数。创建一个6面的骰子再掷10次。

我的代码&运行结果:没想到尝试了一下意外成功了,这次的作业有3种答案,不断优化,你可以试试

第一种
class Die:
    def __init__(self, sides=6):
        self.sides = sides

    def roll_die(self):
        from random import randint
        sides = randint(1, self.sides)
        print(f"这个数是{sides}")

print("当面数是6时,掷10次:")
roll1 = Die()
roll1.roll_die()
roll1.roll_die()
roll1.roll_die()
roll1.roll_die()
roll1.roll_die()
roll1.roll_die()
roll1.roll_die()
roll1.roll_die()
roll1.roll_die()
roll1.roll_die()

print("当面数是10时,掷10次:")
roll2 = Die(10)
roll2.roll_die()
roll2.roll_die()
roll2.roll_die()
roll2.roll_die()
roll2.roll_die()
roll2.roll_die()
roll2.roll_die()
roll2.roll_die()
roll2.roll_die()
roll2.roll_die()

print("当面数是20时,掷10次:")
roll3 = Die(20)
roll3.roll_die()
roll3.roll_die()
roll3.roll_die()
roll3.roll_die()
roll3.roll_die()
roll3.roll_die()
roll3.roll_die()
roll3.roll_die()
roll3.roll_die()
roll3.roll_die()

运行结果如图: 

 第二种 加入while循环

每个都要掷10次,我原本想要再加一个方法,调用10次函数,times的次数也是一个未知数,但调用不知道应该怎么表示,无果,最后采用了另一种方式,如下

class Die:
    def __init__(self,sides=6):
        self.sides = sides

    def roll_die(self):
        from random import randint
        sides = randint(1, self.sides)
        print(f"这个数是{sides}")


print("当面数是6时,掷10次:")
roll1 = Die()
current_num = 1
while current_num <= 10:
    roll1.roll_die()
    current_num += 1

print("当面数是10时,掷10次:")
roll2 = Die(10)
current_num = 1
while current_num <= 10:
    roll2.roll_die()
    current_num += 1

print("当面数是20时,掷10次:")
roll3 = Die(20)
current_num = 1
while current_num <= 10:
    roll3.roll_die()
    current_num += 1

 运行没有问题哦

 第三种 加入while循环,并把掷骰子次数也加入类的方法中
class Die:
    def __init__(self,times,sides=6):
        self.sides = sides
        self.times = times

    def roll_die(self):
        from random import randint
        sides = randint(1, self.sides)
        print(f"这个数是{sides}")

    def roll_time(self):
        current_num = 1
        times = self.times
        while current_num <= times:
            rollx = Die(self.times, self.sides)
            rollx.roll_die()
            current_num += 1


print("当面数是6时,掷10次:")
roll1 = Die(10)
roll1.roll_time()

print("当面数是10时,掷10次:")
roll2 = Die(10,10)
roll2.roll_time()

print("当面数是20时,掷10次:")
roll3 = Die(10,20)
roll3.roll_time()

练习

注意点:

1.第一次使用pycharm,使用过程中方便很多,比如“引号、(括号等,pycharm会自动填充,体验非常好。

2.pycharm 自查报错第一次看有很多不懂,可以完整写完后运行试试。

3.最后一个意外成功了,因为我一开始rollx还不知道怎么办,还尝试把roll1=rollx,显示rollx没有定义,我都快放弃了,没想到成功了!挺意外的

总结&问题:

1.要举一反三,把知识用起来

2.简洁

3.循环总觉得还有更好的方法

  • 17
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值