本文共 3521 字,大约阅读时间需要 11 分钟。
1、for 循环简介
(1) for 用于 python 中的循环,在条件循环中,如果条件变为假则循环结束(2) 在序列里,使用 for 循环遍历(列表,元组,字符串)
In [1]: a = {1:'a', 2:'b', 3:'c'}In [2]: for k,v in a.ita.items a.iteritems a.iterkeys a.itervalues In [2]: for k,v in a.items(): ...: print k,v ...: 1 a2 b3 c
(3)加上,表示去除换行\n
range的理解:
range(10):表示从0开始到9,总共10个数range(1,12):表示从1开始到11rang(1,12,3):3表示间隔range和xrange的区别:
range(10),占用内存资源xrange(10),不占用内存资源,当循环的时候就占用,for i in xrange(10):,所以循环就使用xrange减少内存消耗[root@centos7-3 python]# vim for1.py
#!/usr/bin/python
for i in [i**2 for i in range(1,11)]:print i,(4)打印基数
[root@centos7-3 python]# vim for1.py#!/usr/bin/python
for i in [i**2 for i in range(1,11) if i%2 != 0]:print i,(5)打印九九乘法表
当i=1时,那就是for j in xrange(1,2):那j的取值还是1,print 后面的,表示每次循环的结果都横着输出,最好一行的print 就是for结束循环后换行1x1 =1
2x1 =2 2x2 =43x1 =3 3x2 =6 3x3 =94x1 =4 4x2 =8 4x3 =12 4x4 =165x1 =5 5x2 =10 5x3 =15 5x4 =20 5x5 =256x1 =6 6x2 =12 6x3 =18 6x4 =24 6x5 =30 6x6 =367x1 =7 7x2 =14 7x3 =21 7x4 =28 7x5 =35 7x6 =42 7x7 =498x1 =8 8x2 =16 8x3 =24 8x4 =32 8x5 =40 8x6 =48 8x7 =56 8x8 =649x1 =9 9x2 =18 9x3 =27 9x4 =36 9x5 =45 9x6 =54 9x7 =63 9x8 =72 9x9 =81(6)
contine:退出当前循环,contine下面的语句不会执行break:退出整个循环pass:占位,还没想好怎么写先占位,什么都不做sys.exit:全部整个脚本,相当于shell的exit 0[root@centos7-3 python]# cat for2.py
#!/usr/bin/pthonimport sysimport timefor i in xrange(10):if i == 3:continueelif i == 5:continueelif i == 6:passelif i == 7:sys.exit()print i,else:print 'main end'print 'END'结果:[root@centos7-3 python]# python for2.py
0 1 2 4 6(7)取随机数
In [40]: import random#猜数字
#系统生成一个20以内的随机整数,玩家有6次机会进行猜猜看,每次猜测都有反馈(猜大了,猜小了,猜对了就介绍),6次中,猜对了,玩家赢,否则系统赢#随机数import randomfor i in range(6): guess_num=int(raw_input('Please guess a num: ')) system_num=random.randint(1,20) print 'system num is %d' %system_num if guess_num<=20: if guess_num>system_num: print 'you guess big num' elif guess_num
import itertoolsa = ['1', '2', '3','4']b = 4for i in itertools.product('1234','1234','1234'):if i[0]==i[1] or i[0]==i[2] or i[1]==i[2]: continueprint i[0]+i[1]+i[2]
方式二:
for i in '1234': for j in '1234': if i==j: continue for k in '1234': if i==k or j==k: continue print i+j+k
3、打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
#程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。import mathfor i in range(100,999): x=math.floor(i/100) #获取百位数 y=math.floor((i-x*100)/10) #获取十位数;比如i=555,x=5;(555-5*100)/10 z=math.floor(i-x*100-y*10) #获取个位数;比如i=555 x=5;y=5;z=555-5*100-5*10; if i == x**3+y**3+z**3: print i,
方式二:更容易理解点
for i in range(100,1000): j=i//100#取百位数,//取整除 - 返回商的整数部分;如546//100 ,取5整数部分 k=(i%100)//10 #取十位数;如536%100取余数为36,然后36//10,相当于30/10 就是3 p=i%10 #取个位数;如536%10取余数就是6,因为10*53=530,6就是余数 if i==(j**3+k**3+p**3): print i
4、 两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
a选队友,b选队友,if a的队友和b的队友不一样,再if a,b,c的队友都不一样,然后再if a,x不等,c,x,z不等,再打印出来list1=['x', 'y', 'z']for a in list1: for b in list1: if a!=b: for c in list1: if a!=c and b!=c: if a!='x' and c!='x' and c!='z': print 'a-{0},b-{1},c-{2}'.format(a,b,c)
结果:
a-z,b-x,c-y转载于:https://blog.51cto.com/jacksoner/2054861