2.2 流程控制-for序列 2.3 流程控制-for字典 2.4 迴圈退出 2.5 流程控制-while
2.2 流程控制-for序列
python中主要的流程控制有for迴圈和while迴圈
迴圈是一個結構,導致程式要重複一定的次數。
條件迴圈也是如此,當條件變為假,迴圈結束
-
for迴圈 在序列裡,可以用for迴圈進行遍歷
a='ABC' for i in a : print i \可以在後面加“,”來不輸出換行符
-
range
help(range)
range([start,]stop[,step]) \start 預設為0,step 預設為1 ,step是步長;stop不包含在輸出中,比如遍歷[1-10],for i in range(1,11)
-- 列表重寫
[i**2 for i in range(1,11) if i % 2 != 0 ] \\ 1-10裡面奇數平方寫入列表中
python3中range即為py2中的xrange,寫xrange會報錯
2.3 流程控制-for字典
dic1 = {"name":"zx","age":"18"} for k in dic1: print k , dic1[k] for i in dic1.iteritems(): \\.iteritems()類似於xrange print i for k,v in dic1.iteritems() : print k,v
輸出九九乘法表
for i in range(1,10):
for j in range(1,i+1):
a = i * j
if a < 10:
print "{0} * {1} = {2} |".format(j,i,a),
else:
print "{0} * {1} = {2} |".format(j,i,a),
if j == i :
print ""
2.4 迴圈退出
for 迴圈也有else,在for迴圈正常結束後使用
for i in range(0,10):
print i
else
print 'end'
break 退出當前迴圈 continue 退出本次迴圈,進行下次迴圈 exit 退出指令碼
2.5 流程控制-while
while迴圈,直到表示式變為假才退出迴圈,表示式是一個邏輯表示式,必須返回True或者False。
while expression :
statements(s)
while 1 :
print "Hello " \\可以while True : 但不能 while False :
練習
練習 1
- 有1、2、3、4個數字,能組成多少個互不相同且無重複數字的三位數?都是多少? 1.程式分析:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列後再去 掉不滿足條件的排列。
- 打印出所有的“水仙花數”,所謂“水仙花數”是指一個三位數,其各位數字立方和等於該數本身。例如:153是一個“水仙花數”,因為153=1的三次方+5的三次方+3的三次方。 程式分析:利用for迴圈控制100-999個數,每個數分解出個位,十位,百位。
- 兩個乒乓球隊進行比賽,各出三人。甲隊為a,b,c三人,乙隊為x,y,z三人。已抽籤決定比賽名單。有人向隊員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請程式設計序找出三隊賽手的名單。
1、4個不同數字3個隨機排列(4個數字不含0)
n = 0
for i in range(1,5):
for j in range(1,5):
for q in range(1,5):
if i != j and i != q and j !=q :
n += 1
print "{0}{1}{2}".format(i,j,q)
print n
---------
123
132
213
231
312
321
2、 水仙花數
n = 0
for i in range(1,10):
for j in range(0,10):
for q in range(0,10):
if i ** 3 + j ** 3 + q ** 3 == i * 100 + j * 10 + q :
n += 1
print "{0}{1}{2}".format(i,j,q)
print n
---------
153
370
371
407
3、 比賽
n = 0
l1 = ['a','b','c']
l2 = ['x','y','z']
dic = {}
l = []
for i in l1:
for j in l1:
for q in l1:
if i != j and i != q and j !=q :
n += 1
l.append(i)
l.append(j)
l.append(q)
dic = dict(zip(l,l2))
if dic['a'] != 'x' and dic['c'] == 'y':
print dic
l = []
---------
{'a': 'z', 'c': 'y', 'b': 'x'}
練習2
-
將一個正整數分解質因數。例如:輸入90,打印出90=233*5。 程式分析:對n進行分解質因數,應先找到一個最小的質數i,然後按下述步驟完成: (1)如果分解後商為1,則說明分解質因數的過程已經結束,打印出即可。 (2)如果商不為1,則應打印出i的值,並用n除以i的商,作為新的正整數進行分解, 重複執行第一步。 (3)如果n不能被i整除,則i的值加1,重複執行第一步。
-
猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不癮,又多吃了一個,第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以後每天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。 程式分析:採取逆向思維的方法,從後往前推斷。
1、
import sys
n = input()
stat = 0
l = []
if n == 1 :
print "n = 1 is prime number!"
while n != 1 :
for i in range(2,n+1):
if n % i == 0 :
l.append(i)
if i == n :
print "n = {0} is prime number !".format(n)
sys.exit()
n /= i
for i in l :
if stat == 0 :
print "{0}".format(i),
stat += 1
else :
print " * {0}".format(i),
2、
m = 1
n == 10
while n > 1 :
m += 1
m *= 2
n -= 1
print m
---------
1534