Python 核心技术与实战
景霄
Facebook 资深工程师
114324 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 47 讲
开篇词 (1讲)
Python 核心技术与实战
15
15
1.0x
00:00/00:00
登录|注册

07 | 修炼基本功:条件与循环

与for循环的比较
continue和break的使用
使用enumerate函数
通过索引遍历元素
遍历字典的键、值、键值对
遍历可迭代对象
省略判断条件的常见用法
语法规范
思考题
易错的地方
复杂复用的写法
表达式的复用
while循环
for循环
显性的条件判断
elif语句
if语句
总结
条件与循环的复用
循环语句
条件语句
修炼基本功:条件与循环

该思维导图由 AI 生成,仅供参考

你好,我是景霄。
前面几节,我们一起学习了列表、元组、字典、集合和字符串等一系列 Python 的基本数据类型。但是,如何把这一个个基本的数据结构类型串接起来,组成一手漂亮的代码呢?这就是我们今天所要讨论的“条件与循环”。
我习惯把“条件与循环”,叫做编程中的基本功。为什么称它为基本功呢?因为它控制着代码的逻辑,可以说是程序的中枢系统。如果把写程序比作盖楼房,那么条件与循环就是楼房的根基,其他所有东西都是在此基础上构建而成。
毫不夸张地说,写一手简洁易读的条件与循环代码,对提高程序整体的质量至关重要。

条件语句

首先,我们一起来看一下 Python 的条件语句,用法很简单。比如,我想要表示 y=|x|这个函数,那么相应的代码便是:
# y = |x|
if x < 0:
y = -x
else:
y = x
和其他语言不一样,我们不能在条件语句中加括号,写成下面这样的格式。
if (x < 0)
但需要注意的是,在条件语句的末尾必须加上冒号(:),这是 Python 特定的语法规范。
由于 Python 不支持 switch 语句,因此,当存在多个条件判断时,我们需要用 else if 来实现,这在 Python 中的表达是 elif语法如下:
if condition_1:
statement_1
elif condition_2:
statement_2
...
elif condition_i:
statement_i
else:
statement_n
整个条件语句是顺序执行的,如果遇到一个条件满足,比如 condition_i 满足时,在执行完 statement_i 后,便会退出整个 if、elif、else 条件语句,而不会继续向下执行。这个语句在工作中很常用,比如下面的这个例子。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

