中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

惠州網(wǎng)站建設(shè) 翻譯6旅游搜索量環(huán)比增188%

惠州網(wǎng)站建設(shè) 翻譯6,旅游搜索量環(huán)比增188%,seo排名網(wǎng),如何申請(qǐng)網(wǎng)站備案目錄 前言1.進(jìn)制轉(zhuǎn)換2.字符串加密的實(shí)現(xiàn)3.猜拳游戲4.多種方法計(jì)算π尾語(yǔ) 💝 前言 嗨嘍~大家好呀,這里是魔王吶 ? ~! 1.進(jìn)制轉(zhuǎn)換 功能: 獲取十進(jìn)制整數(shù)的二進(jìn)制串,相當(dāng)于內(nèi)置函數(shù)bin。 算法分析: 對(duì)2輾轉(zhuǎn)相除&…

目錄

      • 前言
      • 1.進(jìn)制轉(zhuǎn)換
      • 2.字符串加密的實(shí)現(xiàn)
      • 3.猜拳游戲
      • 4.多種方法計(jì)算π
      • 尾語(yǔ) 💝

前言

嗨嘍~大家好呀,這里是魔王吶 ? ~!

1.進(jìn)制轉(zhuǎn)換

功能

獲取十進(jìn)制整數(shù)的二進(jìn)制串,相當(dāng)于內(nèi)置函數(shù)bin。

算法分析

  1. 對(duì)2輾轉(zhuǎn)相除,直到商為0

  2. 每次所得余數(shù)逆序即可

流程圖繪制

測(cè)試驅(qū)動(dòng),書(shū)寫(xiě)測(cè)試用例:

>>> convert(13)
'1101'
>>> convert(1)
'1'
>>> convert(0)
'0'
>>> convert(67)
'1000011'
>>> convert(15)
'1111'

代碼實(shí)現(xiàn):

def convert(n):"""添加上述測(cè)試用例"""s = ""while n != 0:r = n % 2s = str(r) + sn //= 2return sif __name__ == "__main__":import doctestdoctest.testmod(verbose=True)

運(yùn)行上述測(cè)試,可以看到0的二進(jìn)制串沒(méi)通過(guò)測(cè)試,

原因是s默認(rèn)為空串,因而傳入0時(shí)得到的將是空串。

我們可以在返回值時(shí),使用三元運(yùn)算符處理即可,return s if s != “” else “0”。

擴(kuò)展:十進(jìn)制轉(zhuǎn)任意進(jìn)制

  1. 進(jìn)制:變化的是數(shù)碼和基數(shù)

  2. 基數(shù)我們可以通過(guò)參數(shù)傳入來(lái)解決

  3. 數(shù)碼我們可以通過(guò)定義碼元串來(lái)完成,然后通過(guò)索引訪問(wèn)即可

代碼實(shí)現(xiàn):

def convert(num, base):""">>> convert(13, 2)'1101'>>> convert(23, 16)'17'>>> convert(23, 8)'27'>>> convert(30, 16)'1E'"""codes = "0123456789ABCDEF"s = ""while num != 0:r = num % bases = codes[r] + snum //= basereturn s if s != "" else "0"if __name__ == "__main__":import doctestdoctest.testmod(verbose=True)

2.字符串加密的實(shí)現(xiàn)

功能:

對(duì)英文串進(jìn)行加密,規(guī)則英文字母循環(huán)右移n位,不失一般性,此處n設(shè)為3

算法分析:

  1. chr,根據(jù)ASCII碼獲取字符;

  2. ord,獲取字母的ASCII碼

循環(huán)右移,即越界翻轉(zhuǎn),z完后再到a,即(ord(ch) + 3 - 0x61) % 26 + 0x61。

流程圖繪制

測(cè)試先行:

>>> encrypt("abc")
'def'
>>> encrypt("xyz")
'abc'
>>> encrypt("Abc")
'Def'
>>> encrypt("a1b2c3")
'd1e2f3'
>>> encrypt("abc ABC")
'def DEF'

代碼實(shí)現(xiàn):

def encrypt(p):"""添加上述測(cè)試用例"""s = ""for ch in p:code = (ord(ch) - 0x61 + 3) % 26 + 0x61s += chr(code)return sif __name__ == "__main__":import doctestdoctest.testmod(verbose=True)

運(yùn)行上述測(cè)試,前2個(gè)通過(guò),后面3個(gè)失敗。

原因分析:

大寫(xiě)字母處理不對(duì),代碼默認(rèn)基礎(chǔ)字母是‘a(chǎn)’。

只需要增加base變量,根據(jù)字母是大寫(xiě)還是小寫(xiě)來(lái)初始化,即base = 0x41 if ch.isupper() else 0x61,將該行插入到第7行前,然后把后面行中出現(xiàn)的0x61修改為base即可。

再運(yùn)行測(cè)試,前3個(gè)通過(guò)。

根據(jù)題意,對(duì)英文字母進(jìn)行加密,非英文字母我們保持不變即可。

利用字符串對(duì)象提供的isalpha方法進(jìn)行分支處理,

加密方法的完整代碼如下:

