for循环与range方法

167 阅读3分钟

for语句基本使用

1. for 循环可以遍历任何可迭代对象,如一个列表或者一个字符串。
比如:
fruits = ["apple", "banana", "orange", "pear"] 
for fruit in fruits:  
    print (fruit)
#  这段代码 会将列表里的水果 从左到右打印出来 
#  首先取出apple,赋值给fruit,然后执行循环下的子代码,输出fruit的值 'apple'
#  回到for语句 由于列表里还有元素 所以继续取第二个元素 banana 赋值给fruit 再执行print
#  依此类推...
#  当列表里的水果取完之后 循环自动结束

2.for循环基本结构:
for 变量名 in 待遍历的数据:
    for循环体代码
	    
3.for循环主要遍历的数据类型有(常见有 字符串、列表、元组、字典、集合):
如果使用for循环遍历字典,只能遍历字典的键。
dictA = {'apple': 2,
         'banana': 4,
         'orange': 5,
         'pear': 0
         }
for i in dictA:
    print(i)  # apple banana orange pear

image

for循环中break和continue的使用

for循环中直接使用break,会跳出当前for循环
在for循环中使用continue,会结束当前循环,直接进入下一个循环。

image

for循环语句的else子句

'''or语句也支持else子句,在for循环没有被break强制结束时,会运行else语句下的子代码。'''

for i in [1, 2, 3, 4]:
    print(i)
else:
    print('yes')  # yes会被输出

for i in [1, 2, 3, 4]:
    print(i)
    break  # 进行了一次遍历 就强制结束循环
else:
    print('yes')  # yes不会被输出

range方法

range()方法可以理解是为了帮助我们产生一个内部含有多个数字的列表。
'''在python2中:'''
range()会直接产生一个列表
比如:range(4)

image

列表是从中的元素是从0开始到3结束,这也反映出range的特点: 顾头不顾尾
range中输入一个数字的情况,range默认从0开始。
如果你指定了开始的数字,range就会从你指定的数字开始:

image

如果range(1000000000000)?
会生成一个极大的列表,这样是很占用内存的。所有python2提供了xrange():

image

类似于一个工厂 不会占用太多的内存空间 要就生产
'''python3中'''
python3中的range()于python2的xrange(),生成一个可迭代的range对象。
range对象还不是列表,它占用内存空间比列表小,
也可以用list()方法将range对象转换为一个列表
list(range(4)) # [0, 1, 2, 3]
range方法还支持第三个参数:
for i in range(1, 11, 2)  # 第三个数为等差值(步长值) 默认不写为1
    print(i)
举例:
list(range(1, 11 ,2)) # [1, 3, 5, 7, 9] # 相当于从1开始取 隔2个取一个
切片操作也支持步长值这个参数
range更多例子:

image image

练习描述

1.计算1-100所有的数之和
2.判断列表中数字2出现的次数  
 l1 = [11,2,3,2,2,1,2,1,2,3,2,3,2,3,4,3,2,3,2,2,2,2,3,2]
3.编写代码自动生成所有页网址(注意总共多少页)
	https://movie.douban.com/top250
4.编写代码打印出下列图形(ps:for循环嵌套)  
*****  
*****  
*****  
*****

题解

'''练习1'''
dll = 0
for i in range(1, 101):
    dll += i
print(dll)  # 5050
print(sum(range(1, 101)))  # 5050

'''练习2'''
l1 = [11, 2, 3, 2, 2, 1, 2, 1, 2, 3, 2, 3, 2, 3, 4, 3, 2, 3, 2, 2, 2, 2, 3, 2]
count = 0
for i in l1:
    if i == 2:
        count += 1
print(count)  # 13

'''练习3'''
for i in range(1, 251):
    print('https://movie.douban.com/top%s' % (i,))  # 输出250个网页
	
# 输出豆瓣top250
start_value = 0
page_num = 10
for _ in range(page_num):
    url = f'https://movie.douban.com/top250?start={start_value}'
    start_value += 25
    print(url)

'''练习4'''
for _ in range(4):  
    for j in range(5):
        print('*', end='')
    print()

for i in range(4):
    print("*****")