进入python的世界_day6_python基础——for循环、range函数
写在开头,学习流程控制,今天学了while循环的补充知识、for循环和range数据
昨日作业注意事项
- 写任何需要程序时,先写好主体代码,再根据需求进行补充
今日内容:
一、while循环补充说明
-
死循环>>>
死循环会让CPU极度繁忙 甚至奔溃
例:
while True:
print('太棒了')
- 全局标志位>>>
定下一个变量名代替True,一旦这个变量名被标记成Flase,触发全局循环停止
例:
feel = True
while feel:
username = input('username>>>:')
password = input('password>>>:')
if username == 'nike' and password == '666':
print('登录成功,master')
while feel:
cmd = input('请输入您的指令>>>:')
if cmd == 'q':
feel = False
print('正在执行您的指令:%s' % cmd)
else:
print('请核对账号名或者密码')
二、for循环
-
描述>>>
for循环能做到的事情 while循环都可以做到,但是for循环语法更加简洁 并且在循环取值问题上更加方便,做遍历for首选
-
格式>>>
for + 变量名(见名知意)+ in + 要检查的数据(也叫可迭代对象)+:
循环体代码
# 上述'+'不打出来
-
变量名和迭代对象选名规则>>>
变量名 自己设置,实在是想不到就用i,j,k,v,item之类的代替,一般用i
迭代对象可以是字符串、列表、字典、元组、集合(注意,字典依旧是K暴露在外面,默认拿不到V)
d = {'username': 'nike', 'password': 666, 'hobby': 'music'}
for i in d:
print(i, d[i])
如果换成 print(i) # 拿不到V的值
-
for和break、continue、else>>>
效果与结果和while循环一样
-
for的嵌套使用
有点难
比如说九九乘法表
for i in range(1, 10):
for j in range(1, i + 1):
print('%s*%s=%s' % (i, j, i * j), end=' ')
print() # 注意这个是填充空格达到换行的意思
三、range关键字
-
含义>>>
返回一个range类型的整数序列,一般用在循环结构中。
-
语法>>>
range(start, stop, step)
start代表起始范围,stop代表结束范围,start、stop组成左闭右开区间。step叫做步长,可以使用step跨指定宽度获取元素。step等于1时可以不写,默认为1。step为正整数时表示正向取元素,step为负整数时表示逆向取元素。
!!!注意:
-
所有参数都是整形。不能给出浮点数序列
-
步长不能为0
-
当start参数省略时,step参数也必须省略
-
py3中range函数的返回值类型不再是列表,而是一个range类型(在py2中会直接给一个列表)
-
-
三种表现形式>>>
①一个参数 比如说range(10),默认从0开始,顾头不顾尾
for i in range(10):
print(i)
②两个参数 自定义起始位置 一样顾头不顾尾
for i in range(2, 10):
print(i)
③三个参数 指定步长(等差值)
for i in range(2, 10, 2):
print(i)
四、作业
- 判断列表中数字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]
- 思路,先定一个值为0的变量名用来计数,循环i,但是不打印,当有i的值为2时,计数加1,最后打印出来用来计数的变量名即可
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]
conunt = 0
for i in l1:
if i == 2:
conunt += 1
print(conunt)
拓展:.count()的使用
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]
次数 = l1.count(2)
print(次数)
# 中文推荐换成英文,此处是为了见名知意
- 计算1-100所有的数之和
- 思路,定义一个变量tt为0 ,然后开始循环i,每次循环i后把该值与变量tt相加,比如 i循环到1,此时tt=0+i为1,i循环到2此时tt=1+i=1+2为3以此类推,最后打印出tt的值就行
用for写:
tt = 0
for i in range(0, 100):
tt += i + 1
print(tt)
用while写:
tt = 0
i = 1
while i <= 100:
tt += i
i += 1
print(tt)
- 编写代码自动生成所有页网址(注意总共多少页)
https://movie.douban.com/top250
代码实现如下,共计十页
榜单 = 'https://movie.douban.com/top250?start=%s&filter='
for i in range(0, 250, 25):
print(榜单 % i)
>>>
https://movie.douban.com/top250?start=0&filter=
https://movie.douban.com/top250?start=25&filter=
https://movie.douban.com/top250?start=50&filter=
https://movie.douban.com/top250?start=75&filter=
https://movie.douban.com/top250?start=100&filter=
https://movie.douban.com/top250?start=125&filter=
https://movie.douban.com/top250?start=150&filter=
https://movie.douban.com/top250?start=175&filter=
https://movie.douban.com/top250?start=200&filter=
https://movie.douban.com/top250?start=225&filter=
- 编写代码打印出下列图形(ps:for循环嵌套)
*****
*****
*****
*****
-
思路,四行五列,先想怎么打四行,四行每行都用空()填充:for循环打印0到4,就可以出四行然后,
怎么出五列:for循环打印 0到5,并且不换行,就可以出五列,然后根据for的定义把自己拟定的for的变量名替换成'*',然后考虑把列嵌套进入行即可
for i in range(0, 4):
for j in range(0, 5):
print("*", end='') # end=''是不换行的意思
print() # 注意这个是填充空格达到换行的意思