pythoniter雪峰_[雪峰磁针石博客]python3快速入门教程1 turtle绘图-3循环
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循环相关推荐
- python3基础教程雪峰_[雪峰磁针石博客]python3快速入门教程2数据结构1变量与赋值...
Published: 日 02 九月 2018 语法基础 解释器像简单的计算器:可以输入表达式,它会返回值.表达式语法很简单:运算符 + , - , * 和 / 与其它语言一样(例如Pascal或C) ...
- python3基础教程雪峰_[雪峰磁针石博客]python3快速入门教程9重要的标准库
日志 logging模块提供了完整和灵活的日志系统. import logging logging.debug('Debugging information') logging.info('Infor ...
- [雪峰磁针石博客]数据仓库快速入门教程1简介
数据仓库是从各种渠道收集和管理数据的技术,可提供有意义的业务洞察,战略性地使用数据. 它用于查询和分析而不是事务处理,是将数据转换为信息并及时向用户提供的过程. 决策支持数据库(数据仓库)与组织的运营 ...
- [雪峰磁针石博客]python3标准库-中文版2:内置函数
2019独角兽企业重金招聘Python工程师标准>>> 内置功能 abs() dict() help() min() setattr() all() dir() hex() next ...
- [雪峰磁针石博客]可爱的python测试开发库
欢迎转载,转载请注明来源:github地址 谢谢点赞 相关书籍下载 测试开发 Web UI测试自动化 splinter - web UI测试工具,基于selnium封装. 链接 selenium - ...
- [雪峰磁针石博客]软件测试专家工具包1web测试
web测试 本章主要涉及功能测试.自动化测试(参考: 软件自动化测试初学者忠告) .接口测试(参考:10分钟学会API测试).跨浏览器测试.可访问性测试和可用性测试的测试工具列表. 安全测试工具和性能 ...
- 一行代码都不写!Github 博客小白版入门教程
赖可 发自 凹非寺 量子位 报道 | 公众号 QbitAI GitHub不仅可以传代码,还可以建博客.利用GitHub Pages平台,就可以搭建非常好用的个人博客. 但是难点在于,你在要敲很多代码才 ...
- 一行代码都不写!Github博客小白版入门教程
赖可 发自 凹非寺 量子位 报道 | 公众号 QbitAI GitHub不仅可以传代码,还可以建博客.利用GitHub Pages平台,就可以搭建非常好用的个人博客. 但是难点在于,你在要敲很多代码才 ...
- 大学使用python 编辑器_[雪峰磁针石博客]2018 最佳python编辑器和IDE
IDE没有统一的标准,自己习惯就是最好的.本文列出一些较常用的IDE,供大家参考. 一般而言,WingIDE.PyCharm.Spyder.Vim是比较常用的IDE. Spyder Spyder是Py ...
最新文章
- swift 实践- 10 -- UIProgressView
- PHP 数据库连接池实现
- android studio 跨进程,Android IPC机制(三)在Android Studio中使用AIDL实现跨进程方法调用...
- java 格式化时间计算
- ST Visual Programmer批量烧写教程
- impdp oracle 只导入表结构_oracle数据库怎么导入dmp,只导入数据不导入表结构?...
- Fastjson解析嵌套Map例子
- iphone数据传输已取消怎么办_消失的3.5mm接口:厂商真好心取消3.5mm接口?其实大家全都是韭菜...
- android显示超图地图,超图---简单地图显示
- 你的优势在哪?开宝马的学渣教会我的事
- 数据库性能优化的五种方案
- win7无法查看win10工作组计算机,win7不显示工作组解决方法
- Python游戏编程(五)Tic Tac Toe
- 数据流程分析【停车场管理系统】
- 微信小程序特殊效果合集第一期
- 免安装版jdk的配置及使用(附绿色版jdk1.7及jdk1.8)
- EVM源码解读(1):amplify_spatial_lpyr_temporal_iir函数
- PHP与MySQL外文文献译文和原文_计算机外文翻译---基于PHP和MYSQL的网站设计和实现...
- python编程题练习_Python编程练习1,python,练习题
- 程序员面试必看30道智力题
热门文章
- 弓形算圆弧半径c语言,关于弓形面积求圆半径
- 以患者到医院就诊为背景,使用列表对象(ArrayList)和泛型机制实现就诊排队叫号系统
- 位置无关(PIC)代码原理剖析
- PQ和HLG标准及其转换
- WiFi Easy Connect简介
- 机原自检——第4章 平面机构的力分析
- mint-ui 各个组件示例
- python3将unicode编码\u60f3\u4f60\u4e86转换成中文
- Complementary congruent and opposite neurons achieve concurrent multisensory integration and segrega
- Django学习日记21