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

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

有人可以幫我分解并理解這個 collat??z 序列代碼嗎?

有人可以幫我分解并理解這個 collat??z 序列代碼嗎?

收到一只叮咚 2022-11-18 20:49:57
我是一名全新的編程研究生,遇到了一些麻煩。我正在解決一個教科書問題,該問題要我取一個正整數(shù)并打印該數(shù)字的 Collatz 序列。    while num !=1:        print(num)        if num%2==0:            num = num//2    else:        num = 3*num+1print(1)現(xiàn)在,此代碼有效。我得到了數(shù)學邏輯。但是有些部分我不明白。首先是 print(num),這樣做是為了讓代碼打印輸入的數(shù)字,因為那是序列的開始。但是,將其置于循環(huán)前端的邏輯/解釋是什么?其次,對于 num = num//2 和 num = 3*num+1,為什么代碼運行只需要這些?最后,我們的目標是打印整個序列,直到輸入變?yōu)?1。我認為您需要在頂部設置一個累加器。即 lst = [] 將每個值附加到該列表中,然后返回列表。為什么只是重新標記它們 num = 工作?每次迭代時,是否不會刪除先前的值,因為它沒有存儲在任何地方?最后,為什么我們不需要以 return 結束循環(huán)?它怎么知道打印整個數(shù)字序列?它以 print(1) 結束,因為每個輸入都需要以它結束,并且它在 1 之前終止。但是,我沒有調(diào)用該函數(shù)(它是我這邊的一個函數(shù),而不僅僅是一個 while 循環(huán))來采取行動。它只是……做到了。如果這有點令人困惑,我很抱歉,但我正在嘗試理解正確的代碼答案。我大部分時間都在做累加器之類的東西,所以我不確定為什么不需要累加器,num = 做了什么,以及如何用 print(1) 結束它并出現(xiàn)整個序列。
查看完整描述

2 回答

?
縹緲止盈

TA貢獻2041條經(jīng)驗 獲得超4個贊

首先是 print(num),這樣做是為了讓代碼打印輸入的數(shù)字,因為那是序列的開始。但是,將其置于循環(huán)前端的邏輯/解釋是什么?

它被放置在原處,因為它只是用來打印輸入的數(shù)字。每次到達代碼中的那個點時,它都會打印代碼中那個點發(fā)生的任何num事情。在第一次迭代中,是序列的第一個元素。在第二次迭代中,現(xiàn)在是序列的第二個元素。在第三次迭代中,是第三個元素,依此類推。這將打印序列的每個元素,除了,因為循環(huán)在該點中斷,這就是為什么在循環(huán)之后有一個單獨的元素。numnumnumprint1print(1)

其次,對于 num = num//2 和 num = 3*num+1,為什么代碼運行只需要這些?最后,我們的目標是打印整個序列,直到輸入變?yōu)?1。我認為您需要在頂部設置一個累加器。即 lst = [] 將每個值附加到該列表中,然后返回列表。為什么只是重新標記它們 num = 工作?每次迭代時,是否不會刪除先前的值,因為它沒有存儲在任何地方?

print(num)在計算時打印每個序列元素,因此程序不需要顯式保存元素。該程序確實忘記了以前的值,但它們已經(jīng)被打印出來了。記住打印輸出是其他工具的工作——例如,如果您使用指向文件的 stdout 運行它,打印輸出將寫入文件。

最后,為什么我們不需要以 return 結束循環(huán)?它怎么知道打印整個數(shù)字序列?它以 print(1) 結束,因為每個輸入都需要以它結束,并且它在 1 之前終止。但是,我沒有調(diào)用該函數(shù)(它是我這邊的一個函數(shù),而不僅僅是一個 while 循環(huán))來采取行動。它只是……做到了。

return有兩個工作:結束當前函數(shù)執(zhí)行,設置返回值。如果執(zhí)行到一個函數(shù)的末尾而沒有執(zhí)行一個return,該函數(shù)的執(zhí)行仍然結束,返回值為None。return不參與打印輸出。print如上所述,這就是工作。

至于不調(diào)用該函數(shù),我們無法回答這是怎么回事。我們需要查看您實際運行的內(nèi)容,包括實際功能。


查看完整回答
反對 回復 2022-11-18
?
郎朗坤

TA貢獻1921條經(jīng)驗 獲得超9個贊

  1. 這就是沒有列表的輸出“神奇地出現(xiàn)”的方式

  2. 見#1

  3. 你總是從一個函數(shù)返回......在這種情況下你沒有返回,而是打印列表

將 atime.sleep放在那里(在你的循環(huán)內(nèi))以可視化正在發(fā)生的事情可能會有所幫助

這個站點:python tutor - 看看它是如何工作的

有助于可視化代碼執(zhí)行


查看完整回答
反對 回復 2022-11-18
  • 2 回答
  • 0 關注
  • 122 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網(wǎng)微信公眾號