[Python编程:从入门到实践] 第十五章:生成数据 习题答案
2017-12-30 12:00
579 查看
Python 小白提交答案,有不足请老鸟们指点,谢谢~
15-8 同时投掷三个骰子:如果你同时掷三个D6骰子,可能得到的最小点数为3,而最大点数为18,。请通过可视化展示同时掷三个D6骰子的结果
"""我编了一个任意数量任意面骰子投掷结果相加的程序"""
15-9 将点数相乘:同时掷两个骰子时,通常将它们的点数相加。通过可视化展示将两个骰子的点数相乘的结果
"""我编了一个任意数量任意面骰子投掷结果相乘的程序"""
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编程:从入门到实践】第十五章:生成数据
- [Python编程:从入门到实践] 第十六章:下载数据 习题答案
- 【《Python编程: 从入门到实践》习题答案--第二章:<变量和简单数据类型>】
- 【《Python编程: 从入门到实践》习题答案--第三章:<list 列表简介>】
- 【《Python编程: 从入门到实践》习题答案--第十二章,番外<pycharm安装pygame>】
- 【《Python编程: 从入门到实践》习题答案--第九章:<类>】
- 【《Python编程: 从入门到实践》习题答案--第四章:<list 列表操作>】
- python编程从入门到实践第三章习题答案
- 【《Python编程: 从入门到实践》习题答案--第五章:<if语句>】
- [置顶] 【Python编程: 从入门到实践】习题答案(目录索引)
- 【《Python编程: 从入门到实践》习题答案--第七章:<用户输入和while 循环>】
- 【《Python编程: 从入门到实践》习题答案--第十六章,番外2<No module named 'pygal.i18n>】
- python编程从入门到实践第二章习题答案
- 《Python编程-从入门到实践》课后习题(6)
- 《Python编程-从入门到实践》课后习题(5)
- 《Python编程 从入门到实践》第二章习题选做
- 《python编程从入门到实践》 第5章习题选做
- 《Python编程 从入门到实践》第七章习题选做
- 《Python编程——从入门到实践》第二章习题解
- Python编程:从入门到实践(课后习题9)