进入python的世界_day6_python基础——for循环、range函数


   写在开头,学习流程控制,今天学了while循环的补充知识、for循环和range数据

昨日作业注意事项

  • 写任何需要程序时,先写好主体代码,再根据需求进行补充

今日内容:

一、while循环补充说明

  1. 死循环>>>

    ​ 死循环会让CPU极度繁忙 甚至奔溃

 例:
 while True:
     print('太棒了')
  1. 全局标志位>>>

​ 定下一个变量名代替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循环

  1. 描述>>>

    ​ for循环能做到的事情 while循环都可以做到,但是for循环语法更加简洁 并且在循环取值问题上更加方便,做遍历for首选

  2. 格式>>>

    ​ for + 变量名(见名知意)+ in + 要检查的数据(也叫可迭代对象)+:

    ​ 循环体代码

    ​ # 上述'+'不打出来

  3. 变量名和迭代对象选名规则>>>

    ​ 变量名 自己设置,实在是想不到就用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的值
  1. for和break、continue、else>>>

    ​ 效果与结果和while循环一样

  2. 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关键字

  1. 含义>>>

    ​ 返回一个range类型的整数序列,一般用在循环结构中。

  2. 语法>>>

    ​ range(start, stop, step)

    ​ start代表起始范围,stop代表结束范围,start、stop组成左闭右开区间。step叫做步长,可以使用step跨指定宽度获取元素。step等于1时可以不写,默认为1。step为正整数时表示正向取元素,step为负整数时表示逆向取元素。

    !!!注意:

    • 所有参数都是整形。不能给出浮点数序列

    • 步长不能为0

    • 当start参数省略时,step参数也必须省略

    • py3中range函数的返回值类型不再是列表,而是一个range类型(在py2中会直接给一个列表)

  3. 三种表现形式>>>

 ①一个参数 比如说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)
 

四、作业

  1. 判断列表中数字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. 计算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)
  1. 编写代码自动生成所有页网址(注意总共多少页)
    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=

  1. 编写代码打印出下列图形(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()     # 注意这个是填充空格达到换行的意思
posted @ 2022-09-28 09:58  yiwufish  阅读(607)  评论(0)    收藏  举报