Published: 日 02 九月 2018

语法基础

for语句

Python的for语句针对序列(列表或字符串等)中的子项进行循环,按它们在序列中的顺序来进行迭代。

1

2

3

4

5

6

7

8>>> # Measure some strings:

... words = ['cat', 'window', 'defenestrate']

>>> for w in words:

... print(w, len(w))

...

cat 3

window 6

defenestrate 12

在迭代过程中修改迭代序列不安全,可能导致部分元素重复两次,建议先拷贝:

1

2

3

4

5

6>>> for w in words[:]: # Loop over a slice copy of the entire list.

... if len(w) > 6:

... words.insert(0, w)

...

>>> words

['defenestrate', 'cat', 'window', 'defenestrate']

range()函数

内置函数 range()生成等差数值序列:

1

2>>> range(10)

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

range(10) 生成了一个包含10个值的链表,但是不包含最右边的值。默认从0开始,也可以让range 从其他值开始,或者指定不同的增量值(甚至是负数,有时也称"步长"):

1

2

3

4

5

6

7

8>>> range(5, 10)

[5, 6, 7, 8, 9]

>>> range(0, 10, 3)

[0, 3, 6, 9]

>>> range(-10, -100, -30)

[-10, -40, -70]

>>> range(-10, -100, 30)

[]

如果迭代时需要索引和值可结合使用range()和len():

1

2

3

4

5

6

7

8

9>>> a = ['Mary', 'had', 'a', 'little', 'lamb']

>>> for i in range(len(a)):

... print(i, a[i])

...

0 Mary

1 had

2 a

3 little

4 lamb

不过使用enumerate()更方便,参见后面的介绍。

break和continue语句及循环中的else子句

break语句和C中的类似,用于终止当前的for或while循环。

循环可能有else 子句;它在循环迭代完整个列表(对于 for)后或执行条件为false(对于 while)时执行,但循环break时不会执行。这点和try...else而不是if...else相近。请看查找素数的程序:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17>>> for n in range(2, 10):

... for x in range(2, n):

... if n % x == 0:

