当前位置:   article > 正文

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

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

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

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

练习内容:

练习9-13:骰子

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

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

第一种
  1. class Die:
  2. def __init__(self, sides=6):
  3. self.sides = sides
  4. def roll_die(self):
  5. from random import randint
  6. sides = randint(1, self.sides)
  7. print(f"这个数是{sides}")
  8. print("当面数是6时,掷10次:")
  9. roll1 = Die()
  10. roll1.roll_die()
  11. roll1.roll_die()
  12. roll1.roll_die()
  13. roll1.roll_die()
  14. roll1.roll_die()
  15. roll1.roll_die()
  16. roll1.roll_die()
  17. roll1.roll_die()
  18. roll1.roll_die()
  19. roll1.roll_die()
  20. print("当面数是10时,掷10次:")
  21. roll2 = Die(10)
  22. roll2.roll_die()
  23. roll2.roll_die()
  24. roll2.roll_die()
  25. roll2.roll_die()
  26. roll2.roll_die()
  27. roll2.roll_die()
  28. roll2.roll_die()
  29. roll2.roll_die()
  30. roll2.roll_die()
  31. roll2.roll_die()
  32. print("当面数是20时,掷10次:")
  33. roll3 = Die(20)
  34. roll3.roll_die()
  35. roll3.roll_die()
  36. roll3.roll_die()
  37. roll3.roll_die()
  38. roll3.roll_die()
  39. roll3.roll_die()
  40. roll3.roll_die()
  41. roll3.roll_die()
  42. roll3.roll_die()
  43. roll3.roll_die()

运行结果如图: 

 第二种 加入while循环

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

  1. class Die:
  2. def __init__(self,sides=6):
  3. self.sides = sides
  4. def roll_die(self):
  5. from random import randint
  6. sides = randint(1, self.sides)
  7. print(f"这个数是{sides}")
  8. print("当面数是6时,掷10次:")
  9. roll1 = Die()
  10. current_num = 1
  11. while current_num <= 10:
  12. roll1.roll_die()
  13. current_num += 1
  14. print("当面数是10时,掷10次:")
  15. roll2 = Die(10)
  16. current_num = 1
  17. while current_num <= 10:
  18. roll2.roll_die()
  19. current_num += 1
  20. print("当面数是20时,掷10次:")
  21. roll3 = Die(20)
  22. current_num = 1
  23. while current_num <= 10:
  24. roll3.roll_die()
  25. current_num += 1

 运行没有问题哦

 第三种 加入while循环,并把掷骰子次数也加入类的方法中
  1. class Die:
  2. def __init__(self,times,sides=6):
  3. self.sides = sides
  4. self.times = times
  5. def roll_die(self):
  6. from random import randint
  7. sides = randint(1, self.sides)
  8. print(f"这个数是{sides}")
  9. def roll_time(self):
  10. current_num = 1
  11. times = self.times
  12. while current_num <= times:
  13. rollx = Die(self.times, self.sides)
  14. rollx.roll_die()
  15. current_num += 1
  16. print("当面数是6时,掷10次:")
  17. roll1 = Die(10)
  18. roll1.roll_time()
  19. print("当面数是10时,掷10次:")
  20. roll2 = Die(10,10)
  21. roll2.roll_time()
  22. print("当面数是20时,掷10次:")
  23. roll3 = Die(10,20)
  24. roll3.roll_time()

练习

注意点:

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

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

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

总结&问题:

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

2.简洁

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/IT小白/article/detail/992922
推荐阅读
相关标签
  

闽ICP备14008679号