Python全栈之路系列之流程控制
if
if就是一个条件判断的,当满足不同样的条件的时候执行不同的操作,用法如下:
if <条件一>:
<条件一代码块>
elif <条件二>:
<条件二代码块>
else:
<上面两个或者多个条件都不满足则只需这里的代码块>
来一个小栗子:
#!/use/bin/env python
# _*_ coding:utf-8 _*_
# 只需脚本是让用户输入一个数字,并把值赋值给变量n
n = int(input("Pless Numbers: "))
# 如果n大于10
if n > 10:
# 输出n > 10
print("n > 10")
# 如果n等于10
elif n == 10:
# 输出n == 10
print("n == 10")
# 否则
else:
# 输出n < 10
print("n < 10")
三元运算
如果条件成立,那么就把值1赋值给var,如果条件不成立,就把值2赋值给var
var = 值1 if 条件 else 值2
例子
>>> var = "True" if 1==1 else "False"
>>> var
'True'
for循环
for语句是python中的循环控制语句,可用来遍历某一对象,还具有一个附带的可选的else块,主要用于处理for语句中包含的break语句。
>>> li = ['ansheng','eirc']
>>> for n in range(len(li)):
... print(li[n])
...
ansheng
eirc
enumrate
enumerate
函数用于遍历序列中的元素以及它们的下标
例如定义一个列表,内容有电脑,笔记本,手机,组装机,执行脚本的时候让用户选择商品,并且给商品加上序列:
>>> li = ["电脑","笔记本","手机","组装机"]
>>> for key,value in enumerate(li):
... print(key,value)
...
0 电脑
1 笔记本
2 手机
3 组装机
为了给用户良好的体验,需要从1开始,然后用户如果输入相对应的序列那么就打印出序列对应的值:
#!/usr/bin/env python
# _*_ coding:utf-8 _*_
# 定义一个列表
li = ["电脑","笔记本","手机","组装机"]
# enumerate默认从0开始自增,我们可以改为从1开始自增
for key,value in enumerate(li,1):
print(key,value)
# 让用户选择商品的序列
li_num = input("请选择商品:")
# print输出的时候让序列减1
print(li[int(li_num)-1])
执行结果如下
1 电脑
2 笔记本
3 手机
4 组装机
请选择商品:1
电脑
range和xrange
range()函数返回在特定区间的数字序列,range()函数的用法类似切片:range(start,stop,setup),start的默认值为0,即从0开始,stop的参数是必须输入的,输出的最后一个数值是stop的前一个,step的默认值是1,setup是步长
>>> for n in range(5):
... print(n)
...
0
1
2
3
4
反向输出
>>> for n in range(5,-1,-1):
... print(n)
...
5
4
3
2
1
0
range在Python2.7与3.5的差别
python 2.7.11
>>> range(0,100)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
range在Python2.7中,会把所有的序列都输出出来,没一个序列都在内存中占用一点空间
xrange
xrang不会一次性把序列全部都存放在内存中,而是用到for循环进行迭代的时候才会一个一个的存到内存中,相当于Python3.5中的range。
>>> for i in xrange(1,10):
... print(i)
...
1
2
3
4
5
6
7
8
9
python 3.5.1
>>> range(1,100)
range(1, 100)
range在python3.5中就不会一次性的占用那么多空间,他会我需要用到这个序列的时候然后再内存中开辟一块空间给这个序列,不是一次性分完,相当于Python2.7.11中的xrange.
while循环
while
循环不同于for
循环,while
循环是只要条件满足,那么就会一直运行代码块,否则就运行else
代码块,语法如下:
while <条件>:
<代码块>
else:
<如果条件不成立执行这里的代码块>
小栗子
#!/use/bin/env python
# _*_ coding:utf-8 _*_
flag = True
while flag:
print(flag)
flag = False
else:
print('else', flag)