日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 >

用Python求出:1到某个数的奇数序列里一共出现了多少个3

發(fā)布時(shí)間:2025/3/20 54 豆豆
生活随笔 收集整理的這篇文章主要介紹了 用Python求出:1到某个数的奇数序列里一共出现了多少个3 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

從1開始到微信ID的數(shù)字中(),奇數(shù)序列里一共出現(xiàn)了多少個(gè)3。

這次練習(xí)附加題。

方法一:

import time start = time.clock() inum = 866278171 sum = 0def fsum(n, sum):n = str(n)for i in range(len(n)):if n[i] == '3':sum += 1return sumfor i in range(3, inum+1):if i % 2 == 0:continueif str(i).find('3') > -1 :sum = fsum(i, sum) print('1 ~ {} 之間的奇數(shù)序列,總共有 {} 個(gè) 3 。'.format(inum, sum))end = time.clock() print('耗時(shí):{}'.format(end - start))

不過這個(gè)運(yùn)行很耗時(shí),不知道有沒有更好的方法,或加速程序執(zhí)行速度的方法。

因?yàn)榉椒ㄒ粚?shí)在太慢了,雖然算小數(shù)沒有問題,但題目中的數(shù)太大了——我電腦都休眠了,還沒算出結(jié)果。

不得已,想其他辦法,有了方法二。做這個(gè)方法時(shí)幾次把自己繞到坑里,快懷疑自己數(shù)死早了……

方法二:

''' 遇到問題沒人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流QQ群:857662006 尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書! ''' import time start = time.clock() inum = 866278171 sumA = 0def f1(l, sum = 1):if l == 1:return sumsum = f1(l-1) * 10 + 10 ** (l-2) * 5return suminumStr = str(inum) while len(inumStr) > 1:l = len(inumStr) - 1if int(inumStr[0]) < 3:sumA += f1(l) * int(inumStr[0])elif int(inumStr[0]) > 3:sumA += f1(l) * int(inumStr[0]) + 10 ** (l-1) * 5else :sumA += f1(l) * int(inumStr[0]) + int((int(inumStr[1:]) + 1) / 2)inumStr = inumStr[1:]if int(inumStr) > 2:sumA += 1print('1 ~ {} 之間的奇數(shù)序列,總共有 {} 個(gè) 3 。'.format(inum, sumA))end = time.clock() print('耗時(shí):{}'.format(end - start))

方法二和方法一比,性能是杠杠的,但邏輯上就要繞下彎才能理解了。

結(jié)果的話,挑了一部分?jǐn)?shù)據(jù),通過和方法一的結(jié)果做比較,來確認(rèn)準(zhǔn)確性。

當(dāng)然因?yàn)檫@次是手動(dòng)做的測試,所以只做來小范圍的確認(rèn)。

下次要對這2個(gè)方法再做改造,然后利用python的單元測試,通過生成隨機(jī)數(shù),再做更廣泛的確認(rèn)。

關(guān)于方法二的解體思路,也在下次確認(rèn)通過后,再做詳細(xì)解釋吧。

總結(jié)

以上是生活随笔為你收集整理的用Python求出:1到某个数的奇数序列里一共出现了多少个3的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。