Python中的条件与循环是编程中的基本功,控制着代码的逻辑,是程序的中枢系统。条件语句使用简单,但需要注意冒号的使用和条件判断的显性表达。循环语句通过for和while实现,for循环遍历可迭代对象,而while循环适用于重复操作直到条件不满足的情况。在循环中,continue和break能使程序更加简洁、易读。同时,for循环和while循环的效率问题也需要注意,for循环的效率更高。文章通过实例详细介绍了条件与循环的用法和注意事项,对于Python初学者和有一定基础的读者来说,是一篇很好的学习资料。 在阅读代码的时候,你应该常常会发现,有很多将条件与循环并做一行的操作,例如: `expression1 if condition else expression2 for item in iterable`。这种写法非常方便,能够提高代码质量与效率。文章还提到了一些易错的地方,如在条件语句中,if可以单独使用,但是elif和else必须和if同时搭配使用;在for循环中,如果需要同时访问索引和元素,可以使用enumerate()函数来简化代码;合理利用continue或者break来避免复杂的嵌套,是十分重要的。 最后,文章给出了一个思考题,要求针对values中每一组子列表value,输出其和attributes中的键对应后的字典,最后返回字典组成的列表。读者可以通过一行或多行条件循环语句来实现这个功能。这个思考题很好地巩固了文章中所学的知识点。 总的来说,本文通过介绍条件与循环的基本概念、进阶用法以及相应的应用,为读者提供了全面的学习资料,能够帮助他们更好地掌握Python编程中的条件与循环。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《Python 核心技术与实战》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(248)

  • 最新
  • 精选
  • yshan
    [(xx, yy) for xx in x for yy in y if x != y] 应该是 if xx != yy] 吧 思考题一行: [dict(zip(attributes,v)) for v in values]

    作者回复: 嗯嗯,笔误已更新。 思考题👍

    2019-05-24
    12
    106
  • 小希
    通过反复查看文章内容跟参考留言中的评论,理解后输出。 虽然不是自己写的,也算是对自己的一种鼓励,至少清楚了逻辑。 #一行 print ([dict(zip(attributes,value))for value in values]) #多行输出 list1 = [] #建议空列表 for value in values: #对值列表进行循环 dict1 = {} #简历空字典,后续对字典键值对存储 for index ,key in enumerate(attributes):#遍历建列表,返回索引与元素 dict1[key] = value[index] #键与值匹配对,组装成字典元素 list1.append(dict1) #将字典添加到列表中 print(list1)

    作者回复: 加油

    2019-11-27
    5
  • 趣学车
    attributes = ['name', 'dob', 'gender'] values = [['jason', '2000-01-01', 'male'], ['mike', '1999-01-01', 'male'], ['nancy', '2001-02-01', 'female']] result_list = [] for index, item in enumerate(values): result_dict = {} for i, value in enumerate(item): result_dict[attributes[i]] = value result_list.append(result_dict) print(result_list)

    作者回复: 很棒

    2020-01-10
    1
  • 建强
    另外,想问下老师,和Java相比,Python是不是不能用于构建企业级的应用,构建企业级的系统,是不是用Java更稳定,性能更高。另外,网上说Pyhton是一种粘合剂语言,感觉用Python是不是给人感觉很业余呢?哈哈,开个玩笑。

    作者回复: 很多企业级的应用的后端都是python写的啊,比如dropbox,instagram。

    2019-06-16
    1
  • daowuli_chihai
    文稿中下面代码,过滤掉长度小于等于5的单词,'Today'就没有了吧? 最后一行是 运行结果吧? 也许不重要,呵呵 【 text = ' Today, is, Sunday' text_list = [s.strip() for s in text.split(',') if len(s.strip()) > 5] print(text_list) ['Today', 'Sunday'] 】

    作者回复: 谢谢,已经更正,估计一开始上传的时候有笔误

    2020-06-11
  • daowuli_chihai
    下面代码 第10行 except as err: as前面少了一个单词吧 while True: try: text = input('Please enter your questions, enter "q" to exit') if text == 'q': print('Exit system') break ... ... print(response) except as err: # 第10行 print('Encountered error: {}'.format(err)) break

    作者回复: 谢谢指正,确实漏了,已经加上了

    2020-06-11
  • 日月剑
    python 列表推导式的表达式是不是不能有赋值表达式?比如如下代码: a = ['A', 'B', 'C'] d = {} d[key] = 0 for key in a 这里执行的时候会有语法错误,应该怎么改呢?

    作者回复: for key in a: d[key] = 0

    2020-03-15
  • 小云同学
    另外我想说for i in <iterable>: 会先调用iterable内部的__iter__方法,变成一个iterator,然后再不断地调用iterator内部的__next__方法,直到出现StopIteration异常,被for循环捕获,然后循环结束。

    作者回复: 嗯嗯,后面的迭代器和生成器会讲到

    2019-05-24
  • 万能的芝麻酱
    # name_price: 产品名称 (str) 到价格 (int) 的映射字典 # name_color: 产品名字 (str) 到颜色 (list of str) 的映射字典 for name, price in name_price.items(): if price >= 1000: continue if name not in name_color: print('name: {}, color: {}'.format(name, 'None')) for color in name_color[name]: if color == 'red': continue print('name: {}, color: {}'.format(name, color)) 这段代码有bug吧: if name not in name_color 这个条件匹配后应该 continue 到下一个循环了,否则后面的 name_color[name] 应该会报 KeyError 吧? 后者把选取非红色的 for 循环下沉到 if name not in name_color 这个条件的 else 里也可以,感觉这样可读性好一些。

    作者回复: 已更正,抱歉,笔误

    2019-05-24
  • 庄小P
    老师,那个Continue代码有点小错误,测试案例如下 # name_price: 产品名称 (str) 到价格 (int) 的映射字典 # name_color: 产品名字 (str) 到颜色 (list of str) 的映射字典 name_price = { 'apple': 100, 'banana': 10000 } name_color = { 'banana':['red','green','blue'] } for name, price in name_price.items(): if price >= 1000: continue if name not in name_color: print('name: {}, color: {}'.format(name, 'None')) #continue for color in name_color[name]: if color == 'red': continue print('name: {}, color: {}'.format(name, color))

    作者回复: 加个continue就行了,已更新 :)

    2019-05-24
收起评论
显示
设置
留言
99+
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部