1.for i in xxx

xxx: 序列(列表,元祖,字符串)

xxx: 可迭代对象

>>> for i in "abc":

...     print(i)                          #对字符串做了一次遍历

...                                     # i是变量,也可以用别的字符

a

b

c

第一次:取a存到i里面,然后执行for的代码块

第一次:取b存到i里面,然后执行for的代码块

第一次:取c存到i里面,然后执行for的代码块

>>> for x in ["s",1.4,{1:2}]:               #对列表做了一次遍历

...     print(x)

...

s

1.4

{1: 2}

>>> sum=0

>>> for i in s:

...     print("i的取值:",i)                   #输出简洁明了的格式

...     sum+=i

...     print("sum的临时计算结果:",sum)    #输出简洁明了的格式

...

i的取值: 1

sum的临时计算结果: 1

i的取值: 2

sum的临时计算结果: 3

i的取值: 3

sum的临时计算结果: 6

i的取值: 4

sum的临时计算结果: 10

2.in

>>> "a" in [1,2,3,4]

False

>>> "a" in (1,2,3,4)

False

>>> "a" in "absflasjg"

True

3.not in

>>> "a" not in [1,2,3,4]

True

>>> "a" not in (1,2,3,4)

True

>>> "a" not in "absflasjg"

False

4. range()

>>> range(10)                 #range(10),默认从0开始

range(0, 10)                    #生成一个类实例的文档字符串,在内存中进#存放的是一个类,较python2节省内存。动态管理数据,仅在使用数据时生成数据。

>> list(range(1,20))

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]    #快速生成连续列表的方法,list,强制转换

>>> for i in range(5):

...     print(i)                           #实现了对range(5)的遍历,0,1,2,3,4

...

0

1

2

3

4

>>> for i in range(2,5):                   #range(2,5),从2开始

...     print(i)

...

2

3

4

>>> range(1,11,2)                      #[1,11)内步长为2,

>>> list(range(2,11,2))

[2, 4, 6, 8, 10]

>>> for i in range(2,11,2):

...     print(i)                          #输出2,4,6,8,10

...

2

4

6

8

10

5.while xxx:

xxx是true,就会执行下面的代码块

注意:能用for就不用while.

原因:while太复杂

举例:循环3次

>>> for i in range(3):                     #for循环2行搞定

...     print(i)

...

0

1

2

>>> a=0

>>> while a<3:                         #while循环4行解决。需要实现声明一个变量,

...     print(a)                         #并且随着循环,变量的值也要动态变化

...     a+=1

...

0

1

2

必须使用while的情况:死循环

>>> while 1:

...     print("8")

...

8

8

8

6.break                         #彻底结束循环(对for与while均生效)

>>> for i in range(10):

...     if i==3:

...         break                  #i ==3时,彻底结束循环,所以结果未打印3

...     print(i)

...

0

1

2                                 #结果到2为止

7.continue:(结束本次循环)

>>> for i in range(10):

...     if i==3:

...         continue               #当前i==3循环和后面代码均不执行,所以结果未打

...     print(i)                      #印3,开始下次循环

...

0

1

2                                #结果中无3

4

5

6

7

8

9

8.no break             #循环语句未执行任何break语句,便会执行no break

#该语句是python特有的

>>> for i in range(3):

...     print(i)                     #此循环未执行任何break语句

... else:

...     print("no break")

...

0

1

2

no break                         #所以会执行no break

>>> for i in range(3):

...     print(i)

...     if i==3:

...         break                 #此种情况虽然有break语句,但是i==3未执行到

... else:                          #所以依然会执行no break

...     print("no break")

...

0

1

2

no break

>>> for i in range(5):

...     print(i)

...     if i==3:

...         break                 #当i==3时,彻底结束循环,break下面的均未执行

... else:

...     print("no break")

...

0

1

2

3                               #输出结果仅有0,1,2,3

>>> for i in range(5):

...     print(i)

...     if i==3:

...         continue

... else:

