+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

2019-07(6)

2019-08(95)

2019-09(107)

2019-10(11)

2019-11(4)

2019-12(18)

2020-01(24)

2020-02(19)

python学习日记2

发布于2020-02-10 17:38     阅读(633)     评论(0)     点赞(9)     收藏(3)


Python学习日记2

——流程控制

Python同样提供了两种基本的流程控制结构——分支结构和循环结构;Python使用if语句来提供分支支持,提供了while、for-in循环,也提供了break 和 continue来控制程序的循环结构。

2.1 几点注意

  1. 不要忘记缩进,不要随意缩进

    首先,每种语言都有其特点,Python也有其特点:Python的代码块是通过缩进来标记的,不同于C和Java需要用花括号或end来作为代码块的标记,有相同缩进的多行代码属于同一个代码块,这对于我这种半强迫症简直太好了,用C和Java时候都要把代码搞得整整齐齐的人,还省了我天天忘记加end麻烦(虽然现在的开发环境都很人性化了)。因而,Python的代码不可以忘记缩进也不可以随意缩进。

  2. 不要忘记冒号

    Python冒号精确表示代码块的开始点,这个规则所有的条件执行体、循环体、方法体、类体都要遵循。

2.2 if 分支结构

2.2.1 if表达式

if 分支采用布尔值布尔表达式作为分支控制条件。Python的if分支即可作为语句使用,也可作为表达式使用。其语法格式与其他语言并无多少差别。

if expression:
   statement...
elif expression:   
   statement1...
   statement2...
else:
   statement...
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

if分支的条件不仅包括Bool类型的表达式,可以是任意类型,下面的值作为Bool表达式时,会被当做False处理:

