首先你的while循環(huán)為 ?while 1,也就是這是個(gè)死循環(huán),死循環(huán)你就必須設(shè)置一個(gè)條件讓他break
創(chuàng)新互聯(lián)公司于2013年創(chuàng)立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目網(wǎng)站制作、網(wǎng)站設(shè)計(jì)網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢(mèng)想脫穎而出為使命,1280元珠山做網(wǎng)站,已為上家服務(wù),為珠山各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220
你輸入的不是name1或name2,由于沒有break的條件所以會(huì)一直print
修改如下:
def?name(x):
while?1:
if?x?==?"name1"?or?x?=="name2":
print?"hello?"?+?x
break
else:?
x?=?raw_input(".\n請(qǐng)輸入name1或者name2:")
return?"yo,boy"????
s=raw_input("輸入你的名字:\n")
ret?=?name(s)
print?ret
結(jié)果如下:
===============================
輸入你的名字:
ldl
.
請(qǐng)輸入name1或者name2:name2
hello name2
yo,boy
================================
輸入你的名字:
ldl
.
請(qǐng)輸入name1或者name2:name1
hello name1
yo,boy
編寫循環(huán)的技巧,for循環(huán)包含了常見的計(jì)數(shù)器式循環(huán)。由于通常for循環(huán)比while循環(huán)更容易寫,也執(zhí)行得更快,所以for循環(huán)一般是你遍歷序列或其他可迭代對(duì)象時(shí)的首選。事實(shí)上,作為一條通用法則,你應(yīng)該克制在Python中使用計(jì)數(shù)方式的誘惑——Python提供的迭代工具,能幫你把像C這樣低級(jí)語言中循環(huán)集合體的工作自動(dòng)化。不過,有些情況下你還是需要以更為特定的方式進(jìn)行迭代。例如,如果你需要在列表中每隔一個(gè)元素或每隔兩個(gè)元素進(jìn)行訪問,或是要同時(shí)修改列表呢?如果在同一個(gè)for循環(huán)內(nèi),并行遍歷一個(gè)以上的序列呢?如果你也需要進(jìn)行索引呢?
你總是可以用while循環(huán)和手動(dòng)索引運(yùn)算來編寫這些獨(dú)特的循環(huán),但是python提供了一套內(nèi)置函數(shù),可以幫你在for循環(huán)內(nèi)定制迭代:·內(nèi)置函數(shù)range (Python 0.X及之后版本可用)返回一系列連續(xù)增加的整數(shù),可作為for中的索引。內(nèi)置函數(shù)zip (Python 2.0及之后版本可用)返回一系列并行元素的元組,可用于在for中內(nèi)遍歷多個(gè)序列。內(nèi)置函數(shù)enumerate (Python 2.3及之后版本可用)同時(shí)生成可迭代對(duì)象中元素的值和索引,因而我們不必再手動(dòng)計(jì)數(shù)。內(nèi)置函數(shù)map (Python 1.0及之后版本可用)在Python 2.X中與zip有著相似的效果,但是在3.X中 map 的這一角色被移除了。因?yàn)閒or循環(huán)可能會(huì)比基于while的計(jì)數(shù)器循環(huán)運(yùn)行得更快,所以借助這些工具并盡可能地使用for循環(huán),會(huì)讓你受益匪淺。讓我們?cè)诔R姷氖褂脠?chǎng)景下,依次看一看這些內(nèi)置函數(shù)吧。我們將會(huì)看到,它們的用法在Python 2.X和3.X中稍有不同,同時(shí)它們中的一些要比其他的更加有效。
return
會(huì)直接另函數(shù)返回,函數(shù)就運(yùn)行結(jié)束了,所有該函數(shù)體內(nèi)的代碼都不再執(zhí)行了,所以該函數(shù)體內(nèi)的循環(huán)也不可能再繼續(xù)運(yùn)行。
如果你需要讓循環(huán)繼續(xù)執(zhí)行,就不能return函數(shù),而應(yīng)該選用break或者continue。
break:跳出所在的當(dāng)前整個(gè)循環(huán),到外層代碼繼續(xù)執(zhí)行。
continue:跳出本次循環(huán),從下一個(gè)迭代繼續(xù)運(yùn)行循環(huán),內(nèi)層循環(huán)執(zhí)行完畢,外層代碼繼續(xù)運(yùn)行。
return:直接返回函數(shù),所有該函數(shù)體內(nèi)的代碼(包括循環(huán)體)都不會(huì)再執(zhí)行。
#腳本里面直接這樣寫就好了import randomdef R(): print (random.randint(1,1000))for i in range(1,10): R()