欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python利用隨機函數生成變化圖形詳解

 更新時間:2022年04月26日 11:08:01   作者:PursuitingPeak  
這篇文章主要介紹了如何在Python中利用隨機函數生成變化的圖形,文中的示例代碼講解詳細,對我們學習有一定吧參考價值,需要的可以了解一下

鑒于上一篇中最后三個問題:

1、上述程序是否能進行優(yōu)化(比如功能相同的)

2、創(chuàng)建三個3個實例,用了3個語句,能否建一個函數,只輸入一個數n,就自動創(chuàng)建n個實例?同時,每個實例的num_times隨機,(n比較大時,num_times應該比較小)

3、當實現上述功能后,程序運行,只輸入一個參數(創(chuàng)建實例的個數),就會自動生成對應的num_times,并分別調用相關函數生成對應圖表。

可以,在類Rand_moving()中計算每一步的方向和移動位置時,都用到了一個乘法公式,

x_direction = choice([1,-1])       #x的移動方向,1向上,0不變,-1向下
            x_distance = choice([0,1,2,3,4,5]) #x的每次移動的像素,
            x_step = x_direction*x_distance    #移動方向乘以移動距離,以確定沿x移動的距離
            
            y_direction =  choice([1,-1])      #y的移動方向,1向上,0不變,-1向下
            y_distance = choice([0,1,2,3,4,5]) #y的每次移動的像素,
            y_step = y_direction*y_distance    #移動方向乘以移動距離,以確定沿y移動的距離

因此可以整理出一個計算方法,可以直接調用,至于2,3很明顯,也是可以完成的。

第一步,將乘法公式提出來單獨形成一個作用于自身的方法,代碼如下:

def get_step(self,direction,distance):
          return distance*direction
        
    def fill_moving(self):
        while len(self.x_values)<self.num_times:#循環(huán)不斷運行,直到漫步包含所需數量的點num_times
            x_step = self.get_step(choice([1,-1]),choice([0,1,2,3,4,5]))     #直接調用get_step方法,使代碼更加簡潔
            y_step = self.get_step(choice([1,-1]),choice([0,1,2,3,4,5]))

完成第1問,代碼變得更加簡潔明了。

第2、3個問題:

1)要能生成實例個數n,且還有對應的移動次數num_times,可考慮用字典,即實例個數為key,對應移動次數num_times為鍵值,當輸入2時,如  caselist={’1‘:'150000',’2‘:'250000'}

2)讀取字典每個項目,將對應的key和value傳遞給由Rand_moving類創(chuàng)建的實例,key的個數即為需要創(chuàng)建實例的個數,對應的value值為移動次數。

3)輸入數字,即為字典key的個數,存入字典,同時利用隨機函數生成一個num_times保存到對應的value中。

完成思路:

1,重新定義一個類 New_case() 作用:接收一個數據,并根據這個數據自動生成一個字典,

class New_case():
    #定義New_case類
    def __init__(self,numbers): #定義要創(chuàng)建的實例個數        
        self.numbers=numbers     
        self.caselist={}  #定義一個空的caselist字典
        self.case = 0       
       while self.case < self.numbers: #當變量case小于給定值時,
            self.case += 1
            times = choice([100000,150000,200000,250000])#隨機選擇一個移動次數
            self.caselist[self.case] = times  #將value與key對應

2、需要循環(huán)讀取字典的key和value,并將value傳遞給類Rand_moving,隨后再運行fill_moving()生成數據并保存到列表,隨即用plt.scatter()進行繪圖

for key,value in self.caselist.items(): #字典不為空
            colorkey=str(key)        #  將字典關鍵字轉為字符串存到變量colorkey中
            examplecase = Rand_moving(int(value))  #創(chuàng)建實例,將對應的value值傳遞類Rand_moving
            examplecase.fill_moving()  #調用類Rand_moving中的方法fill_moving()計算移動相關數據并保存到列表中
            plt.figure(dpi=128,figsize=(12, 10))   #創(chuàng)建畫面屏幕          
            plt.scatter(examplecase.x_values,examplecase.y_values,c=self.colors[colorkey],s=15)
        plt.show()

上篇中的代碼  c=y_values, cmap=plt.cm.Reds為什么這里不再用,是因為這里循環(huán)的時候一直出現紅色Reds,為了對比,創(chuàng)建了一新字典colors{},將生成的個數與顏色相對應。所以上述代碼中修改為 c=self.colors[colorkey]

類New_case() 全部代碼如下:

import matplotlib.pyplot as plt

from rand_moving import *

