6-条件,循环语句

程序代码结构

  • 顺序结构 按照从上到下的顺序,一条语句一条语句的执行,是最基本的结构
  • 分支结构 条件分支(if-else)语句
  • 循环结构 写循环程序时需要注意循环变量的初值,循环条件和循环变量的增量,三者共称为循环三要素

1.条件判断

在条件判断的布尔表达式中,以下的值会被解释器看做假

  • False
  • None
  • 0(所有类型的数字, 包括浮点型,长整型和其他类型)
  • ""(空字符串)
  • () 空元祖
  • [] 空列表
  • {} 空字典

1. if-else

使用格式:

if 条件:
    #满足条件代码
else:
    #不满足条件代码

2.elif

当有多个子条件需要判定时,可以使用elif, 使用格式

    if xxx1:
        #满足条件代码
    elif xxx2:
        #满足条件代码
    elif xxx3:
        #满足条件代码
    else:
        #不满足条件代码

注意: elif必须和if一起使用 ,不能单独使用

3.if嵌套

使用格式:

  if 条件1:
        #满足条件1代码
        if 条件2:
           #满足条件1并且满足条件2代码

4.其他条件判断

  • is: 同一性运算符
>>>x=y=[1,2]
>>>z=[1,2]
>>>x==y
True
>>>x==z
True
>>>x is y
True
>>>x is z
False

​ is运算符是用于判断同一性而不是相等性, x,y因为指向同一个列表所以结果为True, 但是变量z指向的是另一个 列表,即使列表中的值相等,确不是同一个对象,所以结果为False.

  • 字符串和序列的比较 字符串可以按照字母排列顺序进行比较, 序列同样按照相同的顺序进行比较,但是两者比较的的类型要相等 >>>[1,2]<[2,1] True >>>[1,2]==[1,2] False
  • 断言
    • assert断言用来声明某个条件是真的
    • assert语句失败时, 会引发一个AssertionError

    >>>x = 2 >>>assert x%2>0 Traceback (most recent call last): File "<input>", line 1, in <module> AssertionError >>>assert x > 0 当assert后面的条件为真时,程序正常运行,当条件为假时,程序引发异常,输出错误信息

2.循环

1.while循环

使用格式:

while 判断条件:
    #执行语句

判断条件可以是任何表达式,当判断条件为真时,反复执行语句块, 直到条件为假时, 结束循环.

while嵌套

    while 判断条件1:
        #执行语句
        while 判断条件2:
           #执行语句

嵌套应用:九九乘法表

    i = 1
    while i<=9:
        j=1
        while j<=i:
            print("%d*%d=%-2d "%(j,i,i*j),end='')
            j+=1
        print('\n')
        i+=1

2. for循环

在python中for循环可以遍历任何序列,如一个列表或字符串

使用格式:

    for 临时变量 in 序列:
        #循环满足条件时执行的代码
    else:
        #循环不满足条件时执行的代码
>>> for i in 'abc':
...    print(i)
... else:
...    print('遍历结束了')
    
a
b
c
遍历结束了

3.break和Continue

  • break的作用: 用来结束整个循环
  • continue的作用: 用来结束本次循环,紧接着执行下一次的循环
  • break/continue只能用在循环中,除此以外不能单独使用
  • break/continue在嵌套循环中,只对最近的一层循环起作用

4.遍历字典

>>>tups = {'a':1,"b":2}
>>>for k,v in tups.items():
...    print('{0}:{1}'.format(k,v))
    
a:1
b:2
>>>

单独迭代字典的key或者value可以使用字典的keys()或values()函数