...     print("no break")

...

0

1

2

3                               #print(i)在判断i==3前面,所以会输出3

4

no break                        #continue对no break无效,依然会执行no break

总结:

只要循环体内没有执行break就会执行else部分的代码

小知识:

1.调试技巧

1)    把所有的变量值打印出来

2)    把中间临时计算的结果打印出来

3)    把每一个中间临时计算的结果和你期望的结果进行比对,结果发现不一致,就定位到问题所在。

2.模板字符串%d,%s

1)    %d:整型占位符

>>> a=int(input("请输入一个数字:"))

请输入一个数字:8

>>> "%d is a number" %a            #%a  %d限定了a必须是个数字,不能是字符串

'8 is a number'                      #等类型

>>> a=input("请输入一个数字:")

请输入一个数字:5

>>> "%d is a number" %a            #%a  此处a是个字符串,故会报错

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

TypeError: %d format: a number is required, not str

2)    %s:万能占位符

>>> "%s is a number" %"早上好"     #%s是万能占位符,后面可以是str

'早上好 is a number'

>>> "%s is a number" %{1:2}        #也可以是dict

'{1: 2} is a number'

>>> "%s is a number" %1.2          #也可以是float

'1.2 is a number'

>>> "%s is a number" %3            #也可以是int

'3 is a number'

>>> "%s is a number" %"早上好".encode("gbk")        #也可以是bytes

"b'\\xd4\\xe7\\xc9\\xcf\\xba\\xc3' is a number"

3.大数据处理的思想

以前小数据处理数据,有两种方式:

1)    把所有的数据放到内存里面处理

2)    用到数据,取什么数据就把数据放到内存中

大数据处理的思想:

2) 每次处理一部分数据,处理完了就把数据从内存清除出去

range(10)

在python3中就是使用的大数据处理的思想,每次遍历的时候,动态的生成数据

在python2中使用的是小数据处理数据的方式,直接生成所有数据。

4.类:

类不是序列,也不一定是可迭代对象

类中都会默认自带两个方法:

__iter__()

__next__()

实现了如上方法,就是可以迭代的对象。

5.用到死循环的经典场景

1)    服务器端:一般死循环

你可以不来,(服务器端)我在死等。不操作不能无响应

2)    你也不知道循环多少次,就要用死循环。(输入数字游戏)

6.continue与break的区别

break:彻底结束循环(对for与break均生效)

continue:结束本次循环,开始下一次循环

小练习1:

使用for循环,求列表[1,2,3,4]所有元素的和

>>> s=[1,2,3,4]

>>> sum=""

>>> sum=0

>>> for i in s:

...     sum+=i

...

>>> print(sum)

10

小练习2:

列表[1,2,3,4,5,7],你输入一个数字,判断一下是否在这个list中,执行3次这个逻辑。

算法:

1.输入一个数据,存到某个变量里面

2. 判断在不在这个列表里

3. 在就打印一下,不在也打印一下

4. 循环3次截止

自己的程序:

>>> s=[1,2,3,4,5,7]

>>> a=input("请输入一个数字:")

请输入一个数字:10

>>> for i in range(3):

...     if a in s:

...        print("输入的数字在s中")

...     else:

...        print("输入的数字不在s中")

...

输入的数字不在s中

输入的数字不在s中

输入的数字不在s中

该程序的错误为:循环3次理解错误。并不是输入一次数值后便判断3次,无任何意义。正确的应该是输入1次数值,判断结果并输出。循环执行3次。

更改后的程序为:

>>> s=[1,2,3,4,5,7]

>>> for i in range(3):

...     a=int(input("请输入一个数值:"))          #input语句执行完毕后的类型均是str

...     if a in s:                                #判断a是否在s中

...         print("a在s中")

...     else:

...         print("a不在s中")

...

请输入一个数值:4

a在s中

请输入一个数值:3

a在s中

请输入一个数值:8

a不在s中

