零基础学 Python(2018 版)
尹会生
前游戏公司技术总监,前新浪网技术经理
80146 人已学习
新⼈⾸单¥68
课程目录
已完结/共 72 讲
第一章 :Python介绍和安装 (3讲)
第二章 :Python基础语法 (3讲)
第四章 :条件与循环 (5讲)
第五章 :映射与字典 (2讲)
第六章 :文件和输入输出 (2讲)
第七章 :错误和异常 (1讲)
第九章 :模块 (1讲)
第十章 :语法规范 (1讲)
第十一章 :面向对象编程 (4讲)
第十二章 :多线程编程 (2讲)
第十六章 :综合案例 & 结课测试 (1讲)
特别放送 (1讲)
零基础学 Python(2018 版)
登录|注册
留言
27
收藏
沉浸
阅读
分享
手机端
回顶部
当前播放: 15 | for循环语句中的if嵌套
00:00 / 00:00
高清
  • 高清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.75x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
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与search的区别
46 | 正则表达式库替换函数sub()的实例
47 | 日期与时间函数库
48 | 数学相关库
49 | 使用命令行对文件和文件夹操作
50 | 文件与目录操作库
51 | 机器学习的一般流程与NumPy安装
52 | NumPy的数组与数据类型
53 | NumPy数组和标量的计算
54 | NumPy数组的索引和切片
55 | pandas安装与Series结构
56 | Series的基本操作
57 | Dataframe的基本操作
58 | 层次化索引
59 | Matplotlib的安装与绘图
60 | 机器学习分类的原理
61 | Tensorflow的安装
62 | 根据特征值分类的模型和代码
63 | 网页数据的采集与urllib库
64 | 网页常见的两种请求方式get和post
65 | HTTP头部信息的模拟
66 | requests库的基本使用
67 | 结合正则表达式爬取图片链接
68 | Beautiful Soup的安装和使用
69 | 使用爬虫爬取新闻网站
70 | 使用爬虫爬取图片链接并下载图片
强势回归:零基础学Python2022版来啦!
71 | 如何分析源代码并设计合理的代码结构&结课测试
本节摘要

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

https://gitee.com/geektime-geekbang/geekbangpython

登录 后留言

全部留言(27)

  • 最新
  • 精选
肖平亮 Sean
不知道老师注意到没有,星座那个测试,不管是用第一个方法还是后边用if,都是输出2个星座:金牛座和双子座

作者回复: 您好,可能由于之前演示代码的干扰,导致您运行的时候显示不正确。我把for嵌套if的代码单独贴一下,您可以对照一下自己编写的代码进行调试: 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('请输入日期:')) for zd_num in range(len(zodiac_days)): if zodiac_days[zd_num] >= (int_month, int_day): print(zodiac_name[zd_num]) break elif int_month == 12 and int_day >23: print(zodiac_name[0]) break

2019-02-23
2
关关
想问一下while和for的区别?

作者回复: for…in用于循环可迭代对象,如 列表,字典,元组 while用于满足某一条件后循环执行

2018-09-28
1
Ross
请问 if zodiac_days[zd_num] 这里为什么要用中括号?

作者回复: zodiac_days是一个元组,元组是序列的一种,因此元组可以使用序列的索引、切片、加、乘等功能。这里使用的中括号就是取元组某一个元素的索引功能。中括号里的整数对应着元组的下标

2018-06-11
2
1
路人
尹老师您好,星座那个测试有一点不明白: 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)) 这里把zodiac_days定义为元组,下面while语句时为什么可以用“while zodiac_days[n]”进行下标访问,下标访问不是列表才可以吗,定义的是元组,为啥能以列表进行运算? while zodiac_days[n] < (int_month,int_day):

