流程控制-for序列、流程控制-for字典

  1. 云栖社区>
  2. 博客>
  3. 正文

流程控制-for序列、流程控制-for字典

余二五 2017-11-22 22:52:00 浏览727
展开阅读全文

流程控制-for序列,字典

1、for 循环简介

(1) for 用于 python 中的循环,在条件循环中,如果条件变为假则循环结束
(2) 在序列里,使用 for 循环遍历(列表,元组,字符串)
In [1]: a = {1:'a', 2:'b', 3:'c'}

In [2]: for k,v in a.it
a.items       a.iteritems   a.iterkeys    a.itervalues  

In [2]: for k,v in a.items():
   ...:     print k,v
   ...:     
1 a
2 b
3 c

(3)加上,表示去除换行\n
流程控制-for序列、流程控制-for字典

range的理解:
range(10):表示从0开始到9,总共10个数
range(1,12):表示从1开始到11
rang(1,12,3):3表示间隔
流程控制-for序列、流程控制-for字典

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结束循环后换行
流程控制-for序列、流程控制-for字典

1x1 =1
2x1 =2 2x2 =4
3x1 =3 3x2 =6 3x3 =9
4x1 =4 4x2 =8 4x3 =12 4x4 =16
5x1 =5 5x2 =10 5x3 =15 5x4 =20 5x5 =25
6x1 =6 6x2 =12 6x3 =18 6x4 =24 6x5 =30 6x6 =36
7x1 =7 7x2 =14 7x3 =21 7x4 =28 7x5 =35 7x6 =42 7x7 =49
8x1 =8 8x2 =16 8x3 =24 8x4 =32 8x5 =40 8x6 =48 8x7 =56 8x8 =64
9x1 =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/pthon
import sys
import time
for i in xrange(10):
if i == 3:
continue
elif i == 5:
continue
elif i == 6:
pass
elif 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
流程控制-for序列、流程控制-for字典

#猜数字
#系统生成一个20以内的随机整数,玩家有6次机会进行猜猜看,每次猜测都有反馈(猜大了,猜小了,猜对了就介绍),6次中,猜对了,玩家赢,否则系统赢
#随机数

import random
for 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<system_num:
            print 'you guess small num'
        else:
            print 'guess yes'
            break
    else:
        print 'guess (1,20)'
        break
else:
    print 'you input many 6 second'
  1. 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去掉不满足条件的排列。
    #permutations(p[,r]);返回p中任意取r个元素做排列的元组的迭代器
    #itertools用于高效循环的迭代函数集合
    import itertools
    a = ['1', '2', '3','4']
    b = 4
    for i in itertools.product('1234','1234','1234'):
    if i[0]==i[1] or i[0]==i[2] or i[1]==i[2]:
        continue
    print 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  math
for 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










本文转自 iekegz 51CTO博客,原文链接:http://blog.51cto.com/jacksoner/2054861,如需转载请自行联系原作者

网友评论

登录后评论
0/500
评论