5.迭代

  • 并行迭代:同时迭代多个序列 python中可以使用zip()函数进行并行迭代 >>>numbers = [1, 2, 3, 4] >>>words = ["one", "two", "three", "four"] >>>days = ["Mon.", "Tues.", "Wed.", "Thur."] >>>for number, word, day in zip(numbers, words, days): ... print(number, word, day) 1 one Mon. 2 two Tues. 3 three Wed. 4 four Thur.
    • zip()函数在长度最小的参数中的元素用完后自动停止,其他参数未使用的元素将被略去
    • zip()函数的返回值不是列表或元组,而是一个整合在一起的可迭代变量 >>>zip(words,days) <zip object at 0x104faee88> >>>list(zip(words, days)) [('one', 'Mon.'), ('two', 'Tues.'), ('three', 'Wed.'), ('four', 'Thur.')]
  • 翻转和排序迭代
    • 翻转函数:reversed()
    • 排序函数:sorted()

    这两个函数可作用于任何序列或可迭代对象. 但不是修改原对象, 而是返回翻转或排序后的新对象, reversed()返回的是一个可迭代对象,可以使用list类将其转换成列表

>>>a= [1,21,5,3]
>>>sorted(a)
[1, 3, 5, 21]

>>>a
[1, 21, 5, 3]

>>>sorted('hello, world')
[' ', ',', 'd', 'e', 'h', 'l', 'l', 'l', 'o', 'o', 'r', 'w']

>>>reversed('hello,world')
<reversed object at 0x105532f98>

>>>list(reversed('hello,world'))
['d', 'l', 'r', 'o', 'w', ',', 'o', 'l', 'l', 'e', 'h']

>>>reversed(a)
<list_reverseiterator object at 0x105532780>

>>>list(reversed(a))
[3, 5, 21, 1]

>>>''.join(reversed('hello'))
'olleh'

作者:time_fly
链接:https://www.jianshu.com/p/470581394036
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏程序员互动联盟

【深度解析第一讲】大小写字母如何转换?

有网友提出怎么转换英文字母的大小写,这个也是编程中非常常见的需求,这个问题其实很简单,很多有点基础的朋友都会解决,下面我给出三种常用的方法给初学者参考。 ? 方...

32780
来自专栏专注研发

排序概述

排序有内部排序和外部排序,内部排序是数据记录在内存中进行排序,而外部排序是因排序的数据很大,一次不能容纳全部的排序记录,在排序过程中需要访问外存。

10720
来自专栏游戏开发那些事

【c++】标准模板库STL入门简介与常见用法

STL(Standard Template Library)标准模板库,主要由容器、迭代器、算法、函数对象、内存分配器和适配器六大部分组成。STL已是标准C++...

10710
来自专栏desperate633

LintCode 合并排序数组 II题目代码

合并两个排序的整数数组A和B变成一个新的数组。 注意事项 你可以假设A具有足够的空间(A数组的大小大于或等于m+n)去添加B中的元素。

6820
来自专栏我是攻城师

Java里面关于数组拷贝的几种方式

32740
来自专栏我的博客

选择排序

分类: 选择排序(选择排序,堆排序,平滑排序,笛卡尔树排序,锦标赛排序,圈排序) 思想: 1、从左至右遍历,找到最小(大)的元素,然后与第一个元素交换。 2、从...

34080
来自专栏python学习之旅

Python笔记(十七):生成器

Python生成器是创建迭代器的简单方法。简单来说,生成器是一个函数,它返回一个我们可以迭代的对象(迭代器)(一次一个值)。

8910
来自专栏平凡文摘

7大经典的排序算法总结实现

14920
来自专栏王磊的博客

把字符串转化为类型

问题:可以得到类型的String格式的名称,想要转化为相应的类型? ps:今天定义了好多个枚举类型,把枚举名称存放在一个ComboBox类名,控件值改变的时候要...

27250
来自专栏IT可乐

Java数据结构和算法(九)——高级排序

  春晚好看吗?不存在的!!!   在Java数据结构和算法(三)——冒泡、选择、插入排序算法中我们介绍了三种简单的排序算法,它们的时间复杂度大O表示法都是O(...

41560

扫码关注云+社区

领取腾讯云代金券