十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團隊
量身定制 + 運營維護+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
pre
成都創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司一直秉承“誠信做人,踏實做事”的原則,不欺瞞客戶,是我們最起碼的底線! 以服務(wù)為基礎(chǔ),以質(zhì)量求生存,以技術(shù)求發(fā)展,成交一個客戶多一個朋友!專注中小微企業(yè)官網(wǎng)定制,做網(wǎng)站、網(wǎng)站設(shè)計,塑造企業(yè)網(wǎng)絡(luò)形象打造互聯(lián)網(wǎng)企業(yè)效應。
da =[
['a',30,0.45],
['b',31,0.43548],
['c',32, 0.43],
['d',33, 0.42],
['e',34, 0.41],
['f',35, 0.40],
['g',36, 0.39],
['h',37, 0.38]
]
li = [] # 存放符合條件的數(shù)
lp = [] # 正參與循環(huán)的數(shù)
total = 0.0 # 求和
no = 0 # 總循環(huán)次數(shù)
i,ln = 0,len(da)
while True:
if i ln: # 加入循環(huán)
lp +=[da[i]]
print('{}次后{}參入循環(huán)!'.format(no,da[i][0]))
i += 1
while lp:
no += 1
for j in range(len(lp)-1,-1,-1):
total += lp[j][2]
lp[j][1] -= 1
if lp [j][1] == 0:
print('{}次后,{}循環(huán)結(jié)束!'.format(no,lp[j][0]))
del lp[j]
if total = 10:
li += [[no,round(total-10,5)]]
total = 0
break
if i==ln and lp == []:
print('最后值為:{}'.format(total))
break
print('\n符合條件的值有{}個,他們?nèi)缦拢篭n'.format(len(li)),'*'*40)
for i in range(len(li)):
print(li[i][0],'次循環(huán)后,符合條件,其和為:',10+li[i][1],' ,減10后為:',li[i][1])
/pre
編寫循環(huán)的技巧,for循環(huán)包含了常見的計數(shù)器式循環(huán)。由于通常for循環(huán)比while循環(huán)更容易寫,也執(zhí)行得更快,所以for循環(huán)一般是你遍歷序列或其他可迭代對象時的首選。事實上,作為一條通用法則,你應該克制在Python中使用計數(shù)方式的誘惑——Python提供的迭代工具,能幫你把像C這樣低級語言中循環(huán)集合體的工作自動化。不過,有些情況下你還是需要以更為特定的方式進行迭代。例如,如果你需要在列表中每隔一個元素或每隔兩個元素進行訪問,或是要同時修改列表呢?如果在同一個for循環(huán)內(nèi),并行遍歷一個以上的序列呢?如果你也需要進行索引呢?
你總是可以用while循環(huán)和手動索引運算來編寫這些獨特的循環(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)遍歷多個序列。內(nèi)置函數(shù)enumerate (Python 2.3及之后版本可用)同時生成可迭代對象中元素的值和索引,因而我們不必再手動計數(shù)。內(nèi)置函數(shù)map (Python 1.0及之后版本可用)在Python 2.X中與zip有著相似的效果,但是在3.X中 map 的這一角色被移除了。因為for循環(huán)可能會比基于while的計數(shù)器循環(huán)運行得更快,所以借助這些工具并盡可能地使用for循環(huán),會讓你受益匪淺。讓我們在常見的使用場景下,依次看一看這些內(nèi)置函數(shù)吧。我們將會看到,它們的用法在Python 2.X和3.X中稍有不同,同時它們中的一些要比其他的更加有效。
#腳本里面直接這樣寫就好了import randomdef R(): print (random.randint(1,1000))for i in range(1,10): R()
可以用假設(shè)法啊。這是計算機擅長的方法,用一個循環(huán)先假設(shè)循環(huán)節(jié)為1,然后依次假設(shè)2,3,4,5,6,7,8,9
不用再多了。再多也看不過來。這樣就可以輕松算出來了。
1234567891011import sysx=0.12312312313tmps = "%s"%xp = tmps.find('.')if p0: sys.exit()tmps = tmps[p+1:]for i in xrange(1,9): if tmps[:i]== tmps[i:i*2] and tmps[i:i*2]== tmps[i*2:i*3] : print 'result is %d'%i sys.exit()print 'not found'
上面是一個簡單的例子。