False,None,0," ",(),[],{}

    各种代表“空”的 str类型、list类型、dict类型的条件都会被当做False来处理。

    2.2.2 if分支结构的逻辑错误

    在使用if-else语句时,有一个基本规则:总是有先把范围小的条件放在前面处理。

    age =45
    if age>20:
        print("Younger")
    elif age>40:
        print("Middle age")
    elif age>60
        print('older')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    运行以上程序输出的反而是 Youger,理由很简单,第一个if为true就不用再elif了,所以范围小的应该放前面处理。正确应为:

    age =45
    if age>60:
        print("Older")
    elif age>40:     #等同于if age>40 and not(age>60)
        print("Midage")
    elif age>20
        print('Younger')
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    2.2.3 Pass语句和断言

    • Python也提供了Pass语句,也就是空语句,在某些时候希望某处有一个语句占位但又不想他做什么事或时暂时还没想好要让他做什么事时,就可以使用Pass语句。
    s=int(input("please input an int:"))
    if s>5:
        print("大于5")
    elif s<5:
        pass
    else:
        print("等于5")
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 断言语句(assert)与If 分支类似,它用于对一个Bool表达式进行断言,相当于竞答,如果表达式为true,程序继续进行,如果为False则会引发AssertionError错误,终止程序,出局。
    s=int(input("please input an int:"))
    assert 5<s<10
    print("s在5和10之间")
    ``
    
    ```python
    please input an int:1
    Traceback (most recent call last):
      File "C:/Users/WD/PycharmProjects/li4.6/li.py", line 2, in <module>
        assert 5<s<10
    AssertionError
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    2.3 循环结构

    2.3.1 While 循环结构

    While循环的语法格式如下:

    count=0			#init_statements
    while count<5:		#test_expression
        print("count:",count)  #body_statements
        count+=1		#iteration
    print("Recycle finished")
    • 1
    • 2
    • 3
    • 4
    count: 0
    count: 1
    count: 2
    count: 3
    count: 4
    Recycle finished
    • 1
    • 2
    • 3
    • 4
    • 5

    那么想要取出列表或元组中的值时,除了pop()方法以弹栈的形式取出,就还可以用循环遍历取出其中的元素。

    2.3.2 for-in 循环

    用while循环去遍历序列显然要麻烦得多,那么用专门的for-in循环来遍历这些可迭代对象就会更加简洁。
    for-in循环的语法格如下:

    for 变量 in 可迭代对象
        statements
    
    • 1
    • 2

    可迭代对象即指该对象中包含一个_iter_方法,且该方法的返回值对象有next()方法。
    另外还有一点说明,for-in循环中的变量的值受for-in循环控制。他会在每次循环开始时自动被赋值,因此不应该在循环中对该变量赋值。
    如用for_in循环来求阶乘:

    integer=int(input("please input the target:"))
    result=1
    for i in range(1,integer+1):
        result*=i
    print(result)
    • 1
    • 2
    • 3
    • 4
    please input the target:3
    6
    • 1

    用for-in循环遍历列表、元组和字典:

    • 计算列表中所有数值的和与平均值:
    a_list=[3.3,5.9,100,102.33,12,56,78,'python']
    sum=0
    count=0
    for ele in a_list:
        if isinstance(ele,int) or isinstance(ele,float):
            sum+=ele
            count+=1
    print("求和:",sum)
    print("平均:",sum/count)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 遍历字典时使用了items()、keys()、values()这三个方法:
    my_dict={'BMW':100,'Bens':300,'Ford':20}
    for key,value in my_dict.items():
        print("key:",key)
        print("value:",value)
    
    for key in my_dict.keys():
        print("key:",key)
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    for表达式

    for表达式最终返回的是列表,因此可利用列表、元组等可迭代对象来创建新的列表。表达式如下:

    [表达式 for 循环计数器 in 可迭代对象]
    
    • 1

    for表达式与for循环看似无区别,实则不然:

    • 在for表达式之前定义一个表达式,该表达式通常会包含循环计数器
    • 没有循环体,因此不需要冒号
    a_range=range(10)
    a_list=[x*x for x in a_range if x%2==0]
    print(a_list)
    
    output:
    [0, 4, 16, 36, 64]
    • 1
    • 2
    • 3
    • 4
    • 5

    2.3.3 嵌套循环

    easy,不说了。

    2.4 控制循环结构

    Python没有提供go to 来控制程序的跳转,据说时提高可可读性降低了灵活性。但Python也提供了break 和 continue来控制循环结构,用return来结束整个方法。

    1. 使用break结束循环
      某些时候需要强行终止循环而不是等待出现False才终止,此时即可采用break来终止循环跳出循环体。
      但值得注意的是,break只可以结束它所在的循环而不可以结束他外部嵌套的循环。

    2. 使用continue来忽略本次循环剩下的语句
      看似它和break一样中止了循环,但continue并不会跳出循环,只是结束了本次循环,下次循环依旧进行。

    3. 使用return 结束方法
      return用于从包围它的最直接方法、函数或匿名函数返回,当函数或方法执行到return语句时,这个函数或方法将被结束。
      和break 和 continue 不同的是,不论return 处于多少层循环之内,都将直接结束整个函数或方法。

    练习:打印一个近似圆,只要给定不同的半径,圆的大小就会随之改变。

    r = int(input("请输入半径: "))
    for i in range(2 * r + 1):
        half = round((r ** 2 - (r - i) ** 2) ** 0.5)
        print("  " * (r - half), end="")
        print("*", end="")
        print("  " * half * 2, end="")
        print("*")
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    请输入半径: 3
          **
      *        *
    *            *
    *            *
    *            *
      *        *
          **
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    该程序也体现了顺序结构执行的方法,逐条语句执行
    可见Python语言的简洁。虽然已经在课堂上学过一个学期C,可能现在让我来用C来输出这个东西,用循环跳指针还是会让我头大。。。

    此处有几点注意:
    Python每次输出都会 自动换行,因此如果不想让结果输出自动换行,就可以加上一个end= ,还可以设置间隔符。

    发布了2 篇原创文章 · 获赞 0 · 访问量 62


    所属网站分类: 技术文章 > python文章

    作者:3434erer

    链接: http://www.pythonheidong.com/blog/article/231027/

    来源:python黑洞网 www.pythonheidong.com

    任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

    9 0

    赞一赞 or 踩一踩

    收藏该文
    已收藏

    评论内容:(最多支持255个字符)

    相似文章

      5171. 最接近的因数

      Python实现生成西瓜数据集的Excel文件

      Leetcode - 删除排序数组中的重复项

      python第五天-字符串

      数据结构|LeetCode(力扣)经典题:队列

      python学习笔记(3)

      TYD_初识python数据可视化库-Matplotlib

      Scrapy安装与应用教程

      python实现修改文件中的内容

      mac环境下python3.6安装pyhanlp工具包

    优质资源排行榜

     python经典电子书大合集下载 下载次数 8138

     零基础java开发工程师视频教程全套,基础+进阶+项目实战(152G) 下载次数 7550

     零基础前端开发工程师视频教程全套,基础+进阶+项目实战(共120G) 下载次数 7442

     零基础大数据全套视频400G 下载次数 7006

     零基础php开发工程师视频教程全套,基础+进阶+项目实战(80G) 下载次数 6893

     零基础软件测试全套系统教程 下载次数 6506

     全套人工智能视频+pdf 下载次数 6443

     IOS全套视频教程 基础班+就业班 下载次数 4680

     编程小白的第一本python入门书(高清版)PDF下载 下载次数 3648

    10  effective python编写高质量Python代码的59个有效方法 pdf下载 下载次数 3361

    11  Python深度学习 pdf下载 下载次数 3156

    12  笨办法学python pdf下载 下载次数 3087

    13  Python Cookbook第三版中文PDF下载高清完整扫描原版 下载次数 3024

    14  树莓派Python编程指南 pdf下载 下载次数 3011

    15  python从入门到精通视频(全60集)python视频教程下载 下载次数 3009

    16  python项目开发视频 下载次数 3002

    17  使用python+pygame开发的小游戏《嗷大喵快跑》源码下载 下载次数 3000

    18  黑马2017年java就业班全套视频教程 下载次数 2992

    19  Python基础教程 pdf下载 下载次数 2988

    20  python实战项目 平铺图像板系统源码下载,适用于想要保存,标记和共享图像,视频和网页的用户 下载次数 2987

    21  利用python实现程序内存监控脚本 下载次数 2987

    22  老男孩python自动化视频 下载次数 2983

    23  老王python基础+进阶+项目视频教程 下载次数 2974

    24  尚硅谷Go学科全套视频 下载次数 2972

    25  某硅谷Python项目+AI课程+核心基础视频教程 下载次数 2968

    26  Web前端实战精品课程 下载次数 2967

    27  Python算法教程_中文版 pdf下载 下载次数 2966

    28  tron python小游戏 下载次数 2963

    29  [小甲鱼]零基础入门学习Python 下载次数 2962

    30  老男孩python全栈开发15期 下载次数 2958

    31  2017最新web前端开发完整视频教程附源码 下载次数 2948

    32  最新全套完整JAVAWEB2018开发视频 下载次数 2926

    33  流畅的Python PDF下载高清完整扫描原版 下载次数 2919

    34  Spring boot实战视频6套下载 下载次数 2910

    35  python全套视频十五期(116G) 下载次数 2908

    36  Python高性能编程 pdf下载 下载次数 2906

    37  Python项目实战 下载次数 2887

    38  30个小时搞定Python网络爬虫 含源码 下载次数 2884

    39  简明python教程 (A Byte of Python)pdf下载 下载次数 2884

    40  利用Python进行数据分析 pdf下载 下载次数 2884

    41  python全自动抢火车票教程-python视频教程下载 下载次数 2883

    42  尚硅谷大数据之Hadoop视频 下载次数 2876

    43  Python A~B~C~ python视频教程下载 下载次数 2866

    44  数据结构与算法视频(小甲鱼讲解-全) 下载次数 2864

    45  web小程序表白天数倒计时源码下载 下载次数 2863

    46  python基础视频教程 下载次数 2862

    47  go语言全套视频 下载次数 2855

    48  清华学霸尹成Python爬虫视频-ok 下载次数 2846

    49  黑马前端36期最全视频和代码 下载次数 2843

    50  2018最新全套web前端视频教程+源码下载 下载次数 2841