簡體   English   中英

減少到零的步數

[英]Number of steps to reduce to zero

你好,我有這個步驟問題,我想看看我可以在哪里改進我的代碼,以獲得將任何 integer 減少到零所需的步驟數。 我相信你們都知道這個過程,但只是為了澄清......如果數字是偶數,我們除以2,加一個步驟,如果數字是奇數我們減去,再加一個步驟......有人可以讓我知道我錯過了什么嗎?

def steps_to_zero(int):
    step = 0
    while (abs(int) > 0):
        if int % 2 == 0:
            int / 2
        else:
            int - 1
        step += 1
    return step

當您編寫諸如x / 2之類的行時, Python 將計算該除法的結果。 但是,您不會將除法的結果保存在任何地方!

您需要執行與step += 1相同的操作,這相當於step = step + 1

def steps_to_zero(int):
    step = 0
    while (abs(int) > 0):
        if int % 2 == 0:
            int /= 2 # Same as int = int / 2
        else:
            int -= 1 # Same as int = int - 1
        step += 1 # Same as step = step + 1
    return step

如果你不這樣做,變量int永遠不會改變值。 它保留了它在開始時的價值。 結果,while 循環將永遠運行,因為abs(int) > 0永遠保持這種情況。

另請注意, int是內置類型,具有特殊含義。 強烈建議不要使用它或任何其他此類類型作為變量的名稱。 考慮改寫integer

def steps_to_zero(integer):
    step = 0
    while (abs(integer) > 0):
        if integer % 2 == 0:
            integer /= 2 # Same as integer = integer / 2
        else:
            integer -= 1 # Same as integer = integer - 1
        step += 1 # Same as step = step + 1
    return step

您沒有更新您的計數器int 您需要將其存儲回自身,否則您將永遠循環。

def steps_to_zero(int):
    step = 0
    while (abs(int) > 0):
        if int % 2 == 0:
            int = int / 2
        else:
            int = int - 1
        step += 1
    return step

應該解決。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM