流程控制-for循環(序列/字典舉例)
循環
循環是一個結構,導致程序要重復一定的次數。
條件下循環也是如此,當然條件變為假,循環結束。
for循環:
在序列裏,使用for循環遍歷。
語法:
for iterating_var in sqquence:
statement(s)
舉例:
(例1)for用法舉例
In [1]: a = 'ABC'
In [2]: a
Out[2]: 'ABC'
In [3]: for i in a:
...: print i
...:
A
B
C
In [4]: for i in a:
print i, #加逗號顯示在同一行用空格隔開。
...:
A B C
(例2)list的for循環
In [5]: list1 = [1,3,4,5]
In [6]: list1
Out[6]: [1, 3, 4, 5]
In [7]: for i in list1:
...: print i
...:
1
3
4
5
(例3)range()函數用法:
In [11]: range(1,11)
Out[11]: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
In [12]: range(11)
Out[12]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
In [13]: range(1,11,2)
Out[13]: [1, 3, 5, 7, 9]
#腳本:打印出1到10的10個數字:
#!/usr/bin/python
for i in range(1,11):
print i
運行結果:
[root@localhost python]# python for.py
1
2
3
4
5
6
7
8
9
10
[root@localhost python]#
(例4)print加","顯示為一行
腳本1:
#!/usr/bin/python
print [i for i in range(1,11)]
運行結果:
[root@localhost python]# python for.py
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[root@localhost python]#
腳本2:
#!/usr/bin/python
print [i*2 for i in range(1,11)]
運行結果:
[root@localhost python]# python for.py
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
[root@localhost python]#
腳本3 求1,10內的偶數:
#!/usr/bin/python
print [i for i in range(1,11) if i%2==0]
運行結果:
[root@localhost python]# python for.py
[2, 4, 6, 8, 10]
[root@localhost python]#
(例5)列表重寫:
腳本4 求1,10內的偶數的乘方:
#!/usr/bin/python
for i in [i**2 for i in range(1,11) if i%2==0]:
print i,
運行結果:
[root@localhost python]# python for.py
4 16 36 64 100
[root@localhost python]#
腳本5 求1到100所有數加到一起的和:
#!/usr/bin/python
sum = 0
for i in range(1,101):
sum = sum + i
print sum
運行結果:
[root@localhost python]# python for1.py
5050
(例6)xrange()
產生的是對象,節省內存:
xrange(10)
In [3]: a = xrange(20)
In [4]: type(a)
Out[4]: xrange
In [6]: for i in a:
print i,
...:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
流程控制-for循環(字典)
生成字典:
In [14]: dic = dic.fromkeys('abcdef','100')
In [15]: type(dic)
Out[15]: dict
In [16]: dic
Out[16]: {'a': '100', 'b': '100', 'c': '100', 'd': '100', 'e': '100', 'f': '100'}
(例1)打印出鍵值:
In [18]: for k in dic:
....: print k
....:
a
c
b
e
d
f
(例2)打印出鍵值和value
In [19]: for k in dic:
....: print k,dic[k]
....:
a 100
c 100
b 100
e 100
d 100
f 100
格式化輸出
In [21]: for k in dic:
print "%s --->> %s " % (k,dic[k])
....:
a --->> 100
c --->> 100
b --->> 100
e --->> 100
d --->> 100
f --->> 100
(例3)items()方法:
dic.items():返回的是列表 :
In [22]: dic.items()
Out[22]:
[('a', '100'),
('c', '100'),
('b', '100'),
('e', '100'),
('d', '100'),
('f', '100')]
In [23]: for i in dic.items():print i
('a', '100')
('c', '100')
('b', '100')
('e', '100')
('d', '100')
('f', '100')
In [24]: for k,v in dic.items():print k,v
a 100
c 100
b 100
e 100
d 100
f 100
(例4)dic.iteritems() 方法:
dic.iteritems() 返回的是對象:
In [25]: for k,v in dic.iteritems():print k,v
a 100
c 100
b 100
e 100
d 100
f 100
一個print 可以輸出一個換行符:
(例5)舉例乘法口訣:
#!/usr/bin/python
for i in xrange(1,10):
for j in xrange(1,i+1):
print "%sx%s=%s" % (j,i,j*i),
運行結果:
[root@localhost python]# python koujun.py
1x1=1
1x2=2 2x2=4
1x3=3 2x3=6 3x3=9
1x4=4 2x4=8 3x4=12 4x4=16
1x5=5 2x5=10 3x5=15 4x5=20 5x5=25
1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36
1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49
1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64
1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81
[root@localhost python]#
習題:
1. 有1、2、3、4個數字,能組成多少個互不相同且無重復數字的三位數?都是多少? 1.程序分析:可填在百位、十位、個位的數字都是1、2、3、4。組成所有的排列後再去 掉不滿足條件的排列。
#!/usr/bin/python
# date:2017.12.26
# Author:fengxiaoqing
i=0
num=(1,2,3,4)
for x in num:
for y in num:
for z in num:
if x != y and x != z and y != z :
print x*100+y*10+z
i=i+1
print "the total num is :%s" % i
2. 打印出所有的“水仙花數”,所謂“水仙花數”是指一個三位數,其各位數字立方和等於該數本身。例如:153是一個“水仙花數”,因為153=1的三次方+5的三次方+3的三次方。
程序分析:利用for循環控制100-999個數,每個數分解出個位,十位,百位。
3. 兩個乒乓球隊進行比賽,各出三人。甲隊為a,b,c三人,乙隊為x,y,z三人。已抽簽決定比賽名單。有人向隊員打聽比賽的名單。a說他不和x比,c說他不和x,z比,請編程序找出三隊賽手的名單。
流程控制-for循環(序列/字典舉例)