下载APP
登录
关闭
讲堂
算法训练营
Python 进阶训练营
企业服务
极客商城
客户端下载
兑换中心
渠道合作
推荐作者
当前播放: 16 | while循环语句中的if嵌套
00:00 / 00:00
标清
  • 标清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看

零基础学Python

共71讲 · 71课时·约540分钟
16024
免费
01 | Python语言的特点
免费
02 | Python的发展历史与版本
免费
03 | Python的安装
免费
04 | Python程序的书写规则
免费
05 | 基础数据类型
免费
06 | 变量的定义和常用操作
07 | 序列的概念
08 | 字符串的定义和使用
09 | 字符串的常用操作
10 | 元组的定义和常用操作
11 | 列表的定义和常用操作
12 | 条件语句
13 | for循环
14 | while循环
15 | for循环语句中的if嵌套
16 | while循环语句中的if嵌套
17 | 字典的定义和常用操作
18 | 列表推导式与字典推导式
19 | 文件的内建函数
20 | 文件的常用操作
21 | 异常的检测和处理
22 | 函数的定义和常用操作
23 | 函数的可变长参数
24 | 函数的变量作用域
25 | 函数的迭代器与生成器
26 | Lambda表达式
27 | Python内建函数
28 | 闭包的定义
29 | 闭包的使用
30 | 装饰器的定义
31 | 装饰器的使用
32 | 自定义上下文管理器
33 | 模块的定义
34 | PEP8编码规范
35 | 类与实例
36 | 如何增加类的属性和方法
37 | 类的继承
38 | 类的使用-自定义with语句
39 | 多线程编程的定义
40 | 经典的生产者和消费者问题
41 | Python标准库的定义
42 | 正则表达式库re
43 | 正则表达式的元字符
44 | 正则表达式分组功能实例
45 | 正则表达式库函数match与s...
46 | 正则表达式库替换函数sub...
47 | 日期与时间函数库
48 | 数学相关库
49 | 使用命令行对文件和文件夹...
50 | 文件与目录操作库
51 | 机器学习的一般流程与NumP...
52 | NumPy的数组与数据类型
53 | NumPy数组和标量的计算
54 | NumPy数组的索引和切片
55 | pandas安装与Series结构
56 | Series的基本操作
57 | Dataframe的基本操作
58 | 层次化索引
59 | Matplotlib的安装与绘图
60 | 机器学习分类的原理
61 | Tensorflow的安装
62 | 根据特征值分类的模型和代...
63 | 网页数据的采集与urllib库
64 | 网页常见的两种请求方式ge...
65 | HTTP头部信息的模拟
66 | requests库的基本使用
67 | 结合正则表达式爬取图片链...
68 | Beautiful Soup的安装和...
69 | 使用爬虫爬取新闻网站
70 | 使用爬虫爬取图片链接并下...
71 | 如何分析源代码并设计合理...
本节摘要

课程源码、课件及课后作业地址:

https://github.com/wilsonyin123/geekbangpython