class New_case():
    #定義New_case類
    def __init__(self,numbers): #定義要創(chuàng)建的實例個數        
        self.numbers=numbers     
        self.caselist={}  #定義一個空的cases列表
        self.case = 0    #定義一個case變量   
        self.colors={'1':'red','2':'orange','3':'yellow','4':'green','5':'blue','6':'puple'}#創(chuàng)建了一新字典colors{},將生成的個數與顏色相對應
        
        while self.case < self.numbers:  #小于給定實例個數時
            self.case += 1
            times = choice([100000,150000,200000,250000]) #隨機生成一個移動次數
            self.caselist[self.case] = times    #將變量case作為key, times作為value保存到字典中      
       
    def case_moving(self):  #重新定義一個方法,即訪問字典所有項
        for key,value in self.caselist.items(): #字典不為空
            colorkey=str(key)        #  將字典關鍵字轉為字符串存到變量colorkey中
            examplecase = Rand_moving(int(value))  #創(chuàng)建實例,將對應的value值傳遞類Rand_moving
            examplecase.fill_moving()  #調用類Rand_moving中的方法fill_moving()計算移動相關數據并保存到列表中
            plt.figure(dpi=128,figsize=(12, 10))   #創(chuàng)建畫面屏幕         
            plt.scatter(examplecase.x_values,examplecase.y_values,c=self.colors[colorkey],s=15)#注意調用了上述新字典的顏色
        plt.show()

3、主程序

主程序中有一個交互,需要輸入一個數據,然后調用相關相關類創(chuàng)建實例(慢慢成調包俠了!^v^)

import matplotlib.pyplot as plt

from rand_moving import *   
from new_case import *

print("Please enter the number:")  #交互,請輸入一個數,模擬運行,不需要太大的數據。
n = input()   #將輸入的數據保存到變量n中,注意所有輸入均為字符串,

testcase = New_case(int(n)) #將n轉為整型數據,創(chuàng)建實例個數 
testcase.case_moving()

實際運行效果,輸入4,生成4個數據圖形(為展示較全,原圖已縮?。?/p>

self.colors={'1':'red','2':'orange','3':'yellow','4':'green','5':'blue','6':'puple'} 注意:圖的顏色分別與colors字典中對應。

當然如果覺得數軸很礙眼,那就在類類New_case() 中的plt.figure()之后加上

plt.axes().get_xaxis().set_visible(False)
plt.axes().get_yaxis().set_visible(False) 

到此這篇關于Python利用隨機函數生成變化圖形詳解的文章就介紹到這了,更多相關Python隨機函數生成變化圖形內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 教你使用python搭建一個QQ機器人實現叫起床服務

    教你使用python搭建一個QQ機器人實現叫起床服務

    這篇文章主要介紹了教你使用python搭建一個QQ機器人實現叫起床服務,作為一個程序猿如果沒有女朋友叫你起床,那么就自己制作一個,如果有那么也可以幫你叫女朋友起床
    2021-08-08
  • Tornado高并發(fā)處理方法實例代碼

    Tornado高并發(fā)處理方法實例代碼

    這篇文章主要介紹了Tornado高并發(fā)處理方法實例代碼,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • Python基于TensorFlow接口實現深度學習神經網絡回歸

    Python基于TensorFlow接口實現深度學習神經網絡回歸

    這篇文章主要為大家詳細介紹了如何基于Python語言中TensorFlow的tf.estimator接口,實現深度學習神經網絡回歸的具體方法,感興趣的可以了解一下
    2023-02-02
  • 玩轉Python發(fā)短信的實現

    玩轉Python發(fā)短信的實現

    用Python實現發(fā)短信功能,當監(jiān)控到問題出現時,短信報警,使問題能得到及時的處理。當然,我相信,用Python發(fā)短信應用場景不止此一處,下面我們開始Python發(fā)短信的實現,感興趣的朋友參考下吧
    2022-01-01
  • python基礎之while循環(huán)語句的使用

    python基礎之while循環(huán)語句的使用

    這篇文章主要介紹了python基礎之while循環(huán)語句的使用,文中有非常詳細的代碼示例,對正在學習python的小伙伴們有一定的幫助,需要的朋友可以參考下
    2021-04-04
  • Scrapy+Selenium自動獲取cookie爬取網易云音樂個人喜愛歌單

    Scrapy+Selenium自動獲取cookie爬取網易云音樂個人喜愛歌單

    這篇文章主要介紹了Scrapy+Selenium自動獲取cookie爬取網易云音樂個人喜愛歌單,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • python如何實現向上取整

    python如何實現向上取整

    這篇文章主要介紹了python如何實現向上取整問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • 詳解Python中的字符串格式化

    詳解Python中的字符串格式化

    這篇文章主要為大家介紹了Python中的字符串格式化,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • Python如何發(fā)送Syslog日志

    Python如何發(fā)送Syslog日志

    這篇文章主要介紹了Python如何發(fā)送Syslog日志問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • python實現tree命令的使用示例

    python實現tree命令的使用示例

    本文主要介紹了python實現tree命令的使用示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-09-09

最新評論