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. IDEA控制台乱码解决

    打开Intellij的安装的bin目录(D:\Program Files\JetBrains\IntelliJ IDEA 14.0\bin ),找到上图的两个文件(根据你的系统是32位或64位选择其中 ...

  2. Python全栈之路----函数

    基本介绍 定义:函数是指将一组语句的集合通过一个名字(函数名)封装起来,要想执行这个函数,只需调用其函数名即可. 编程中的函数在英文中有很多不同的叫法:在BASIC中叫做subroutine(子过程或 ...

  3. 解决使用C/C++配置ODBC链接使用SQLConnect返回-1

    VS中建立空项目使用ODBC连接时,SQLConnect函数总是返回-1,mysql和命令行连接数据库都是没问题的 retcode = SQLConnect(hdbc, (SQLCHAR*)" ...

  4. hdu5007 Post Robot AC自动机

    DT is a big fan of digital products. He writes posts about technological products almost everyday in ...

  5. c#泛型TryParse类型转换

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.R ...

  6. JDK8安装与配置

    如果是免安装包 配置方法 1.配置java环境变量 注意:jdk文件夹名字取名不要用汉语取名. 1)鼠标右键点击我的电脑(计算机)选择属性栏 2)再点击左边高级系统设置 3)点击环境变量 4)在系统变 ...

  7. CSS 社区的解决方案,对比

    在众多解决方案中,没有绝对的优劣.还是要结合自己的场景来决定. 我们团队在使用过 scss 和 css modules 后,仍然又重新选择了使用 scss.css modules 虽然有效解决了样式冲 ...

  8. docker基本命令使用

    学会使用docker命令帮助 docker help 子命令 查看docker镜像 docker images 搜索镜像 docker search 镜像名 下载镜像 docker pull 镜像名 ...

  9. Http User Agent Example

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

  10. linux下误删目录文件后恢复神器extundelete

    原文链接:https://blog.51cto.com/wzlinux/2052835 参考:https://blog.csdn.net/cwg_1992/article/details/463100 ...