第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

無(wú)法獲得用于計(jì)算迭代次數(shù)的 Python 函數(shù)以使其正常工作

無(wú)法獲得用于計(jì)算迭代次數(shù)的 Python 函數(shù)以使其正常工作

SMILET 2022-01-05 11:25:37
我最近開(kāi)始學(xué)習(xí) Python。我正在課程的控制結(jié)構(gòu)部分做一些練習(xí),一切都很順利,直到我被最后一個(gè)問(wèn)題難住了。我已經(jīng)研究了三天了,我很確定解決方案很明顯。這是練習(xí)中的描述:從任何數(shù)字開(kāi)始。如果這個(gè)數(shù)能被 3 整除,就除以 3。否則,給這個(gè)數(shù)加 2。最終,無(wú)論從什么數(shù)開(kāi)始,這個(gè)數(shù)列都會(huì)遇到 1。例如,假設(shè)我們從數(shù) 5 開(kāi)始:5 不能被 3 整除,所以 5 + 2 = 7 7 不能被 3 整除,所以 7 + 2 = 9 9 可以被 3 整除,所以 9 / 3 = 3 3 可以被 3 整除,所以 3 / 3 = 1從 5 開(kāi)始,此序列在 4 次迭代中收斂于 1:5 -> 7, 7 -> 9, 9 -> 3, 3 -> 1。編寫(xiě)一個(gè)名為 Joyner 的函數(shù)。Joyner 應(yīng)該有一個(gè)參數(shù),一個(gè)整數(shù)。它應(yīng)該返回第一次達(dá)到 1 所需的迭代次數(shù)。我運(yùn)行了我在頁(yè)面上編寫(xiě)的函數(shù),該函數(shù)用不同的整數(shù)測(cè)試我的函數(shù)。每次它給我一個(gè)錯(cuò)誤(說(shuō)明預(yù)期的迭代次數(shù)和我的程序計(jì)算的次數(shù))時(shí),我設(shè)法修復(fù)了該整數(shù)的程序,但是下面測(cè)試的整數(shù)又會(huì)給我一個(gè)錯(cuò)誤。下面的代碼是我決定來(lái)這里尋求幫助之前的最后重寫(xiě)。def joyner(num):    count = 0    while num % 3 != 0:        # print("num not divisible by 3")        num = num + 2        # print("added 2")        count += 1        # print(count)        if num % 3 == 0:            # print("num is divisible by 3")            num /= 3            # print("divided by 3")            count += 1            # print(count)    while num % 3 == 0:        # print("num is divisible by 3")        num /= 3        # print("divided by 3")        count += 1        # print(count)    return count結(jié)果如下:我們發(fā)現(xiàn)您提交的內(nèi)容存在以下問(wèn)題:我們使用 num = 15 測(cè)試了您的代碼。我們希望 Joyner 返回 int 5。但是,它返回了 int 1。我們使用 num = 29 測(cè)試了您的代碼。我們希望 Joyner 返回 int 10。然而,它返回了 int 3。我們使用 num = 65 測(cè)試了您的代碼。我們希望 Joyner 返回 int 8。但是,它返回了 int 3。我們使用 num = 12 測(cè)試了您的代碼。我們希望 Joyner 返回 int 3。但是,它返回了 int 1。我們使用 num = 32 測(cè)試了您的代碼。我們希望 Joyner 返回 int 6。但是,它返回了 int 4。請(qǐng)注意,這些錯(cuò)誤可能會(huì)阻止我們以其他方式檢查您提交的內(nèi)容,因此修復(fù)這些問(wèn)題可能會(huì)導(dǎo)致下次出現(xiàn)其他問(wèn)題。繼續(xù)嘗試!這就是調(diào)試的全部?jī)?nèi)容。您提交的以下內(nèi)容是正確的:我們希望在您的代碼中找到一個(gè)名為 Joyner 的函數(shù),我們做到了。我們使用 num = 5 測(cè)試了您的代碼。我們希望 Joyner 返回 int 4,并且確實(shí)如此。我們使用 num = 27 測(cè)試了您的代碼。我們希望 Joyner 返回 int 3,并且確實(shí)如此。我們使用 num = 16 測(cè)試了您的代碼。我們希望 Joyner 返回 int 3,并且確實(shí)如此。
查看完整描述

2 回答

?
LEATH

TA貢獻(xiàn)1936條經(jīng)驗(yàn) 獲得超7個(gè)贊

你的任務(wù)前提不正確:


從任何數(shù)字開(kāi)始。如果這個(gè)數(shù)能被 3 整除,就除以 3。否則,給這個(gè)數(shù)加 2。最終,無(wú)論你從什么數(shù)字開(kāi)始,這個(gè)系列都會(huì)變成 1。


number = 4


4 + 2 = 6        # 4 is not divisible by 3, add 2

6 / 3 = 2        # 6 is     divisible by 3 -> 2

2 + 2 = 4        # 2 is not divisible by 3, add 2

4 + 2 = 6        # 4 is not divisible by 3, add 2  --> cycle - no solution.

如果有解決方案,則會(huì)找到它:


def joyner(num): 

    count = 0

    seen = set()

    while num != 1:

        if num in seen: 

            return None

        else:

            seen.add(num)

        if num % 3 == 0:

            num = num // 3

        else:

            num += 2

        count += 1


    return count

測(cè)試一下:


i = 0    

for k,c in d.items():

    if c is None:

        continue

    print(k,":",c, end="     ")

    i += 1

    if i % 6 == 0:

        print()

        i = 0

從 1 到 99 的解的輸出:


 1 : 0       3 : 1      5 : 4      7 : 3     9 : 2      11 : 7     

13 : 6      15 : 5     17 : 6     19 : 5     21 : 4     23 : 5     

25 : 4      27 : 3     29 : 10    31 : 9     33 : 8     35 : 9     

37 : 8      39 : 7     41 : 8     43 : 7     45 : 6     47 : 9     

49 : 8      51 : 7     53 : 8     55 : 7     57 : 6     59 : 7     

61 : 6      63 : 5     65 : 8     67 : 7     69 : 6     71 : 7     

73 : 6      75 : 5     77 : 6     79 : 5     81 : 4     83 : 13     

85 : 12     87 : 11    89 : 12    91 : 11    93 : 10    95 : 11     

97 : 10     99 : 9     

不可行:


[ 2,  4,  6,  8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30, 32, 34, 36, 38, 40, 

 42, 44, 46, 48, 50, 52, 54, 56, 58, 60, 62, 64, 66, 68, 70, 72, 74, 76, 78, 

 80, 82, 84, 86, 88, 90, 92, 94, 96, 98]   

您的算法僅適用于奇數(shù)。


我們使用 num = 12 測(cè)試了您的代碼。我們希望 Joyner 返回 int 3。但是,它返回了 int 1。


不工作在所有


查看完整回答
反對(duì) 回復(fù) 2022-01-05
?
米脂

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超3個(gè)贊

你的代碼的事情是它假設(shè)當(dāng)一個(gè)數(shù)字不再能被 3 整除時(shí)它達(dá)到 1,那就是關(guān)于你的第二個(gè)循環(huán),例如 15 可以被 3 整除,它變成 5,它不能被整除,但也不能被整除1.

總體上這樣想,一個(gè)數(shù)可能是可整除的,也可能是不可整除的,所以它應(yīng)該在一個(gè)循環(huán)中發(fā)生,當(dāng)你達(dá)到1時(shí)你應(yīng)該停止。


查看完整回答
反對(duì) 回復(fù) 2022-01-05
  • 2 回答
  • 0 關(guān)注
  • 167 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)