精选留言(18)

  • 2018-06-11
    根据while嵌套这节 和老师输入的一样啊 输入3月15怎么返回的是水平座和双鱼座?输入12月25 怎么什么都没返回?
    zodiac_name=(u'摩羯座',u'水瓶座',u'双鱼座',u'白羊座',u'金牛座',u'双子座',
    u'巨蟹座',u'狮子座',u'处女座',u'天秤座',u'天蝎座',u'射手座')
    zodiac_days=((1,20),(2,19),(3,21),(4,21),(5,21),(6,22),(7,23),(8,23),(9,23),(10,23),(11,23),(12,23))
    int_month=int(input('请用户输入月份'))
    int_day=int(input('请用户输入日期'))
    n = 0
    while zodiac_days[n] < (int_month,int_day):
        if int_month == 12 and int_day > 23:
            break
        n +=1
        print(zodiac_name[n])
    展开

    作者回复: 认真检查一下最后一行的代码缩进,print()语句在不同的缩进位置,输出结果可是有很大差别的啊,要细心

    10
  • 2018-06-12
    import datetime
        today=datetime.datetime.today()
    AttributeError: module 'datetime' has no attribute 'today'
    老师这个错误啥问题呢

    作者回复: 你书写这段代码的文件名,它的文件名可能叫做datetime,导致导入时失败

    2
  • 2018-06-12
    这个例子中,用while循环时,不论判断条件是:
    while zodiac_days[n]>还是<(int_month,int_day)
    结果都一样,这是不是while语句的优势?

    作者回复: 不一样噢,while语句后面的结果成立,即返回值为True时循环会执行的,返回为False时,while语句内的语句块不会执行,需要分析下代码内容和下面的缩进

    2
  • 2019-01-08
    在Mac系统用Chrome播放器在英国网络条件下播放视频总是会出现卡顿的情况。卡着了之后就一直不动。
    我用的网络应该是很快的 下载东西也是几m跑的 不知道什么原因播放极客视频就会经常卡 一个视频卡很多次。

    作者回复: 好的,我帮您反馈给技术

    1
  • 2019-01-07
    嵌套的列表推导式

    列表解析中的第一个表达式可以是任何表达式,包括列表解析。

    考虑下面由三个长度为 4 的列表组成的 3x4 矩阵:

    >>> matrix = [

    ... [1, 2, 3, 4],

    ... [5, 6, 7, 8],

    ... [9, 10, 11, 12],

    ... ]

    现在,如果你想交换行和列,可以用嵌套的列表推导式:

    >>> [[row[i] for row in matrix] for i in range(4)]

    [[1, 5, 9], [2, 6, 10], [3, 7, 11], [4, 8, 12]]

    尹老师:
          这个是中文版说明文件里的样例,我不是很理解,能否帮忙解释下:对两个循环且嵌套不理解,能否从数学角度拆分下,谢谢。
    展开

    作者回复: 分开执行下面的每一条语句,再回来理解一下


    print(matrix[0][0])

    print(matrix[1])

    print(matrix[1][0])

    print(matrix[2][0])



    print([row[0] for row in matrix])



    for i in range(4):

        print([row[i] for row in matrix])

    1
  • 2019-10-06
    # 练习1:
    # 如果你对老师练习一第二题答案,if 1 <= num_to_int <= 10:这条语句有疑问的话可以参考下方链接文档上有做详细介绍,其实这条语句等同于if 1 <= num_to_int and num_to_int <= 10:
    # https://docs.python.org/zh-cn/3/reference/expressions.html#comparisons
    # 其实做完题对比答案真的才发现实现思路会有不同,很有乐趣。
    number = int(input("请输入1-40之间的数字:"))
    if number == 1 or number <= 10:
        print('嗯,你输入的结果在1到10之间哦。')
    elif number == 11 or number <= 20:
        print('嗯,你输入的结果在11到20之间哦。')
    elif number == 21 or number <= 30:
        print('嗯,你输入的结果在21到30之间哦。')
    elif number == 31 or number <= 40:
        print('嗯,你输入的结果在31到40之间哦。')
    else:
        print('嗯,数字不在1-40范围内。')

    # 练习2:
    for i in range(1, 100):
        if i % 2 == 0:
            print(i)

    n = 1
    while n <= 100:
        if n % 3 == 0:
            print(n)
        n += 1
    展开
  • 2019-09-29
    练习二 循环语句的使用:“使用while语句输出1-100之间能够被3整除的数字”
    您给出的代码是:
    j = 1
    while j <= 100:
        if j % 3 == 0:
            print(j)
        j += 1

    我自己的代码是:

    num=1
    while num<100:
          num +=1
          if (num % 3) ==0:
            print(num)

    最后输出的结果相同,这说明 "+=1"这个操作的位置比较灵活,是吗? 可以在if前面,也可以在if后面
    展开

    作者回复: 先自增还是先判断根据程序的需求来定,没有必须放在前面或者后面的要求

  • 2019-07-05
    怎么判断一个循环用for、还是用while简单

    作者回复: 列表便利方式for 更多, 对执行次数控制更多的情况while用的更多一些

  • 2019-06-29
    索引的zodiac_name[4]怎么会是双鱼座?
  • 2019-06-29
    伊老师您好:对于n=0,n=n+1.当输入3.15时,确实是双鱼座,也确实比3.21要小,但n+1后就变4了,这时候zodiac_name[n] 的值怎么算?是4吧?怎么会是双鱼座?这里的n是月份吗?还是个啥?

    作者回复: 您好, n 这里表示第几个元素, 这里借用zodiac_name[n] 下标的形式来遍历 zodiac_name 这个数组的

  • 2019-05-12
    1,while zodiac_days[n] < (int_month,int_day):
        n += 1
        print(zodiac_name[n])


    2,while zodiac_days[n] < (int_month,int_day):
        n += 1
    print(zodiac_name[n])
    老师,前面有空格和没有空格的结果是不一样的,怎么判断什么时候加空格呢
    展开

    作者回复: print()函数如果前面有空格,每次只需while循环时它都会被执行。
    如果没有空格,print( )会在while循环执行之后再运行

    根据编写的需求来确定什么时候缩进

  • 老师,在练习一条件语句使用中的第二题,是否能通过while循环语句实现:当输入的整数超过40时,让用户重新输入并再次判断的循环?
  • 2019-03-18
    zodiac_name = (u'摩羯座',u'水瓶座',u'双鱼座',u'白羊座',u'金牛座',u'双子座',u'巨蟹座',u'狮子座',u'处女座',u'天秤座',u'天蝎座',u'射手座')
    zodiac_days = ((1, 20),(2, 19),(3, 21),(4, 21),(5, 21),(6, 22),(7, 23),(8, 23),(9, 23),(10, 23),(11, 23),(12, 23))

    while True:
      int_month = int(input('请输入月份(数字1-12):'))
      int_days = int(input('请输入日期(数字1-31):'))
    #加上月份和日期的数值限定!
      if int_month <= 12 and int_days <= 31:
          break
    n=0
    while zodiac_days[n] < (int_month,int_days):
        if int_month == 12 and int_days > 23:
            break
        n +=1
    print(zodiac_name[n])
    展开
  • 2019-02-27
    老师, 怎么批量在代码前面加#?

    作者回复: 您好,批量增加注释是Pycharm的功能, 使用的快捷键是 ctrl+ /

  • 2018-12-23
    1.使用for语句输出1-100之间的所有偶数
     for num in range(0,100):
        if num%2==0:
            print(num)

    2.使用while语句输出1-100之间能够被3整除的数字
    num=0
    while True:
        num+=1
        if num > 100:
            break
        if num%3==0:
             print(num)
    展开
  • 老师 我是说elfi 不是elif python知识图谱中的if分支下的elfi是写错了吧?

    作者回复: 是有问题的,我来更新一下,非常感谢🙏

  • 老师你好,github 上面的pyhton知识图谱中流程控制if语句有个elfi分支,这个是不是写错了?

    作者回复: 你好 elif是else if的缩写,试试搜一下else和elif的区别?

  • "<"not supported between instances of "float" and "tuple"这是问题??

    作者回复: <两边分别是float和tuple 两种类型,无法进行比较,如果需要将tuple转换为float类型,可以使用float()函数强制转换