Python的数据类型在前几节我们都简单的一一介绍了,接下来我们就要讲到Python的控制判断循环语句
在现实编程中,我们往往要利用计算机帮我们做大量重复计算的工作,在这样的情况下,需要机器能对某个条件进行判断,或是对某个行为进行重复操作
这时我们就必须要知道如何去编写循环判断语句
if... elif... else
if也就是如果的意思,后面需要加一个判断条件,如果判断条件为真,则执行if下的操作,如果为假则跳过操作
注意在每个判断条件后面要加上冒号,且if下面的语句要注意缩进
In [1]: num = 20 In [2]: if num > 10: ...: print("条件成立") ...: 条件成立
tips:“ = ” 和 “ == ”的区别:一般的一个等号代表的是赋值,在循环中只能用来和对象名进行比较,“ == ”双等号可以直接用来与值进行比较,例如数字,和字符串
例如
In [3]: name = "susmote" In [4]: if name == "susmote": ...: print("名字是susmote") ...: 名字是susmote In [5]: if name = "susmote": #如果不用“==”比较值,则会报语法错误 ...: print("名字是susmote") ...: File "<ipython-input-5-06510f3ebd56>", line 1 if name = "susmote": ^ SyntaxError: invalid syntax
其他的关系运算符如下
大于等于 >=
小于等于 <=
elif在其他语言中叫 “ else if ”,python简化了这个表达式,elif一般是用来判断多个表达式的,也就是说在一个判断语句中可以有多elif,这个也有点类似于其他语言的switch case,当然也要加上else
In [8]: num = 20 In [9]: if num > 20: ...: print("num大于20") ...: elif num == 20: ...: print("num等于20") ...: elif num < 20: ...: print("num小于20") ...: num等于20
else下面的执行语句只有当前面的条件都不满足时,才会执行,else在一个判断语句中也是可选的,但为了程序能更清晰的运行,建议还是都加上
一个完整的if,, elif ... else语句
num = input("请输入一个不大于5的数: ") num = int(num) if num == 0: print("这个数字是0") elif num == 1: print("这个数字是1") elif num == 2: print("这个数字是2") elif num == 3: print("这个数字是3") elif num == 4: print("这个数字是4") elif num == 5: print("这个数字是5") else : print("你输入的数不符合要求")
运行结果
[[email protected] ~]# python3 a.py 请输入一个不大于5的数: 3 这个数字是3 [[email protected] ~]# python3 a.py 请输入一个不大于5的数: 14 你输入的数不符合要求
while
while循环的正确定义是 while() 括号里面需要加一个判断条件,如果里面的判断为真,则一直执行下面的语句,知道while的判断条件为假才跳出循环
In [1]: num = 10 In [2]: while(num > 0 ): ...: print(num) ...: num -= 1 ...: 10 9 8 7 6 5 4 3 2 1
当然如果条件一直为真则形成死循环,里边的语句一直会执行,一般程序还是尽量不要出现死循环,死循环很耗系统资源
在这里讲一下条件判断中常用的布尔类型:
布尔类型只有真和假两个值,True or Flase
一般所有的字符串都代表真,数字中只有0是代表假 false
In [15]: while(0): ...: print("条件为假,什么都不做") ...:
for
for循环在其他语言中,如C,java,只能通过数字进行循环迭代,Python中你可以对任意有顺序的数据进行for循环获取值,如列表和字符串
python中for循环的语句结构 for item in sequence item代表获取到的每个值,sequence代表可循环的数据,列表或字符串
例如
In [16]: info = ["susmote", "18", "13488888888"] In [17]: for item in info: ...: print(item) ...: susmote 18 13488888888
如果是操作一个列表的话,你还可以对他进行其他的改变,如通过for循环对列表内元素进行排序(最原始的办法,一个个判断)
In [28]: for i in num: ...: if i < num[0]: ...: num.remove(i) ...: num.insert(0, i) ...: elif i < num[1]: ...: num.remove(i) ...: num.insert(1,i) ...: elif i < num[2]: ...: num.remove(i) ...: num.insert(2, i) ...: elif i < num[3]: ...: num.remove(i) ...: num.insert(3, i) ...: elif i < num[4]: ...: num.remove(i) ...: num.insert(4,i) ...: In [29]: num Out[29]: [1, 3, 5, 6, 7, 9]
后续在讲排序算法
range()
如果你需要重复的生成一组有规律的数字,这时你就需要用到range函数了,他能够生成递进的数字
例如与for循环结合
In [34]: for i in range(5): ...: print(i) ...: 0 1 2 3 4
默认是从0开始迭代生成的
range可以传三个参数 range( a, b ,c ) a代表开始的数字,b代表结束的数字,c代表增量(可为负数)
调用range方法时只传一个参数,a默认为0, b则是你传入的参数,c默认为1
调用range方法时传两个参数,a就是第一个参数,b是后面一个参数,c默认为1, 记住包头不包尾
例如
In [42]: for i in range(2, 6): ...: print(i) ...: 2 3 4 5 In [43]: for i in range(2, 10, 2): ...: print(i) ...: 2 4 6 8
当然也可以为负数
In [44]: for i in range(-10, -80, -10): ...: print(i) ...: -10 -20 -30 -40 -50 -60 -70
对于一个列表,你还可以遍历他的索引,获取值
In [45]: weekdays = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunda ...: y"] In [46]: for i in range(len(weekdays)): ...: print(i, weekdays[i]) ...: 0 Monday 1 Tuesday 2 Wednesday 3 Thursday 4 Friday 5 Saturday 6 Sunday
一般我们在进行上述操作时,为了更方便,我们都是使用 enumerate()方法的,他能直接迭代生成索引,这个之后再讲
range()返回的值不是一个列表,只是一个对象,我们把这种对象叫做可迭代对象
我们不仅能够通过for循环输出对象迭代的值,还能直接通过 list() 直接生成列表
In [47]: print(range(10)) range(0, 10) In [48]: list(range(10)) Out[48]: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]