注意:

  1. 需要将输入的数字转换为int类型,否则输入任何数值其类型均是str,输出结果均是False

>>> s=[1,2,3,4,5,7]

>>> for i in range(3):

...     a=input("请输入一个数值:")          #未经过强制类型转换

...     if a in s:                             #判断str在list中

...         print("a在s中")

...     else:

...         print("a不在s中")

...

请输入一个数值:3                         #虽然输入的数字是3,但是为str类型,所

a不在s中                                #以所有的结果均是False

请输入一个数值:4

a不在s中

请输入一个数值:5

a不在s中

  1. a=int(input("请输入一个数值:"))

该代码健壮性差,如果输入的内容不是数字,就会报错。稍后会学习异常处理。

>>> s=[1,2,3,4,5,7]

>>> for i in range(3):

...     a=int(input("请输入一个数值:"))

...     if a in s:

...         print("a在s中")

...     else:

...         print("a不在s中")

...

请输入一个数值:5

a在s中

请输入一个数值:8

a不在s中

请输入一个数值:a

Traceback (most recent call last):           # a=int(input("请输入一个数值:"))

File "<stdin>", line 2, in <module>         #限制了输入的内容必须为int

ValueError: invalid literal for int() with base 10: 'a'

小练习3:

输入数字,判断是奇数还是偶数。当输入的数据是100的时候,结束死循环。

程序:

>>> a=input("请输入一个数字:")

请输入一个数字:67

>>> while int(a)%2==0:

...     if int(a)==100:

...         break;

...     else:

...         print("请再次输入")

...

输入67后一直死循环在“请再次输入”。明显“请输入一个数字”的位置不对

改进程序:

>>> while 1:

...     a=int(input("请输入一个数字:"))     #输入数字的程序在循环中

...     if a%2==0:

...         if a==100:                     #判断==100的程序在前面

...             break                     #break 结束死循环

...         else:

...             print("%s 是偶数" %a)

...     else:

...         print("%s 是奇数" %a)

...

请输入一个数字:89

89 是奇数

请输入一个数字:67

67 是奇数

请输入一个数字:45

45 是奇数

请输入一个数字:100                   #输入100后自动退出循环,没有打印10偶数,原因为==100的位置不同,输出便不同

老师的程序:

>>> while 1:

...     a=int(input("请输入一个数字:"))

...     if a%2==0:

...         print("%s 是偶数" %a)

...     else:

...         print("%s 是奇数" %a)

...     if a==100:                      #a==100的条件判断偶数判断后,自然会输出

...         break                      #100是偶数后,结束

...

请输入一个数字:67

67 是奇数

请输入一个数字:89

89 是奇数

请输入一个数字:78

78 是偶数

请输入一个数字:100

100 是偶数

