关于Python的流程控制语句
在开始之前有几点需要说明:
1 以下所有程序运行版本为 python 3.1.2(版本不同,代码可能无法正常运行,如:输出函数print随版本不同而不同)!
2 在C、PHP等语言的语法中规定,必须以分号作为语句结束的标识。Python也支持分号,同样用于一条语句的结束标识。但在Python中的分号可以省略,主要通过换行来识别语句的结束。
3 对于Python而言,代码缩进是一种语法,Python语言中没有采用花括号或begin...end...分隔代码块,而是使用冒号和代码缩进来区分代码之间的层次。(即{ -------->:)(另外:每一块中必须得有能执行的语句,不能为空或注释,当然可以使用关键字‘pass’来表示空语句块)
4 与C、PHP语言不同,Python不支持自增运算符和自减运算符。例如,i++、i--是错误的语句,但是类似i+=1的语句是允许的
5 python的流程控制语句与C,PHP的有很大程度上不一样(如:表达式两侧的括号也可以省略)。
6 实质上:python 与 JavaScript非常相似,都是解释执行,而且语法结构也有很多相似之处。
<1>If语句:
a = 23
b = 2
if a == b:
print ('a == b') #注意:Python 3之后print 成了个内置函数,而不在是语言结构
elifa < b:#(不是elseif)
print ('a < b') #注意:每一个分块内必须得有相应的能执行的语句(注释也不行),如果要留空,请使用关键字“pass”
else:
print ('a > b')
print ('Done!')
以上语句注意:
1 elif和else从句都必须在逻辑行结尾处有一个冒号,下面跟着一个相应的语句块(当然还包括正确的缩进)。
2 elif: 不是elseif,事实上把两个相关联的if else-if else语句合并为一个if-elif-else语句。
3 表达式两侧的括号可以省略,一般Python代码中都没有加。
(另外:在Python中没有switch语句。你可以使用if..elif..else语句来实现相同的工作,不过如何实现switch,以后会说到)
类比PHP中:
$a = 23;
$b = 2;
if ($a==$b):
echo 'a==b';
elseif ($a < $b):
echo 'a < b';
else:
echo 'a >b';
endif;
#或者:
if($a==$b){
echo 'a==b';
}elseif($a < $b){ #这里elseif 与else if 都可行
echo 'a < b';
}else{
echo 'a >b';
}
<2>While语句:
#while
a = 60
running = True #TRUE OR true 都不是合法的
while (running):
b= int(input('Please input b :'))#在3.0 中版本去掉了raw_input 函数,改用input。
if (a > b):
print('a > b')
elif (a < b):
running = False #为了避免死循环
print('a < b')
else:
print('a == b')
else:
print('The while loop is over')
print('Done')
以上语句注意:
1 其中else子句可以省略,事实上是else多余的,因为你可以把其中的语句放在同一块(与while相同)中,表达式两侧的括号也可以省略。
2 当条件过多时,一定要注意代码缩进与冒号。
3 循环语句中,不是特殊情况,不要出现死循环
4 注意Python中bool 类型的写法:True ,而TRUE OR true 都是不合法的
5程序中使用了input()和int()函数,
input:C语言中使用scanf()和getchar()捕获用户输入,Python也提供了类似功能的函数:input()和raw_input()(不过,3.0过后去掉了raw_input 函数,改用input)。
int: 程序中使用input函数后返回的一个字符串。但a的值是一个数字,所以我们通过int把这个字符串转换为整数,并把它存储在变量b中。事实上,int是一个类。
<3>For语句
#for
array = range(1,10)
for i in array:#这里不能加括号eg:(i in array) 这样是错误的
print (i)
else:
print ('The for loop is over')
以上语句注意:
1 其中else子句可以省略,事实上是else多余的,但是注意表达式两侧的不能加括号。
2 这里使用了range 函数,产生一个序列 数。用法为:range([start], stop[, step]) step指的是步长。(这与PHP里的range函数用法类似)
3 Python的for循环从根本上不同于C/C++的for循环(Python不支持C/C++的for循环格式)。你可能注意到Python的for循环与PHP(C#)中的foreach循环十分类似。如果你要实现类似C/C++中的for循环功能,如:(实现for(i=0;i<5;i++)) 你可这样做:
(1)采用while循环:
i =0
while i<5:
print(i)
i +=1 #注意python不支持自增运算
(2)采用for + range循环:
for i in range(0,5,1):#这里,最后一个1是步长,即如C++的for变为:for(i=0;i<5,i+=2),则步长就变为2,即可
print (i)
<4>Break语句(continue)
for i in range(0,5):
print (i)
if i >= 3:
break;
else:
print('for loop break over666'); #这条语句没有被执行
print ('Out of for')
以上语句注意:
1 当你从 for或while循环中 终止 时,任何对应的循环else块将不执行
2 continue 用法与C,PHP等语言中的一样。
符:所有代码例子:
#!/user/bin/python
#Filename:test.py
#注意:Python 3之后print 成了个内置函数,而不在是语言结构
#PHP print is not actually a real function(it is a language construct)
print ('hello world\r\n heheh')
#''' 相当于PHP中的定界符<<<
print ('''
who am i? you see \n
kwg kwg i'm "fsdfsd"
''')
#Python中的对象(另外:在Python中也没有像php,c等语言里有的语句结束符";")
i=5
print (i)
i = i+1 #i++ 报错
print (i)
s = '''
This is a multi-line string.
this is the second line.'''
print (s)
#表达式
a = 5
b = 3
area = a * b
print ('Area is',area)
print ('Perimerter is',2*(a+b))
#这里的逗号“,”与PHP中的echo语句结构中的作用类似
#
# $a = 56321;
# echo 'arwe is',$a;
#不过,在Python中它会自动在那里放了一个空格(这一点确实很好)
#流程控制语句(与PHP有很大不同)
#if
a = 23
b = 2
if a == b:
print ('a == b')
elif a < b: #(不是elseif)
print ('a < b')
else:
print ('a > b')
print ('Done!')
#while
a = 60
running = True #TRUE OR true 都不是合法的
while (running):
b= int(input('Please input b :'))#在3.0 中版本去掉了raw_input 函数,改用input。
if (a > b):
print('a > b')
elif (a < b):
running = False #为了避免死循环
print('a < b')
else:
print('a == b')
else:
print('The while loop is over')
print('Done')
#for
array = range(1,10)
for i in array: #这里不同加括号eg:(i in array) 这样是错误的
print (i)
else:
print ('The for loop is over')
#实现for(i=0;i<5;i++)
#方一
i =0
while i<5:
print(i)
i +=1 #注意python不支持自增运算
#方二
for i in range(0,5,1):#这里,最后一个1是步长
print (i)
#while
for i in range(0,5,1):#这里,最后一个1是步长
print (i)
if i >= 3:
break;
else:
print('for loop break over666'); #这条语句没有被执行
print ('Out of for')