... print(n, 'equals', x, '*', n//x)

... break

... else:

... # loop fell through without finding a factor

... print(n, 'is a prime number')

...

2 is a prime number

3 is a prime number

4 equals 2 * 2

5 is a prime number

6 equals 2 * 3

7 is a prime number

8 equals 2 * 4

9 equals 3 * 3

continue语句也是从C而来,它表示退出当次循环,继续执行下次迭代。通常可以用if...else替代,请看查找偶数的实例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17>>> for n in range(2, 10):

... for x in range(2, n):

... if n % x == 0:

... print(n, 'equals', x, '*', n//x)

... break

... else:

... # loop fell through without finding a factor

... print(n, 'is a prime number')

...

2 is a prime number

3 is a prime number

4 equals 2 * 2

5 is a prime number

6 equals 2 * 3

7 is a prime number

8 equals 2 * 4

9 equals 3 * 3

pass

pass语句什么也不做。它语法上需要,但是实际什么也不做场合,也常用语以后预留以后扩展。例如:

1

2

3

4

5

6

7

8

9>>> while True:

... pass # Busy-wait for keyboard interrupt (Ctrl+C)

...

>>> class MyEmptyClass:

... pass

...

>>> def initlog(*args):

... pass # Remember to implement this!

...

循环技巧

在字典中循环时,关键字和对应的值可以使用 items() 方法同时获取:

1

2

3

4

5

6>>> knights = {'gallahad': 'the pure', 'robin': 'the brave'}

>>> for k, v in knights.items():

... print(k, v)

...

gallahad the pure

robin the brave

在序列中循环时 enumerate() 函数同时得到索引位置和对应值:

1

2

3

4

5

6>>> for i, v in enumerate(['tic', 'tac', 'toe']):

... print(i, v)

...

0 tic

1 tac

2 toe

同时循环两个或更多的序列,可以使用 zip() 打包:

1

2

3

4

5

6

7

8>>> questions = ['name', 'quest', 'favorite color']

>>> answers = ['lancelot', 'the holy grail', 'blue']

>>> for q, a in zip(questions, answers):

... print('What is your {0}? It is {1}.'.format(q, a))

...

What is your name? It is lancelot.

What is your quest? It is the holy grail.

What is your favorite color? It is blue.

需要逆向循环序列的话,调用 reversed() 函数即可:

1

2

3

4

5

6

7

8>>> for i in reversed(xrange(1, 10, 2)):

... print(i)

...

9

7

5

3

1

使用 sorted() 函数可排序序列,它不改动原序列,而是生成新的已排序的序列:

1

2

3

4

5

6

7

8>>> basket = ['apple', 'orange', 'apple', 'pear', 'orange', 'banana']

>>> for f in sorted(set(basket)):

... print f

...

apple

banana

orange

pear

若要在循环时修改迭代的序列,建议先复制。

>>> import math

>>> raw_data = [56.2, float('NaN'), 51.7, 55.3, 52.5, float('NaN'), 47.8]

>>> filtered_data = []

>>> for value in raw_data:

... if not math.isnan(value):

... filtered_data.append(value)

...

>>> filtered_data

[56.2, 51.7, 55.3, 52.5, 47.8]

循环

代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23# -*- coding: utf-8 -*-

# Author: xurongzhong#126.com wechat:pythontesting qq:37391319

# 技术支持 钉钉群:21745728(可以加钉钉pythontesting邀请加入)

# qq群:144081101 591302926 567351477

# CreateDate: 2018-6-12

# bowtie.py

# Draw a bowtie

from turtle import *

def polygon(n, length):

"""Draw n-sided polygon with given side length."""

for _ in range(n):

forward(length)

left(360/n)

def main():

"""Draw polygons with 3-9 sides."""

for n in range(3, 10):

polygon(n, 80)

exitonclick()

main()

条件循环while

代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23# -*- coding: utf-8 -*-

# Author: xurongzhong#126.com wechat:pythontesting qq:37391319

# 技术支持 钉钉群:21745728(可以加钉钉pythontesting邀请加入)

# qq群:144081101 591302926 567351477

# CreateDate: 2018-6-12

# spiral.py

# Draw spiral shapes

from turtle import *

def spiral(firststep, angle, gap):

"""Move turtle on a spiral path."""

step = firststep

while step > 0:

forward(step)

left(angle)

step -= gap

def main():

spiral(100, 71, 2)

exitonclick()

main()

参考资料

python测试等IT技术支持qq群: 144081101(后期会录制视频存在该群群文件) 591302926 567351477 钉钉免费群:21745728

道家技术-手相手诊看相中医等钉钉群21734177 qq群:391441566 184175668 338228106 看手相、面相、舌相、抽签、体质识别。服务费50元每人次起。请联系钉钉或者微信pythontesting

pythoniter雪峰_[雪峰磁针石博客]python3快速入门教程1 turtle绘图-3循环相关推荐

  1. python3基础教程雪峰_[雪峰磁针石博客]python3快速入门教程2数据结构1变量与赋值...

    Published: 日 02 九月 2018 语法基础 解释器像简单的计算器:可以输入表达式,它会返回值.表达式语法很简单:运算符 + , - , * 和 / 与其它语言一样(例如Pascal或C) ...

  2. python3基础教程雪峰_[雪峰磁针石博客]python3快速入门教程9重要的标准库

    日志 logging模块提供了完整和灵活的日志系统. import logging logging.debug('Debugging information') logging.info('Infor ...

  3. [雪峰磁针石博客]数据仓库快速入门教程1简介

    数据仓库是从各种渠道收集和管理数据的技术,可提供有意义的业务洞察,战略性地使用数据. 它用于查询和分析而不是事务处理,是将数据转换为信息并及时向用户提供的过程. 决策支持数据库(数据仓库)与组织的运营 ...

  4. [雪峰磁针石博客]python3标准库-中文版2:内置函数

    2019独角兽企业重金招聘Python工程师标准>>> 内置功能 abs() dict() help() min() setattr() all() dir() hex() next ...

  5. [雪峰磁针石博客]可爱的python测试开发库

    欢迎转载,转载请注明来源:github地址 谢谢点赞 相关书籍下载 测试开发 Web UI测试自动化 splinter - web UI测试工具,基于selnium封装. 链接 selenium - ...

  6. [雪峰磁针石博客]软件测试专家工具包1web测试

    web测试 本章主要涉及功能测试.自动化测试(参考: 软件自动化测试初学者忠告) .接口测试(参考:10分钟学会API测试).跨浏览器测试.可访问性测试和可用性测试的测试工具列表. 安全测试工具和性能 ...

  7. 一行代码都不写!Github 博客小白版入门教程

    赖可 发自 凹非寺 量子位 报道 | 公众号 QbitAI GitHub不仅可以传代码,还可以建博客.利用GitHub Pages平台,就可以搭建非常好用的个人博客. 但是难点在于,你在要敲很多代码才 ...

  8. 一行代码都不写!Github博客小白版入门教程

    赖可 发自 凹非寺 量子位 报道 | 公众号 QbitAI GitHub不仅可以传代码,还可以建博客.利用GitHub Pages平台,就可以搭建非常好用的个人博客. 但是难点在于,你在要敲很多代码才 ...

  9. 大学使用python 编辑器_[雪峰磁针石博客]2018 最佳python编辑器和IDE

    IDE没有统一的标准,自己习惯就是最好的.本文列出一些较常用的IDE,供大家参考. 一般而言,WingIDE.PyCharm.Spyder.Vim是比较常用的IDE. Spyder Spyder是Py ...

最新文章

  1. swift 实践- 10 -- UIProgressView
  2. PHP 数据库连接池实现
  3. android studio 跨进程,Android IPC机制(三)在Android Studio中使用AIDL实现跨进程方法调用...
  4. java 格式化时间计算
  5. ST Visual Programmer批量烧写教程
  6. impdp oracle 只导入表结构_oracle数据库怎么导入dmp,只导入数据不导入表结构?...
  7. Fastjson解析嵌套Map例子
  8. iphone数据传输已取消怎么办_消失的3.5mm接口:厂商真好心取消3.5mm接口?其实大家全都是韭菜...
  9. android显示超图地图,超图---简单地图显示
  10. 你的优势在哪?开宝马的学渣教会我的事
  11. 数据库性能优化的五种方案
  12. win7无法查看win10工作组计算机,win7不显示工作组解决方法
  13. Python游戏编程(五)Tic Tac Toe
  14. 数据流程分析【停车场管理系统】
  15. 微信小程序特殊效果合集第一期
  16. 免安装版jdk的配置及使用(附绿色版jdk1.7及jdk1.8)
  17. EVM源码解读(1):amplify_spatial_lpyr_temporal_iir函数
  18. PHP与MySQL外文文献译文和原文_计算机外文翻译---基于PHP和MYSQL的网站设计和实现...
  19. python编程题练习_Python编程练习1,python,练习题
  20. 程序员面试必看30道智力题

热门文章

  1. 弓形算圆弧半径c语言,关于弓形面积求圆半径
  2. 以患者到医院就诊为背景,使用列表对象(ArrayList)和泛型机制实现就诊排队叫号系统
  3. 位置无关(PIC)代码原理剖析
  4. PQ和HLG标准及其转换
  5. WiFi Easy Connect简介
  6. 机原自检——第4章 平面机构的力分析
  7. mint-ui 各个组件示例
  8. python3将unicode编码\u60f3\u4f60\u4e86转换成中文
  9. Complementary congruent and opposite neurons achieve concurrent multisensory integration and segrega
  10. Django学习日记21