# -*- coding: utf-8 -*-
"""created on sat mar 14 21:26:55 2020
@author: 86159
"""# use #%% to create cells;run current cell(ctrl+enter)
#pygal:生成可縮放的向量圖形檔案
#對於需要在不同的螢幕上顯示的圖表,這很有用,因為它們將自動縮放,以適合**者的螢幕
#在這個專案中,將對擲骰子的結果進行分析
#在數學領域,常用擲骰子來解釋各種資料分析,它在賭場和其他博弈場景中也得到了實際應用,例如遊戲大富翁以及眾多角色扮演遊戲中
#%%#擲骰子
from die import die #from 模組名 import 類名
#建立乙個d6
die=die()
x=die.roll()#擲一次骰子
print(x)
#%%#擲骰子多次--乙個
import pygal
#自己編寫的模組放在下面,分隔開
from die import die
die=die(8)#建立乙個8面骰子
results=#儲存多次擲骰子的結果,型別為列表
for roll_num in range(1000):#迴圈100次
x=die.roll()#方法返回值是本次擲骰子的結果
#print(results)#觀察結果,值的範圍為[1,8]
#for result in results:#遍歷列表元素
# print(str(result)+' ',end='')
#分析結果
freq_dict={}#儲存每個值出現的次數,型別為字典,元素為鍵-值對,鍵是數值 值是出現次數
freq_list=
for value in range(1,die.num_sides+1):
ct=results.count(value)#統計value在列表results**現的次數
freq_dict[value]=ct#在字典中(末尾)插入新元素,字典名[鍵]=值,鍵的型別可以為數字、字串
print("\n",freq_dict)
for key,value in freq_dict.items():#遍歷字典
print(str(key)+":"+str(value))
#繪製直方圖
#對結果進行視覺化
hist=pygal.bar()#建立乙個pygal.bar()例項
hist.title="results of rolling one d8 1000 times"#標示直方圖的字串
hist.x_labels=['1','2','3','4','5','6','7','8']#擲骰子的可能結果用作x軸的標籤
hist.x_title="result"#給x軸新增標題
hist.y_title="frequency of result"
hist.add("d8",freq_list)#將一系列值新增到圖表中,.add(title,values,**kwargs) values型別應該為列表,title為給新增的值指定的標籤
hist.render_to_file("die_visual.svg")#將圖表渲染為乙個svg檔案,副檔名必須為.svg;在web瀏覽器中檢視生成的直方圖
#%%#擲骰子--兩個
import pygal
from die import die
#建立兩個die例項,代表兩個骰子
die_1=die()
#die_2=die()
die_2=die(8)#8面骰子,傳遞實參8,修改預設值6
#擲骰子的結果
results=
for roll_num in range(10000):#設定擲骰子的次數
result=die_1.roll()+die_2.roll()
#分析資料--統計出現頻次
frequences=
max_num=die_1.num_sides+die_2.num_sides
for value in range(2,max_num+1):#兩個骰子之和的取值範圍為[2,max_num],最小值是2
freq=results.count(value)
print(frequences)
#視覺化結果
hist=pygal.bar()
#hist.x_labels=['2','3','4','5','6','7','8','9','10','11','12']#兩個6面骰子
#hist.x_labels=['2','3','4','5','6','7','8','9','10','11','12','13','14']#乙個6面,乙個8面
hist.x_labels=[x for x in range(2,max_num+1)]#使用列表解析[變數 迴圈],x_labels值自動生成;[str(x) for x in range(2,max_num+1)]也可以
#hist.title="results of rolling two d6 dice 1000 times"
hist.title="results of rolling a d6 and a d8 10000 times"
hist.x_title="result"
hist.y_title="frequency of result"
hist.add("d6+d8",frequences)
#hist.render_to_file("dd66_visual.svg")
hist.render_to_file("d6d8_visual.svg")
die.py
#建立die類
from random import randint#隨機整數randint(s,e) 返回值取值範圍為[起始值,終止值],整數
class die():
'''表示乙個骰子的類'''
def __init__(self,num_sides=6):#可選引數,骰子預設指6面的,d6;8面的骰子名為d8
'''骰子預設為6面'''
self.num_sides=num_sides
def roll(self):
'''返回乙個位於1和骰子面數之間的隨機值'''
return randint(1,self.num_sides)#返回起始值1、終止值num_sides或這兩個值之間的任何整數
Python遊戲開發 Mac完美安裝pygame
pygame是python的2d遊戲開發庫,優點是秉承了python風格,簡單好用 最近在macos high sierra10.13.5上安裝pygame時遇到了一些問題 經過一晚上的折騰,終於找到了正確的解決方法,分享一下 通過brew安裝依賴包 brew install sdl smpeg s...
Python學習筆記 使用 future
根據廖雪峰python教程整理 使用 future python的每個新版本都會增加一些新的功能,或者對原來的功能作一些改動。有些改動是不相容舊版本的,也就是在當前版本執行正常的 到下乙個版本執行就可能不正常了。從python 2.7 到python 3.x 就有不相容的一些改動,比如 2.x裡的字...
學習筆記 python使用SQLite
python運算元據庫系列 python使用sqlite python操作redis python操作mysql 5.修改資料 6.刪除資料 三 全部 四 總結 sqlite不是乙個客服端 伺服器結構的資料庫引擎,而是一種嵌入式資料庫,它的資料庫就是乙個檔案。sqlite將整個資料庫,包括定義 表 ...