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

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

Python在for循環(huán)中減少變量

Python在for循環(huán)中減少變量

慕桂英3389331 2023-12-12 21:09:49
我將 java 代碼轉(zhuǎn)換為 python 代碼,如何減少 python 中 for 循環(huán)內(nèi)的變量?如果索引位于 if 語(yǔ)句內(nèi),我嘗試將索引減 1,但顯然我不能這樣做。還有其他方法可以減少 for 循環(huán)中的 i 嗎?Java代碼:for(int i = 1; i <= 3; i++)        {            System.out.print("Enter Movie " + i + " of " + 3 + " : ");            String inputMovie = sc.nextLine();            if (inputMovie.equals(""))             {                System.out.println("Please input a movie name.");                System.out.println("");                i--;            }            else                movies.offer("'"+inputMovie+"'");        }Python代碼:for i in range(1,4):    inputMovie=input("Enter Movie " + str(i) + " of " + str(3) + " : ")    if inputMovie=="":        print("Please input a movie name")        print("")        i-=1        pass    else:        movies.append(inputMovie)    pass輸出:如果我們查看輸出,它仍然在遞增而不是遞減 iEnter Movie 1 of 3 :Please input a movie nameEnter Movie 2 of 3 :Please input a movie nameEnter Movie 3 of 3 :Please input a movie name
查看完整描述

5 回答

?
慕慕森

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

Python 不允許您在for循環(huán)中更改迭代器。一旦循環(huán)的下一次迭代到來(lái),迭代器將成為可迭代對(duì)象的下一個(gè)值。


這也是因?yàn)閞ange其行為與實(shí)際的類似 Java 的for循環(huán)不同。相反,它會(huì)不斷生成該范圍內(nèi)的數(shù)字(您可以通過(guò)list(range(10))在 Python 解釋器中輸入來(lái)看到這一點(diǎn),它會(huì)生成一個(gè)從 0 到 9 的數(shù)字列表。


如果你想修改迭代器,你應(yīng)該使用循環(huán)while來(lái)代替:


i = 1

while i <= 3:

    inputMovie=input("Enter Movie " + str(i) + " of " + str(3) + " : ")

    if inputMovie=="":

        print("Please input a movie name")

        print("")

        i-=1

    else:

        movies.append(inputMovie)

    i = i + 1

這應(yīng)該與您的 Java 代碼執(zhí)行相同的操作,因?yàn)槲抑皇菍⑷齻€(gè)指令從 Javafor循環(huán)移動(dòng)到它們的位置。pass不需要通知,因?yàn)樗菬o(wú)效的聲明。


為了優(yōu)化,我想說(shuō)的是,您實(shí)際上并不需要遞減迭代器,只需避免遞增它即可。我將此解決方案與原始答案分開,因?yàn)樗c您的原始設(shè)計(jì)有很大偏差:


i = 1

while i <= 3:

    inputMovie=input("Enter Movie " + str(i) + " of " + str(3) + " : ")

    if inputMovie=="":

        print("Please input a movie name")

        print("")

    else:

        movies.append(inputMovie)

        i = i + 1

我所做的就是刪除減量并將增量推入塊else,以便僅在輸入電影名稱時(shí)才運(yùn)行它。


查看完整回答
反對(duì) 回復(fù) 2023-12-12
?
狐的傳說(shuō)

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

你應(yīng)該使用一個(gè)while聲明


“不幸的是”for循環(huán)將保留“內(nèi)存”并在每次迭代時(shí)重新分配給下一個(gè)值


i = 1

while i < 4:

? ? inputMovie = input("Enter Movie " + str(i) + " of " + str(3) + " : ")

? ? if inputMovie == "":

? ? ? ? print("Please input a movie name")

? ? ? ? print("")

? ? ? ? i-=1

? ? else:

? ? ? ? movies.append(inputMovie)

? ? ? ? i+=1

該pass指令無(wú)關(guān)緊要,您可以省略它

查看完整回答
反對(duì) 回復(fù) 2023-12-12
?
慕姐8265434

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

Python 中的 for 循環(huán)更像是 for-each。因此,無(wú)論循環(huán)中的更改/更新如何,循環(huán)值(i)都會(huì)更新為下一個(gè)值。


更好的方法是使用 while 循環(huán)。


i = 1

while i <= 3:

    inputMovie = input("Enter Movie " + str(i) + " of " + str(3) + " : ")

    if inputMovie=="":

        print("Please input a movie name")

        print("")

        i-=1

        pass

    else:

        movies.append(inputMovie)

        i+=1

    pass


查看完整回答
反對(duì) 回復(fù) 2023-12-12
?
呼如林

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

range(low,high)low生成一個(gè)由從開始并結(jié)束于的元素組成的序列high-1。這就是為什么你的i-=1不起作用,因?yàn)槲艺谠摿斜碇械?/p>

這里最簡(jiǎn)單的替代方法是使用循環(huán)while。


while i<target:

    if something:

        #do something

        i += 1


查看完整回答
反對(duì) 回復(fù) 2023-12-12
?
皈依舞

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

您必須range()正確設(shè)置您的功能。為了減少循環(huán),您可以使用while循環(huán),或者您可以更改算法并設(shè)置for循環(huán),但現(xiàn)在您可以做的是,如果您可以將范圍函數(shù)步長(zhǎng)值選擇為 -1。請(qǐng)嘗試檢查代碼,因?yàn)槲乙埠湍阋粯佑型瑯拥膯?wèn)題。



查看完整回答
反對(duì) 回復(fù) 2023-12-12
  • 5 回答
  • 0 關(guān)注
  • 277 瀏覽
慕課專欄
更多

添加回答

舉報(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)