流程控制--for循环遍历字典和列表

一、循环
1.Python中一共有2个循环,一个是for 循环一个是while 循环。
2.for循环是一个结构,导致程序要重复一定得次数。
while循环也是如此,当条件变为假,循环结束。
二、for循环
1.在代码中 for语句包含以下部分
for 关键字
一个变量名
in关键字
调用range()方法,最多可以传入3个参数
冒号
例如
for i in range(1,11)
print i

在显示的结果的是一竖下来,要想把结果显示在同一行中的话
可以在print i加个,号 这样可以显示在一行。

因为print这个参数默认是会带换行符的。

2.range()方法
range()的开始,停止,和步长参数。
某些参数可以用多个参数调用。参数之间用逗号分开,range()就是其中之一。
range(12,16)
第一个数是开始的值,第二个是上限。但不包含它,也就是停止的数字。
运行后会从12开始到15结束。
range(0,10,2)
第三个参数就是步长,步长是每次迭代后循环变量增加的值。
所以结果是0 2 4 6 8.
甚至可以用复数作为步长参数,让循环计数逐渐减少,而不是增加。

3.列表重写
首先看一个例子:
for i in range(1,11):
if i % 2 == 0
print i
这个代码的结果就是打印偶数,当i除2等与0 就是求偶数。

其实这段代码可以用一行代码来实现
print [i for i in range(1,11) if i % 2 ==0]

在print 中加中括号,来表示输出的是一个列表

for i in [i for i in range(1,11) if i % 2 ==0]
print i,

这就是列表重写,先对列表进行一个遍历,遍历得到的值可以进行运算,然后还可以加条件来输出想要的内容。

4.求1到100相加的和
sum = 0
for i in range(1,101)
sum = sum +i //还可以这样写 sum += i 效果是一样的。
print sum

5.xrange()方法
xrange()和range 方法操作非常相似,但不同的是rang()是返回一个列表,但是xrange()返回的是一个对象。

如何取值呢?
把xrange赋值给一个变量 ,用for循环遍历就可以得到数值

xrange的用处是,可以占少量的内存,
比如range(1000) 会产生999个数值,占大量内存,
但是xrange(1000) 就不会。当进行对他遍历的时候就会有大量内存产生了
一般用xrange好一点。
三、遍历字典
1.先看一个简单的例子:
a = {'a': 1, 'b':2}
for i in a:
print i
这是一个简单的打印字典的key值。如果要打印value值,
for i in a:
print i,a[i]
这样就可以取到key和value值。

这是第一种方式。
2.使用items()方法来遍历。
for i in a.items():
print i

变成了元祖的形式,变成了元祖形式 就可以用2个变量接收他的值
for k,v in a.items():
print k,v

3.使用iteritems()方法
iteritems()方法和xrange方法相似,也是返回一个对象。

使用for循环来遍历效果和items一样的。
for k,v in a.iteritems():
print k,v

4.制作九九乘法表
for i in xrange(1,10):
for j in xrange(1,i+1):
print "%s x %s = %s" %(i,j,j*i),
print
写法思路:第一层循环是取9行,九九乘法表就是有9行,先固定行数
第二层内层循环,定义的是变量j的循环次数,用xrange方法来定义次数
当i 为1 时 xrange 取1 ,2 取1. i 为2时,xrange取1,3 取了2个数,以此类推。
当print 出来结果后 会出现换行现象,像这样。

打印很多行,所以要加个抑制换行符,来取消空格,在第一层循环里加一个print 来增加换行符效果就出来了。

习题
1. 有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少? 1.程序分析:可填在百位、十位、个位的数字都是1、2、3、4。组成所有的排列后再去 掉不满足条件的排列。
for x in xrange(1,5):
    for y in xrange(1,5):
        for z in xrange(1,5):
            if (x!=y) and (x!=z) and (y!=z):
                print "%s%s%s" %(x,y,z),

2. 打印出所有的“水仙花数”,所谓“水仙花数”是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个“水仙花数”,因为153=1的三次方+5的三次方+3的三次方。
程序分析:利用for循环控制100-999个数,每个数分解出个位,十位,百位。
for i in xrange(100,1000):
b = (i / 100) % 10 //取百位数
c = (i / 10) % 10 //取十位数
z = (i / 1) % 10 //取个位数
if i == b**3 + c**3 +z**3:
print i


3. 两个乒乓球队进行比赛,各出三人。甲队为a,b,c三人,乙队为x,y,z三人。已抽签决定比赛名单。有人向队员打听比赛的名单。a说他不和x比,c说他不和x,z比,请编程序找出三队赛手的名单。
for a in 'xyz':
    for b in 'xyz':
        for c in 'xyz':
            if a != 'x'and b != 'x' and b!='z':
                if a != b and a != c and b!= c:
                    print "a vs %s b vs %s c vs %s " %(a,b,c)
结果是:
a vs z b vs y c vs x 
  • 6
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值