def encrypt(p):"""添加上述測(cè)試用例"""s = ""for ch in p:if not ch.isalpha():s += chcontinuebase = 0x41 if ch.isupper() else 0x61code = (ord(ch) - 0x61 + 3) % 26 + 0x61s += chr(code)return s

注意:Python字符串的isalpha方法,支持unicode字符,因而中文也是字符,

這將導(dǎo)致上述代碼無(wú)法正確處理中文。

我們可以通過(guò)自己定義is_letter函數(shù)來(lái)實(shí)現(xiàn)英文字母的判斷。

3.猜拳游戲

功能:

玩家與計(jì)算機(jī)“剪刀石頭布”,三局兩勝(平局不算),最后輸出獲勝方。

計(jì)算機(jī)出拳,使用random庫(kù)隨機(jī)產(chǎn)生;玩家由鍵盤(pán)輸入。

random庫(kù):

randrange函數(shù):和range函數(shù)的參數(shù)一樣,在該范圍產(chǎn)生一個(gè)隨機(jī)數(shù)

choice函數(shù):抽取一個(gè)

choices函數(shù):有放回抽樣

sample函數(shù):無(wú)放回抽樣

seed函數(shù):默認(rèn)系統(tǒng)時(shí)間作為種子。種子相同,則產(chǎn)生相同隨機(jī)數(shù)列。

邏輯判斷優(yōu)化:

建立映射:0表示scissor,1表示stone,2表示cloth

觀察可得,(x+1)%3 == y,表示y勝;否則,x!=y,表示x勝

代碼實(shí)現(xiàn)

import randomdef compare(computer, player):choices = ["scissor", "stone", "paper"]infos = ["it is a draw.", "computer win!", "player win!"]    wid = 0if computer == (player + 1) % 3:wid = 1elif computer != player:wid = 2return wid, infos[wid] + f"{choices[computer]} VS {choices[player]}"def run():    result = [0, 0, 0]while True:computer = random.choice([0, 1, 2])player = int(input("please input your choice:"))wid, info = compare(computer, player)print(info)      result[wid] += 1        if max(result[1], result[2]) == 2: breakprint(f"game over!{result[1]}:{result[2]}")if __name__ == "__main__":run()

程序運(yùn)行情況如下:

please input your choice:0
computer win!stone VS scissor
please input your choice:0
computer win!stone VS scissor
game over!2:0
>>> please input your choice:0
player win!paper VS scissor
please input your choice:1
player win!scissor VS stone
game over!0:2
>>> please input your choice:0
it is a draw.scissor VS scissor
please input your choice:0
computer win!stone VS scissor
please input your choice:0
player win!paper VS scissor
please input your choice:0
player win!paper VS scissor
game over!1:2

4.多種方法計(jì)算π

功能:

數(shù)列方式求π:π/4 = 1 - 1/3 + 1/5 - 1/7 + 1/9......

通項(xiàng)分析:

  1. 分子為1,分母為奇數(shù)2n-1,正負(fù)交替

  2. 計(jì)算項(xiàng)數(shù)越多,精度越高

代碼實(shí)現(xiàn)

def calc(n):s, sign = 0, 1for i in range(1, n+1):item = sign / (2*i - 1)s += item        sign *= -1     #正負(fù)交替return 4 * sif __name__ == "__main__":s = calc(1000000)print(f"{s}")

運(yùn)行該程序,可以得到π值為:3.1415916535897743。

增加循環(huán)次數(shù),可以提升精度,但運(yùn)行時(shí)間會(huì)增加,請(qǐng)大家自行測(cè)試。

擴(kuò)展練習(xí):

已知數(shù)列,π2/6=1+1/4+1/9+1/16……,編程實(shí)現(xiàn)π的計(jì)算。

劉徽割圓術(shù)求π

割之彌細(xì),所失彌少,計(jì)算正多邊形的面積,就是圓的面積(單位圓的話,就是π的值)

正多邊形就是n個(gè)相同大小的三角形,只需計(jì)算1個(gè)三角形的面積即可

三角形三邊長(zhǎng)容易獲得,再利用海倫-秦九韶公式可以計(jì)算面積: p ( p ? a ) ( p ? b ) ? ( p ? c ) \sqrt{p(p-a)(p-b)*(p-c)} p(p?a)(p?b)?(p?c) ?,其中p為周長(zhǎng)的一半。

代碼實(shí)現(xiàn)

import mathdef calc_area(n):angle = 2*math.pi / nx1, y1 = 1, 0x2, y2 = math.cos(angle), math.sin(angle)a = math.sqrt((x1-x2)**2 + (y1-y2)**2)      #求兩點(diǎn)距離p = (a+1+1) / 2                             #周長(zhǎng)的一半s = math.sqrt(p * (p-a) * (p-1) * (p-1))    #海倫-秦九韶公式return s#學(xué)習(xí)中沒(méi)有資料?可以加我VX:qian97378免費(fèi)領(lǐng)
def run():n = 20000s = calc_area(n)print(n * s)if __name__ == "__main__":run()

運(yùn)行該程序,可得π \piπ的值:3.141592601914085。

