五。循环结构
1.内置函数 range函数
-
range的三种创建方式
-
只有一个参数(小括号中只给了一个数)
r=range(10) #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] ,默认从零开始,默认相差一称为步长 print(r) #range(0,10) print(list(r))#可以用于查看range对象中的整数序列 --list列表2. 给了两个参数(小括号中给了两个数)
-
-
给了两个参数(小括号中给了两个数)
r=range(1,10) #指定起始值,从一开始,到十结束(不包含十),默认步长为一 print(r) #range(1,10)
-
给了3个参数(小括号中给了3个数)
r=range(1,10,2) print(list(r)) #[1, 3, 5, 7, 9] '''判断指定的的整数 在序列中是否存在 in ,not in''' print(10 in r) #False print(9 in r) #True
2.while 循环
- 计算0到n之间的累加和
n=int(input())
a=0
sum=0#用于存储累加和
while(a<n):
a=a+1
sum=sum+a
print(sum)
- 计算0到n之间的偶数累加
# eg 1
n=int(input())
a=0
sum=0#用于存储累加和
while(a<n):
a=a+2
sum=sum+a
print(sum)
# eg 2
n=int(input())
a=0
sum=0#用于存储累加和
while(a<n):
a = a + 1
if not bool(a%2):
sum=sum+a
print(sum)
3.for-in循环
pythonfor item in 'Python' : #第一次取出的是p,将p赋值给item,并将其输出
print(item)
'''P
y
t
h
o
n
'''
for i in range(1,10,2):
print(i)
'''1
3
5
7
9
'''
如果在循环体中不需要使用自定义变量,可将自定义变量写为”_“
for _ in range(5):
print('人生苦短,我用python')
'''人生苦短,我用python
人生苦短,我用python
人生苦短,我用python
人生苦短,我用python
人生苦短,我用python
'''
print('计算一到一百的偶数和')
sum=0
for i in range(1,101):
if i%2==0:
sum=sum+i
print(sum) #结果2550
输出100到999之间的水仙花数
for i in range(100,1000):
b=i//100
s=i//10%10
g=i%10
if i==b**3+s**3+g**3:
print('水仙花数为'+str(i)+'')
'''153 为水仙花数
370 为水仙花数
371 为水仙花数
407 为水仙花数'''
4.流程控制语句break
从键盘录入密码,最多录入三次,如果正确,就退出循环(for in)
for item in range(3):
pwd=input('请输入密码')
if pwd=='1234':
printf('密码正确')
break
else:
print('密码不正确')
从键盘录入密码,最多录入三次,如果正确,就退出循环(while)
a=0
while a<3:
pwd=input('请输入密码')
if pwd=='1234':
print('密码正确')
break
else:
print('密码不正确')
5.流程控制语句continue
要求输出1到n之间所有5的倍数
n=int(input())
for item in range(1,n+1):
if item%5==0:
print(item)
else:
continue
n=int(input())
for item in range(1,n+1):
if item%5!=0:
continue
else:
print(item)
6.else语句
for item in range(3):
pwd=input('请输入密码')
if pwd=='8888':
print('密码正确')
else:
print('密码错误')
else:
print('对不起,三次输入密码错误')
a=0
while a<3 :
pwd=input('请输入密码')
if pwd=='8888':
print('密码正确')
else:
print('密码错误')
a=a+1
else:
print('对不起,三次输入密码错误')
7.嵌套循环
for i in range(1,10):
for j in range(1,i+1):
print(''+str(i)+'*'+str(j)+'='+str(i*j)+'',end='\t')
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 '''
for i in range(6):
for j in range(0,10-i):
print(end=" ")
for j in range(10-i,10):
print('*',end=' ') #end=‘ ’不换行输出
print('') #换行
'''
*
* *
* * *
* * * *
* * * * * '''
8.二重循环中的break和continue
for i in range(5):
for j in range(1,11):
if j%2==0:
break
print(j,end='')
print( )
'''
1
1
1
1
1
'''
for i in range(5):
for j in range(1,11):
if j%2==0:
continue
print(j,end='')
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
'''
总结
六,列表
1.列表start
a=10 #变量存储一个对象的引用
lst=['hello','56','hcj']#存储多个对象的引用
print(id(lst))
print(type(lst))
print(lst)
2.列表的创建
- 列表的第一种创建方式,使用 []
lst=['hello','world','hcj']
print(lst)
- 列表的第二种创建方式,使用使用内置函数list()
lst2=list(['hello','world','hcj'])
print(lst2)
3.列表的特点
-
索引映射唯一一个数据
lst=['hello','world',23,'hcj'] print(lst[1],lst[-1]) # world hcj
**注意 ** 从前往后正数,从后往前负数
4.列表的查询操作
+ 获取列表中指定元素的索引
lst=['hello','world','hcj','hello']
print(lst.index('hello'))#如果列表中有相同的元素只返回列表中相同元素的第一个元素的索引
# 0
print(lst.index('hcj'))
# 2
print(lst.index('tn'))
''' 报错 raceback (most recent call last):
File "D:\编码\pythonProject\main.py", line 4, in <module>
print(lst.index('tn'))
alueError: 'tn' is not in list
'''
print(lst.index('hello',1,4))
# 3
+ 获取列表中的单个元素
lst=['hello','hcj','python','tn']
print(lst[3])
# tn
print(lst[-1])
# tn
+ 获取列表当中的多个元素
lst=['hello','hcj','python','tn']
print(lst [1:3:1]) #步长为一
# ['hcj', 'python']
lst=['hello','hcj','python','tn']
print(lst [1:4:2]) #步长为二
# ['hcj', 'tn']
lst=['hello','hcj','python','tn']
print(lst [:4:3]) #默认从0开始
# ['hello', 'tn']
lst=['hello','hcj','python','tn']
print(lst [1:4:]) #默认步长为1
# ['hcj', 'python', 'tn']
lst=['hello','hcj','python','tn']
print(lst [1::2]) #默认到最后结束
# ['hcj', 'tn']
print('--------step 步长为负数--------')
print('原列表',lst)
print(lst[3::-1])
'''原列表 ['hello', 'hcj', 'python', 'tn']
['tn', 'python', 'hcj', 'hello']
'''
+判断指定元素在列表中是否存在及遍历
print('------in和not in--------')
lst=['hello','hcj','python','tn',10,20]
print(10 in lst) #True
print(10 not in lst) #False
print('------for in--------')
for item in lst:
print(item,end=' ')
# hello hcj python tn 10 20
```!
### 5.列表元素的增删操作
#### + 元素增加
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IKKLkBf0-1639395454600)(C:\Users\hcj\AppData\Roaming\Typora\typora-user-images\image-20211129211612737.png)]
```python
lst=['hello','hcj','python','tn',10,20]
print('添加之前',lst)#添加之前['hello', 'hcj', 'python', 'tn', 10, 20]
lst.append(100)
print('添加之后',lst)#添加之后['hello', 'hcj', 'python', 'tn', 10, 20, 100]
lst2=[1,2]
lst.extend(lst2)
print('添加之后',lst)#添加之后 ['hello', 'hcj', 'python', 'tn', 10, 20, 1, 2]
'''extend 可将列表化为元素加到后面
append将列表直接加入到后面
eg lst.append(lst2)
print('添加之后',lst)
['hello', 'hcj', 'python', 'tn', 10, 20, [1, 2]] '''
lst.insert(1,5)
print('添加之后',lst) #['hello', 5, 'hcj', 'python', 'tn', 10, 20]
lst2=[1,2]
lst[1:]=lst2
print('添加之后',lst) #['hello', 1, 2]
'''start决定从哪切
stop决定切到哪'''
+ 列表元素的删除操作
lst=[10,20,30,5,6,8,30]
lst.remove(30)
print(lst)
# [10, 20, 5, 6, 8,30]
lst=[10,20,30,5,6,8]
lst.pop(2)
print(lst)
# [10, 20, 5, 6, 8,30]
lst=[10,20,30,5,6,8,30]
lst.pop() # 默认删除倒数第一个
print(lst)
# [10, 20, 30, 5, 6, 8]
lst=[10,20,30,5,6,8,30]
lst2=[1,2,3,4]
lst[2:]=lst2
print(lst)
# [10, 20, 1, 2, 3, 4]
lst.clear()
print(lst)
# []
del lst
print(lst)
'''报错
NameError: name 'lst' is not defined.
'''
+列表元素的修改操作
lst=[1,2,3,4]
#一次修改一个值
lst[2]=10
print(lst)
# [1, 2, 10, 4]
lst[1:3]=[30 ,40 ,50]
print(lst)
# [1, 30, 40, 50, 4]
+ 列表元素的排序操作
lst=[1,10,20,30,5,6]
print('输出前的列表',lst,id(lst))
lst.sort()
print('排序后的列表',lst,id(lst))
'''输出前的列表 [1, 10, 20, 30, 5, 6] 2433745549632
排序后的列表 [1, 5, 6, 10, 20, 30] 2433745549632
'''
print('排序后的列表',lst,id(lst))
lst.sort(reverse= True)
# reverse=True表示降序排序,reverse=False就是升序排序
print(lst)
# [30, 20, 10, 6, 5, 1]
print('-----使用内置函数sorted()对列表进行排序,将产生一个新的列表对象---------')
lst=[10,2,30,4,50,6]
print('原列表',lst)
#开始排序
new_list=sorted(lst)
print(lst)
print(new_list)
'''原列表 [10, 2, 30, 4, 50, 6]
[10, 2, 30, 4, 50, 6]
[2, 4, 6, 10, 30, 50]
'''
# 指定关键字参数,实现列表元素的降序排序
new_list=sorted(lst,reverse=True)
print(new_list)
# [50, 30, 10, 6, 4, 2]
6. 列表生成式
]
lst=[ i for i in range(1,10)]
print(lst)
# [1, 2, 3, 4, 5, 6, 7, 8, 9]
lst=[ i+i for i in range(1,10)] # i+i 表示列表的表达式
print(lst)
# [2, 4, 6, 8, 10, 12, 14, 16, 18]
总结
参考视频:
https://www.bilibili.com/video/BV1wD4y1o7AS?spm_id_from=333.999.0.0