作者回复: 您好,例子中的zodiac_days是元组,使用下标这种访问方式不但适用于列表,像是元组、字符串都可以使用,这三种在Python里还有个统称,被称作序列,所以你会在一些纸质书籍上看到 序列支持下标操作 的定义。所以使用下标访问没有问题。 我再额外说一下while这条语句, 当n为0时zodiac_days[n] 取得第一个元素(1, 20)也是元组,元组和元组之间是能够进行大小比较的,因此 while zodiac_days[n] < (int_month,int_day): 会变成 while (1, 20) < (3, 18) 这样的形式进行中间过程运算

2021-05-27
尼尔
完了 完了 我看不懂 if zodiac_days[zd_num] >= (int_month, int_day): 这句。 拿到zodiac_days[zd_num]的值 是 0123456789,怎么和 int_month【0-12】,int_day【1-31】作比较?

作者回复: 不要着急, 这里你可以print()函数,打印出来这三个变量的值, 你会发现它的形式是 (11, 22) <= (12, 25) 这样的 这里<=左右是两个元组数据类型做比较, 它的工作过程是元组的第一个元素和另一个元组第一个元素比较,如果 11< 12再比较第二个元素的大小

2021-02-23
2
Andy
老师您好,您在 input("请输入月份:")前面加int的时候,括号是怎么自动补全的,快捷键是什么?谢谢!

作者回复: 补全是pycharm自带的功能,左侧括号之后会自动补全,不是快捷键

2019-12-29
Geek_eb6c14
视频代码中有句代码不是很理解: int_month = int(input("请输入月份:")) int_day = int(input("请输入日期:")) for zd_num in range(len(zodiac_days)): print(zodiac_days[zd_num]) print(zd_num) if zodiac_days[zd_num] >= (int_month, int_day): print(zodiac_name[zd_num]) break elif int_month == 12 and int_day > 23: print(zodiac_name[0]) break 就是if zodiac_days[zd_num] >= (int_month, int_day):这个怎么比较呢? 比如我输入月份是3,日期是6,zodiac_days[zd_num]也就是第二个即(3, 21),那(3, 21)>=(3, 6)这是怎么比较的呢?

作者回复: 逐个位置比较,例如 (3,4) > (2,5) ,如果3>2成立就不继续比较了,返回true ;如果第一个位置相等则比较第二个位置的数字,如(2,6) > (2,5) ,第一个相等则比较第二个元素,返回true,可以在命令行执行python命令在交互模式进行相应测试

2019-12-19
爱吃鱼的猫
感觉老师忽略了一个实际场景,客户输入的月份如果大于12,日期大于31.这个没有让用户重新输入的动作,我查了下 python没有goto或者goback类似的用法,请老师解惑,谢谢!

作者回复: 可以用后面学习的“异常”来解决

2019-04-20
Stone
怎么用for循环实现类似filter的功能呢?下面这样的代码语法一致报错。。。 zodiac = [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_day) = (8, 12) i=0 zodiac_temp = () for num in range(len(zodiac_days)): if zodiac_days[num] <= (int_month, int_day): zodiac_temp[i] = zodiac_days[num] i = i + 1 elis: break zodiac_len = len(list(zodiac_temp)) print (zodiac[zodiac_len])

作者回复: 首先思路是对的,纠正两个地方的语法错误 (8, 12) 和 elis: 分别是使用了全角(中文)的括号 、 elis 应该为else 另外 zodiac_temp = () 是将zodiac_temp定义为了tuple类型,那么 zodiac_temp[i] 的用法在tuple里面就必然不支持了,所以会一直报TypeError 错误。 后面的视频中有使用for循环代替filter实现的代码,这里就不再重复答复了。

2019-03-31
肖平亮 Sean
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('请输入日期')) for zd_num in range(len(zodiac_days)): if zodiac_days[zd_num] >= (int_month, int_day): print(zodiac_name[zd_num]) break elif int_month == 12 and int_day >23: print(zodiac_name[0]) break 请问上面 print(zodiac_name[zd_num]) 这里可不可以说是:通过列表的下标偏移量来访问元组的的内容?

作者回复: 正确,因为有很多刚入门的同学,没有用太专业的术语

2019-03-17
收起评论