循环语句
while循环,只要条件满足,就不断循环
while 条件表达式:
条件表达式为真时执行代码
#判断如果输入的数字是纯数字,就不输入了b =Truewhileb:
a = raw_input('请输入一个数字:')
ifa.isdigit():
b = Falseprintb
#输出10个数字,超过10个数字就跳出循环
a =0whilea<10:
b = raw_input('请输入一个数字')
printb
a+=1for 循环
第一种:for in 序列。(字符串、数组都是序列)list、tuple
不足:如果循环的序列项很多(不方便每项都列出)
例子:取出a中的每一项给i
a = [1,2,3,4,5,6]
fori ina:
printi,注意:作用域是在for里面第二种:利用range()和xrange() 迭代
range()函数,可以生成一个整数序列
range(start,end,step),step为空默认为1
#通过索引取数值,通过下标取数值
a = [1,2,3,4,5,6]
fori inrange(0,len(a)):
printa[i]通过序列的索引来遍历序列
for index in range(len(list)):
print key,list[index]
第三种,同时使用项和索引迭代
enumerate()函数--同时列出数据和数据下标
a = [1,2,3,4,5,6]fori,j inenumerate(a):
printi,j
第四种,循环中使用else语句,其他语言中,只在分支语句中才能见到else,
#判断如果for循环中成功的每一个都执行完毕了,就会执行else语句
例子:fori inrange(1,10):
ifi>11:
breakelse:
print'finish'
结果是:finish,for循环中的数据都执行成功了python循环语句中使用else,代表在循环正常结束后,执行else中的代码块
循环没有执行完,比如break或者return,else中的代码块不执行,用的还比较多
练习题1:
#输入n,计算1到n的阶乘,5,1*2*3*4*5,不考虑负数的和其他情况,只考虑正数n = input('请输入一个数字')
c =1ifn>1:
form inrange(1,n+1):
c = c*m
printc
else:
print'1的阶乘是1'
练习题2:
#分别使用while与for循环输出1-100之间的所有偶数fori inrange(1,101):
ifi %2==0:
printii = 1whilei <=100:
ifi%2==0:
printi
i+=1
用两行代码输出1到100的所有偶数,阿里校招的题目,主要考range后面带参数的情况,2为步长
fori inrange(2,101,2):
printi
练习题3:找100以内最大平方数提示:from math import sqrt sqrt(n)frommath importsqrt
fori inrange(99,0,-1):
root = sqrt(i)
ifroot==int(root):
print'最大平方数是%s'%i
break
练习题4:输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数,面试概率极高的题目
string = raw_input('输入一行字符')
zimu = 0space =0num =0other =0fori instring:
ifi.isalpha():
zimu+=1elifi.isspace():
space+=1elifi.isdigit():
num+=1else:
other+=1print'其中英文字母的个数是%d个、空格%d个、数字%d个和其它字符%d个'%(zimu,space,num,other)