一、if 判断
Python条件语句是通过一条或多条语句的执行结果(True或者False)来决定执行的代码块。
if expression:
statements(s)
这里要注意的是,Python使用缩进作为语句分组的方法,所以我们建议使用4个空格作为缩进,在同一个缩进里面的,都属于同一个代码块,当然如果用到编译器的话,在写完代码后,可以使用编译器调整好代码格式。
现在我们写一个简单的if条件如下:
#!/usr/local/python3/bin/python
if 0<1: #如果0小于1,则运行下面缩进里的代码块内容
print("Hello World !")
# print("True")
print("False")
因为0小于1是正确的,所以该代码运行后将输出以下内容:
[root@izj6cdhdoq5a5z7lfkmaeaz ~]# python 2.py
Hello World !
False
现在来个复杂一些的是,加入运算符优先级判断:
#!/usr/local/python3/bin/python
if not 0>1 and 1==1: #这里先判断逻辑非“not”,然后再判断“and”,这里结果为真,所以将运行缩进代码块的内容
print("Hello World !")
# print("True")
print("False")
我们写一个简单的判断考试成绩的等级的脚本,如下所示:
#!/usr/locscorel/python3/bin/python
score=int(input("Please input score number : ")) #int()是把输入的str字符串转换成int数值
if score <= 100: #首先判断这个数是否小于等于100,符合条件则进入下一个判断
if score >= 90: #判断这个数是否大于等于90
print("You got A.")
elif score >= 75: #判断这个数是否大于等于75
print("You got B.")
elif score >=60: #判断这个数是否大于等于60
print("You got C")
else: #如果以上条件都不符合,则输出下面缩进的内容
print("You got D,and not pass.")
else: #如果输入的数大于100的输出结果
print("Please input a correct score.")
逻辑值(bool)也就是布尔值,包含了两个值(True or False):
True 表示非空的量,比如:string,tuple,list,set,dict等所有非零数
False则表示0,None,空的量等
二、while 循环
while与for相比
for循环用在有次数的循环上。
while循环用在有条件的控制上,和 if 比较相似。
while循环,直到表达式变为假(或者有一个break),才退出while循环,表达式是一个逻辑表达式,必须返回一个True或False。语法如下
while expression:
statement(s)
现在我们写一个while循环,让用户输入指定字符退出,如下所示:
#!/usr/local/python3/bin/python
x=''
while x != 'q': #当字符串 x 不等于 "q" 时
print('hello')
x=input("Please input something like q for quit :")
if not x:
break
if x=='quit':
continue
print("Please continue.")
else:
print("world")
运行的测试结果如下:
[root@izj6cdhdoq5a5z7lfkmaeaz ~]# python whileE.py
hello
Please input something like q for quit :e
Please continue.
hello
Please input something like q for quit :re
Please continue.
hello
Please input something like q for quit :quit
hello
Please input something like q for quit :q
Please continue.
world
[root@izj6cdhdoq5a5z7lfkmaeaz ~]#
三、for 循环
循环是一个结构,导致程序要重复一定的次数。
条件循环也是如此,当条件变为假,循环结束。
3.1 for列表
for循环可以用在序列里,可以循环遍历,其语法如下:
for iterating_var in sequence:
statements(s)
我们讲过的序列有字符串,元组和列表,比如我们定义一个字符串a,然后遍历a的各个字符并打印出来,信息如下:
In [1]: a='ABC'
In [2]: a
Out[2]: 'ABC'
In [3]: for i in a:
...: print(i)
...:
A
B
C
默认情况下,使用print打印出来会带有换行符,那么我们怎样让结果中不带有换行符呢,如下:
In [6]: for i in a:
print i, # 在Python2.7.5中
...:
A B C
for i in a:
print(i,end='') # 在Python3.6.1中
比如我们可以创建一个列表list1:
In [8]: list1=list() # 生成一个空列表
In [9]: list1=[1,2,3,4]
In [10]: for i in list1:
....: print i
....:
1
2
3
4
生成一个1-9的列表,默认情况下步长为1:
In [11]: range(1,10)
Out[11]: [1, 2, 3, 4, 5, 6, 7, 8, 9]
假如设置步长为2、3分别是:
In [13]: range(1,10,2)
Out[13]: [1, 3, 5, 7, 9]
In [14]: range(1,10,3)
Out[14]: [1, 4, 7]
比如说我们可以利用for循环加range打印十个数:
In [15]: for i in range(0,10):
....: print(i)
....:
0
1
2
3
4
5
6
7
8
9
打印一个1-10的列表,我们也可以这样写:
#!/usr/local/python3/bin/python
print([i for i in range(1,11)])
打印的结果如下:
[root@izj6cdhdoq5a5z7lfkmaeaz ~]# python a.py
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
我们也可以对 i 进行一些操作,代码如下:
[root@izj6cdhdoq5a5z7lfkmaeaz ~]# cat a.py
#!/usr/local/python3/bin/python
print([i for i in range(1,11)])
print([i+1 for i in range(1,11)]) # 让遍历出来的i都加上1
print([i*2 for i in range(1,11)]) # 让遍历出来的i都乘上2
print([i-2 for i in range(1,11)]) # 让遍历出来的i都减去2
运行的结果如下:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
[-1, 0, 1, 2, 3, 4, 5, 6, 7, 8]
比如我们也可以写一个程序,求1-100的数相加的和,如下所示:
#!/usr/local/python3/bin/python
sum=0
for i in range(1,101):
sum+=i
print(sum)
3.2 for字典
首先生成一个字典:
In [17]: dic={}
In [18]: dic.fromkeys('abcde',100)
Out[18]: {'a': 100, 'b': 100, 'c': 100, 'd': 100, 'e': 100}利用for循环遍历字典的k值:
In [21]: for k in dict1:
....: print(k)
....:
a
c
b
e
d
利用 for 循环遍历字典的k值,并打印出 k 值和 values 值:
In [22]: for k in dict1:
print(k),dict1[k]
....:
a 100
c 100
b 100
e 100
d 100
进行格式化输出与output美化之后:
In [23]: for k in dict1:
print("%s : %s" % (k,dict1[k]))
....:
a : 100
c : 100
b : 100
e : 100
d : 100
我们也可以使用items将字典输出为列表:
In [24]: dict1.it
dict1.items dict1.iteritems dict1.iterkeys dict1.itervalues
In [24]: dict1.items()
Out[24]: [('a', 100), ('c', 100), ('b', 100), ('e', 100), ('d', 100)]
使用for循环遍历这个列表为:
In [25]: for i in dict1.items():print i
('a', 100)
('c', 100)
('b', 100)
('e', 100)
('d', 100)
也可以指定两个变量接收值:
In [27]: for i,v in dict1.items():print i,v
a 100
c 100
b 100
e 100
d 100
直接对字典进行访问,不加任何的方法的话,遍历出来的是字典的 k 值:
In [29]: for i in dict1:print i
a
c
b
e
d
如果想要输出values呢,还是可以像前面一样进行取值:
In [30]: for i in dict1:print i,dict1[i]
a 100
c 100
b 100
e 100
d 100
小时候背过的乘法口诀,我们通过Python也可以写出来,代码如下:
#!usr/local/python3/bin/python
for i in range(1,10): #指定有多少列
for j in range(1,i+1): #嵌套指定有多少行,
print("{0} * {1} = {2}".format(j,i,j*i),end=' ') #格式化输出,当前循环结束之前以空格分割
print("\n") #循环结束重新进入下一个循环的时候进行换行
最后结果如下:
[root@izj6cdhdoq5a5z7lfkmaeaz ~]# python nine.py
1 * 1 = 1
1 * 2 = 2 2 * 2 = 4
1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16
1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25
1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36
1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49
1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64
1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81