python入门(三):循环的更多相关文章

  1. 05 . Python入门值循环语句

    一.Python循环语句 程序一般情况下是按照顺序执行的 编程语言提供了各种控制结构,允许更复杂的执行路径 Python中的循环语句有for和while但没有do while 循环语句允许我们执行一个 ...

  2. python入门10 循环语句

    两种循环: 1 for in 2 while #coding:utf-8 #/usr/bin/python """ 2018-11-03 dinghanhua 循环语句 ...

  3. python入门三:文件操作

    一.文件操作 1.文件对象:和c一样,要想对一个文件进行操作,需要获取该文件的对象 f = open("xxx") # 打开文件并获取文件对象 f.xxx # 对文件进行某些操作 ...

  4. Python入门-分支循环结构

    编写代码的过程中,除了基本的变量,数据类型,在实际开发中,大量代码是根据判断条件,进而选择不同的的向前运行方式. 这些向前的运行方式基本分为两种:分支结构,循环结构 1.分支结构 if单分支结构 # ...

  5. python入门-WHILE循环

    1 使用while循环 current_number= : print(current_number) current_number += 2 让用户选择退出 prompt = "tell ...

  6. Python入门 (三)

    迭代器与生成器 迭代器 迭代是Python最强大的功能之一,是访问集合元素的一种方式. 迭代器是一个可以记住遍历的位置的对象. 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器 ...

  7. Python入门9 —— 循环

    一:问号三连 1.什么是循环? 循环就是重复做一件事 2.为何要用循环? 为了让计算机能够像人一样去重复做事情 3.如何用循环 while循环,又称之为条件循环 for循环 二:循环 1.while循 ...

  8. python入门学习笔记(三)

    10.函数 求绝对值的函数 abs(x) 也可以在交互式命令行通过 help(abs) 查看abs函数的帮助信息.调用 abs 函数:>>> abs(100)100>>& ...

  9. Python入门基础学习 三

    Python入门基础学习 三 数据类型 Python区分整型和浮点型依靠的是小数点,有小数点就是浮点型. e记法:e就是10的意思,是一种科学的计数法,15000=1.5e4 布尔类型是一种特殊的整形 ...

  10. Python 入门之 Python三大器 之 迭代器

    Python 入门之 Python三大器 之 迭代器 1.迭代器 (1)可迭代对象: <1> 只要具有__ iter __()方法就是一个可迭代对象 (我们可以通过dir()方法去判断一个 ...

随机推荐

  1. echarts移除百度地图logo方法

    移除百度地图LOGO和版权信息 在jsp头上加上如下代码即可: <style type="text/css"> .anchorBL{ display:none } &l ...

  2. Semantic Compositionality through Recursive Matrix-Vector Spaces-paper

    Semantic Compositionality through Recursive Matrix-Vector Spaces 作者信息:Richard Socher Brody Huval Chr ...

  3. alpha冲刺(2/10)

    前言 队名:旅法师 作业链接 队长博客 燃尽图 会议 会议照片 会议内容 陈晓彬(组长) 今日进展: 召开会议 安排任务 博客撰写 构建之法的阅读 问题困扰: 分配任务,还是不熟练,对后台不熟悉,不知 ...

  4. JDBC执行SQL语句以及Date对象和字符串之间的相互转换(关键是那张标准表)

    只要能分隔数字就行,老外没有11月这个概念 以前看见被人这么写,你觉得可以写成yyYY这样吗,可以mm这样吗,可以mM这样吗,不要有这种想法 都是大神们都写好了,只需要参考手册,然后调用API就行了 ...

  5. 使用golang 编写postgresql 扩展

      postgresql 的扩展可以帮助我们做好多强大的事情,支持的开发语言有lua.perl.java.js.c 社区有人开发了一个可以基于golang开发pg 扩展的项目,使用起来很方便,同时为我 ...

  6. Ansible 快速部署 Zabbix 4

    阅读本文章需要具有Ansible.Zabbix基础.本次教程基于如下环境: CentOS 7.x Zabbix 4.0 Ansible 2.5 服务器初始化 关闭防火墙.selinux,添加epel常 ...

  7. InnoDB引擎体系架构

    InnoDB引擎架构介绍 innodb存储引擎的体系架构,可简单划分成三层: 数据文件 :磁盘上的数据文件 内存池:缓存磁盘上的数据,方便读取,同时在对磁盘文件数据修改之前在这里缓存,然后按一定规刷新 ...

  8. [转]c++访问python3-实例化类的方法

    转自: http://blog.csdn.net/love_clc/article/details/76653100 此文是学习笔记,供日后翻阅.下面列出C++访问python所需的函数,按调用的先后 ...

  9. 虚拟机网络连接NAT模式,本地用Xshell连接

    当虚拟机centos6网络连接使用NAT模式时,因为共用宿主机ip所以当使用Xshell时直接填写虚拟机的ip地址和22端口是无法连接虚拟机的. 这样就需要配置端口映射关系! 1. 打开虚拟网络编辑器 ...

  10. Http User Agent Example

    Browser User Agent  Safari Mozilla/5.0 (iPhone; CPU iPhone OS 10_3_1 like Mac OS X) AppleWebKit/603. ...