擴(kuò)展練習(xí):

利用已知兩邊長(zhǎng)及其夾角求面積公式,完成π \piπ的計(jì)算。

蒙特卡羅投針實(shí)驗(yàn)求π

概率可以用面積之比來(lái)表示

模擬投針實(shí)驗(yàn):

  1. 單位圓和其外接正方形

  2. 隨機(jī)投針

  3. 圓內(nèi)針數(shù)與總針數(shù)的比例等于圓和方形的面積之比

代碼實(shí)現(xiàn)

import random, mathdef calc_area(n):count = 0for i in range(n):x = random.random()y = random.random()d = math.sqrt(x*x + y*y)            #到圓心的距離if d < 1:                           #落入圓內(nèi),則計(jì)數(shù)加1count += 1return count * 4 / ndef run():n = 1000000s = calc_area(n)print(s)if __name__ == "__main__":run()

運(yùn)行程序,1百萬(wàn)次投針得到的π \piπ值為:3.140648,精度不算太高。

尾語(yǔ) 💝

要成功,先發(fā)瘋,下定決心往前沖!

學(xué)習(xí)是需要長(zhǎng)期堅(jiān)持的,一步一個(gè)腳印地走向未來(lái)!

未來(lái)的你一定會(huì)感謝今天學(xué)習(xí)的你。

—— 心靈雞湯

本文章到這里就結(jié)束啦~感興趣的小伙伴可以復(fù)制代碼去試試哦 😝

👇問(wèn)題解答 · 源碼獲取 · 技術(shù)交流 · 抱團(tuán)學(xué)習(xí)請(qǐng)聯(lián)系👇

http://m.risenshineclean.com/news/59716.html

相關(guān)文章:

  • 做文學(xué)網(wǎng)站用什么域名口碑營(yíng)銷(xiāo)怎么做
  • 商丘做網(wǎng)站哪家好上海廣告推廣
  • 網(wǎng)站開(kāi)發(fā)功能模塊出錯(cuò)seo課培訓(xùn)
  • 哪個(gè)網(wǎng)站做醫(yī)學(xué)培訓(xùn)好seo工作內(nèi)容和薪資
  • 浙江嘉興seo網(wǎng)站優(yōu)化推廣網(wǎng)絡(luò)推廣宣傳
  • 網(wǎng)站建設(shè)價(jià)格自動(dòng)點(diǎn)擊器怎么用
  • 廣西備案工信部網(wǎng)站營(yíng)銷(xiāo)型網(wǎng)站內(nèi)容
  • 潮州市住房和城鄉(xiāng)建設(shè)局網(wǎng)站站長(zhǎng)工具大全
  • b2b網(wǎng)站制作任務(wù)推廣引流平臺(tái)
  • wordpress 布局修改西安seo托管
  • 尋找網(wǎng)站建設(shè)_網(wǎng)站外包如何優(yōu)化網(wǎng)頁(yè)
  • 青島網(wǎng)站建設(shè)找潤(rùn)商大連seo按天付費(fèi)
  • 房地產(chǎn)行業(yè)網(wǎng)站跟我學(xué)seo從入門(mén)到精通
  • 重慶做網(wǎng)站價(jià)格百度一下首頁(yè)網(wǎng)址
  • 歐美網(wǎng)站建設(shè)排名北京網(wǎng)站seo服務(wù)
  • 如何在圖片上添加文字做網(wǎng)站網(wǎng)站備案查詢(xún)官網(wǎng)
  • 資源網(wǎng)站如何做網(wǎng)上開(kāi)店如何推廣自己的網(wǎng)店
  • 公司域名注冊(cè)網(wǎng)站哪個(gè)好合肥網(wǎng)絡(luò)推廣培訓(xùn)學(xué)校
  • 養(yǎng)生館室內(nèi)設(shè)計(jì)手機(jī)網(wǎng)站seo免費(fèi)軟件
  • 網(wǎng)站設(shè)計(jì)畢業(yè)論文任務(wù)書(shū)撫順優(yōu)化seo
  • 群暉ds1817做網(wǎng)站國(guó)外網(wǎng)站制作
  • 銅川公司做網(wǎng)站企業(yè)查詢(xún)系統(tǒng)官網(wǎng)
  • 南通網(wǎng)站優(yōu)化營(yíng)銷(xiāo)渠道模式有哪些
  • 做淘寶聯(lián)盟網(wǎng)站要多少錢(qián)建設(shè)網(wǎng)頁(yè)
  • 公司營(yíng)銷(xiāo)網(wǎng)站制作下載百度官方網(wǎng)站
  • 淫穢色情網(wǎng)站境外的南寧網(wǎng)站建設(shè)
  • 母嬰網(wǎng)站建設(shè)初衷如何免費(fèi)注冊(cè)網(wǎng)站平臺(tái)
  • 2023貴陽(yáng)疫情最新消息今天seo營(yíng)銷(xiāo)名詞解釋
  • 天河區(qū)做網(wǎng)站上海搜索關(guān)鍵詞排名
  • 怎樣搭建網(wǎng)站百度廣告推廣怎么做