range()函数
用于生成一个整数序列
创建range对象的三种方式
range()
#range()的三种创建方式
'''
第一种创建方式,只有一个参数(小括号中只给了一个数)
'''
r=range(10)
print(r)
print(list(r)) #用于查看range对象中的参数序列 --List是列表的意思
默认从0开始,默认步长为1,不包括10
输出:
range(0, 10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
第二种:
'''
第二种创建方式,给了两个参数(小括号中给了两个参数)
'''
r = range(1,10)#代表范围,从1开始,到9,记住,不包括右边
print(list(r))
输出:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
第三种:
'''
第三种创建方式,给了三个参数(小括号中给了三个数)
'''
r=range(1,10,2)
print(list(r))
'''
判断指定的整数在序列中是否存在,in not in
'''
print(10 in r)
print(9 in r)
print(10 not in r)
print(9 not in r)
输出:
[1, 3, 5, 7, 9]
False
True
True
False
返回值是一个迭代器对象
range类型的优点:不管range对象表示的整数序列有多长,所有range对象占用的内存空间都是相同的,因为仅仅需要存储start,stop和step,只有当用到range对象时,才会去计算序列中的相关元素
in 与not in 判断整数序列中是否存在(不存在)指定的整数(指这里的序列是整数序列,并不是说in,not in只能用在整数序列)
反复做同一件事情的情况,称为循环
循环结构的流程图
循环的分类
语法结构
while 条件表达式
条件表达式执行体(循环体)
选择结构的if与循环结构while的区别
#while资料
a = 10
while a==10:
print(a)
因为判断条件一直为True,所以会一直循环,一直打印10
a = 1
while a <10:
print(a)
a +=1
1
2
3
4
5
6
7
8
9
sum = 0
'''
初始化变量
'''
a= 1
'''
条件判断
'''
while a <=100:
'''条件执行体(求和)'''
#条件到判断是否是偶数
if a % 2 == 0:
sum+=a
'''改变变量'''
a+=1
print('1-到100之间的偶数和',sum)
输出:
1-到100之间的偶数和 2550
for-in循环
for-in的语法结构
for 自定义的变量 in 可迭代对象:
循环体
循环体内不需要访问自定义变量,可以将自定义变量替代为下划线
for item in 'Python':
print(item)
输出:
P
y
t
h
o
n
迭代range()
#range() 产生一个整数序列,也是一个可迭代对象
for i in range(10):
print(i)
输出:
0
1
2
3
4
5
6
7
8
9
特殊情况:
#如果在循环提中不需要使用到自定义的变量,可将自定义变量写为“_”
for _ in range(6):
print('人生苦短,我用python')
输出:
人生苦短,我用python
人生苦短,我用python
人生苦短,我用python
人生苦短,我用python
人生苦短,我用python
人生苦短,我用python
#用for循环计算1到100的奇数的和
sum = 0
for i in range(1,100):
if not i%2: #(利用了对象的布尔值,0的布尔值为false)
sum +=i
print('1到100的奇数的和:',sum)
输出:
1到100的奇数的和: 2500
'''
输出100到999之间的水仙花数:
举例:
153=3*3*3+5*5*5+1*1*1
这个数等于各个位置数的三次方和
'''
for item in range(100,1000):
ge = item%10 #取个位
shi = item//10%10 #取十位
bai = item//100 #取百位
#判断:
if ge**3+shi**3+bai**3==item:
print(item)
输出:
153
370
371
407
break语句
'''
从键盘输入密码,最多输入三次,如果正确就结束循环
'''
for item in range(3):
pwd = input('请输入密码:')
if pwd == '8888':
print('密码正确')
break
else:
print('密码不正确')
输出:
请输入密码:1
密码不正确
请输入密码:1
密码不正确
请输入密码:8888
密码正确
或者第二次就输入正确:
请输入密码:2
密码不正确
请输入密码:8888
密码正确
用for循环解决
a=0
while a <=3:
'''条件执行体(循环体)'''
pwd=input('请输入密码:')
if pwd == '8888':
print('密码正确')
break
else:
print('密码不正确')
'''
找出1到50的里面的5的倍数
要求使用continue
'''
print('------不使用continue-----')
for item in range(1,51):
if item%5==0:
print(item)
print('-----使用continue----')
for item in range(1,51):
if item%5!=0:
continue
print(item)
输出:
------不使用continue-----
5
10
15
20
25
30
35
40
45
50
-----使用continue----
5
10
15
20
25
30
35
40
45
50
else语句
for …else
for item in range(3):
pwd=input('请输入密码:')
if pwd=='8888':
print('密码正确')
break
else:
print('密码不正确')
else:
print('对不起,三次密码均输入错误')
输出:
请输入密码:8
密码不正确
请输入密码:8
密码不正确
请输入密码://
密码不正确
对不起,三次密码均输入错误
while…else
a=0
while a <3:
pwd=input('请输入密码:')
if pwd=='8888':
print('密码正确')
break
else:
print('密码不正确')
'''改变变量
'''
a+=1
else:
print('对不起,三次输入均错误')
输出:
请输入密码:5
密码不正确
请输入密码:6
密码不正确
请输入密码:9
密码不正确
对不起,三次输入均错误
嵌套循环
输出一个三行四列的矩阵
'''
输出一个三行四列的矩阵
'''
for i in range(1,4): #行表,执行三次,一次是一行
for j in range(1,5): #j : i
print('*',end='\t') # 不换行输出
print() #打行
输出:
* * * *
* * * *
* * * *
先打印个九阶星星
for i in range(1,10): #控制行
for j in range(1,i+1): #控制每行星星数
print('*',end='\t')
j+=1
print() #打行
变成完整的表
for i in range(1,10):
for j in range(1,i+1):
print(i,'*',j,'=',i*j,end='\t')
j+=1
print()
输出:
1 * 1 = 1
2 * 1 = 2 2 * 2 = 4
3 * 1 = 3 3 * 2 = 6 3 * 3 = 9
4 * 1 = 4 4 * 2 = 8 4 * 3 = 12 4 * 4 = 16
5 * 1 = 5 5 * 2 = 10 5 * 3 = 15 5 * 4 = 20 5 * 5 = 25
6 * 1 = 6 6 * 2 = 12 6 * 3 = 18 6 * 4 = 24 6 * 5 = 30 6 * 6 = 36
7 * 1 = 7 7 * 2 = 14 7 * 3 = 21 7 * 4 = 28 7 * 5 = 35 7 * 6 = 42 7 * 7 = 49
8 * 1 = 8 8 * 2 = 16 8 * 3 = 24 8 * 4 = 32 8 * 5 = 40 8 * 6 = 48 8 * 7 = 56 8 * 8 = 64
9 * 1 = 9 9 * 2 = 18 9 * 3 = 27 9 * 4 = 36 9 * 5 = 45 9 * 6 = 54 9 * 7 = 63 9 * 8 = 72 9 * 9 = 81
二重循环中的break和continu用于控制本层循环
for i in range(5):
for j in range(1,11):
if j%2==0:
break
print(j)
输出:
1
1
1
1
1
改造
for i in range(5):
for j in range(1,11):
if j%2==0:
continue
print(j,end='\t')
print()
输出:
1 3 5 7 9
1 3 5 7 9
1 3 5 7 9
1 3 5 7 9
1 3 5 7 9