Python 小白提交答案,有不足请老鸟们指点,谢谢~

15-8 同时投掷三个骰子:如果你同时掷三个D6骰子,可能得到的最小点数为3,而最大点数为18,。请通过可视化展示同时掷三个D6骰子的结果

"""我编了一个任意数量任意面骰子投掷结果相加的程序"""

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

import pygal

from die import Die15

# 創造N個骰子實例

die_sides = [8, 8,8]

dice = []

for die_side in die_sides:

die = Die15(die_side)

dice.append(die)

roll_results = []

# 投指定次數

roll_times = 10000

for roll_num in range(roll_times):

roll_result = 0

for die in dice:

roll_result += die.roll()

roll_results.append(roll_result)

# print(results)

max_result = 0

min_result = len(dice)

for die in dice:

max_result += die.num_sides

# 統計結果

frequencies = []

for value in range(min_result, max_result + 1):

frequency = roll_results.count(value)

frequencies.append(frequency)

# print(frequencies)

# 對結果可視化

hist = pygal.Bar()

str_dice = ''

for die in dice:

str_dice = str_dice + ' D' + str(die.num_sides)

hist.title = "Result of rolling " + \

str(len(dice)) + " dice of " + str_dice + " on %d times" % roll_times

hist.x_labels = [x for x in range(min_result, max_result + 1)]

hist.x_title = "Result"

hist.y_title = "Frequency of Result"

hist.add('Die', frequencies)

hist.render_to_file('n_dice_visual.svg')

15-9 将点数相乘:同时掷两个骰子时,通常将它们的点数相加。通过可视化展示将两个骰子的点数相乘的结果

"""我编了一个任意数量任意面骰子投掷结果相乘的程序"""

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

import pygal

from die import Die15

from collections import Counter

# 創造N個骰子實例

die_sides = [6, 6, 6]

dice = [Die15(die_side) for die_side in die_sides]

roll_results = []

# 投指定次數

roll_times = 10000

for roll_num in range(roll_times):

roll_result = 1

for die in dice:

roll_result *= die.roll()

roll_results.append(roll_result)

# 计算投掷结果的范围

max_result = 1

min_result = 1

for die in dice:

max_result *= die.num_sides

# 用dict統計結果

frequencies = {}

values = list(range(min_result, max_result + 1))

for value in values:

frequencies[value] = roll_results.count(value)

# 删除概率为0的结果,即删除不可能的投掷结果

del_keys = []

for k, v in frequencies.items():

if v == 0:

del_keys.append(k)

for del_key in del_keys:

del frequencies[del_key]

# 對結果可視化

hist = pygal.Bar()

str_dice = ''

for die in dice:

str_dice = str_dice + ' D' + str(die.num_sides)

hist.title = "Result of rolling " + \

str(len(dice)) + " dice of " + str_dice + " on %d times" % roll_times

hist.x_labels = [x for x in sorted(frequencies.keys())]

hist.x_title = "Result"

hist.y_title = "Frequency of Result"

hist.add('Die', frequencies.values())

hist.render_to_file('n_dice_plus_visual.svg')

python编程15讲答案,[Python编程:从入门到实践] 第十五章:生成数据 习题答案相关推荐

  1. python编程从入门到实践答案-《Python编程:从入门到实践》第五章 if语句 习题答案...

    #5.1 major = 'Software Engineering' print("Is major =='Software Engineering'? I predict True.&q ...

  2. python快速编程入门课后题答案-《Python编程:从入门到实践》第五章 if语句 习题答案...

    #5.1 major = 'Software Engineering' print("Is major =='Software Engineering'? I predict True.&q ...

  3. c++primer(第五版) 第十五章 面向对象程序设计习题答案

    纯原创    转载请注明出处:http://blog.csdn.net/axuan_k 略过书上有现成代码的题目 15.1  15.2 15.1 虚成员是基类中的概念 基类中的某些函数希望它的派生类能 ...

  4. 《Python网络爬虫——从入门到实践》第六章将数据存储至MySQL数据库的学习心得与总结(出错与纠正方法)

    <Python网络爬虫--从入门到实践>第六章将数据存储至MySQL数据库的学习心得与总结(出错与纠正方法) 作为刚开始入门python的小白,对大数据,网络爬虫比较感兴趣.完全是自我修炼 ...

  5. 《Python编程从入门到实践》第五章414

    5-1 条件测试 5-2 更多的条件测试 5-3 外星人颜色 #1 5-4 外星人颜色 #2 5-5 外星人颜色 #3 5-6 人生的不同阶段 5-7 喜欢的水果 5-8 以特殊方式跟管理员打招呼 5 ...

  6. Python 编程从入门到实践 第十二章 飞船开始游戏时靠着边界的问题解决办法

    注:图中标识的1,2,3,4 就是所指向的那一行代码,上面是本人的正确代码 解决办法:书上的代码内容顺序是1代码在2代码的前面,其实只要把1代码放到2代码后面就可以解决靠边的问题 飞船初始靠边原因:1 ...

  7. 《Python语言程序设计》王恺 王志 李涛 机械工业出版社 第3章 函数 课后习题答案【强烈推荐】

    点个

  8. 《Python语言程序设计》王恺 王志 李涛 机械工业出版社 第4章 面向对象 课后习题答案【强烈推荐】

    点个

  9. 《Python语言程序设计》王恺 王志 李涛 机械工业出版社 第6章 字符串 课后习题答案【强烈推荐】

    点个

最新文章

  1. 浅谈网络协议(四) IP的由来--DHCP与PXE
  2. (转)HLSL,函数列表
  3. 上海python培训班-上海哪家python培训班比较靠谱?
  4. requests库详解
  5. Android Studio 使用小技巧
  6. HDU1273 漫步森林【水题】
  7. Python发邮件的小脚本
  8. 用二叉链表存树(孩子兄弟表示法)
  9. BiShop 模式识别与机器学习
  10. php里无法找到该网页,thinkphp搭建网站后端,入口文件找不到(无法加载)
  11. 在校招中,应届生们如何写出简洁的 Android 开发简历,减少被刷的机率
  12. Nacos 原理 Jraft Distro Grpc 持续跟新中...
  13. 线程池使用不当导致系统假死
  14. AXI总线简介(二)
  15. position:fixed;支持ie6,清除e6下抖动。
  16. 介绍ping中的TTL是什么意思
  17. Jboot 跨域请求
  18. Laravel + Laragon 搭建php项目
  19. 计算机各键的名称和作用,space是什么键 键盘键位名称及功用详解
  20. 战略到底在研究什么?

热门文章

  1. 处理文本框的鼠标事件,判断鼠标的状态
  2. c++全局变量,局部变量不赋初值的区别
  3. 【读书笔记】MongoDB管理与开发精要(1)
  4. 跨域产生的原因及解决方法
  5. 《转》 ImportError: No module named caffe 的解决方案
  6. C#自定义异常 统一异常处理
  7. 解决jenkins控制台中文乱码问题
  8. chrome插件开发记录(1)——解决问题“清单文件缺失或不可读”
  9. 怎样解决VMware虚拟机无法连接外网问题
  10. 如果我有jQuery背景,那么“ AngularJS中的思考”吗? [关闭]