Python学习之路--03流程控制语句
Posted mengfanxuan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习之路--03流程控制语句相关的知识,希望对你有一定的参考价值。
目录
表达式
表达式(Expression)是运算符(operator)和操作数(operand)所构成的序列。是编程语言中最基本的概念之一
简单地说python中的表达式就是一行行的语句
>>> 1+11
12
>>> a = [1,2,3]
>>> 1+1+1*2
4
>>> a = 1+2*3
>>> a = 1
>>> b = 2
>>> c = a and b or 0
>>> c = int(‘1‘) + 2
例子中的一行行输入都被叫做表达式。说到表达式就不能不提表达式间的优先级问题。Python不同类别运算符优先级如下图所示。
注意:
()
的优先级最高,可以使用()
来验证和修改执行顺序- 同等级运算符中也存在优先级问题。如逻辑运算符中
not
>and
>or
- 同级情况下执行顺序是从左往右顺序执行,也就是左结合。但当出现赋值
=
操作时会变成右结合,也就是不论是否=
是当前第一优先级,都要先将=
右边部分计算完成
>>> a or b and c
1
>>> not a or b + 2 == c
False
>>> (not a) or ((b + 2) == c)
False
>>> b = a is c
流程控制语句
- 条件控制语句——选择性问题
- 循环控制语句——一种解决问题的基本思想
条件控制语句
即if else
语句。python中的使用方式为
if 逻辑判断 :
deal with things
...
else :
deal with other things
...
python规范碎碎念:
- python默认每一行是一条语句,区别于c、java等必须以
;
结尾的方式,python中语句结尾处的;
是可选的- python不依赖
{}
来识别代码块,而是依赖缩进对齐来标识代码块,也因此python代码不能被压缩和混淆。缩进要求是4空格为基准,使用时注意ide等工具中对tab键的步进量的设置
条件判断最常应用的场景莫过于检测用户登录时的条件判断了,下面简单模拟一下。input()
是一个函数可以获得用户在控制台上的输入,函数在后面单独说
account = ‘Daniel Meng‘
password = ‘123456‘
print(‘please input account‘)
user_account = input()
print(‘please input password‘)
user_password = input()
if account == user_account and password == user_password :
print(‘success‘)
else :
print(‘fail‘)
PS E:Python> python .c3.py
please input account
meng
please input password
123
fail
PS E:Python> python .c3.py
please input account
Daniel Meng
please input password
123456
success
python规范碎碎念:
- python区分大小写,var和VAR不同
- python没有常量机制,所有希望表示常量的变量应当全部用大写表示,如ACCOUNT
- python中变量的命名如果是组合词的话通过
_
连接,区别于驼峰命名法等- python项目通常有很多个
.py
文件组成,一个python文件称之为一个模块,每一个模块顶部都应有一个由``` ```
包裹的部分,用于解释当前模块的意义和作用- python中标识符前不要留空格
- 每个python文件都应留一个空行
- 变量应置于函数或类中,直接暴露在模块中的变量一般理解为常量
- 为了提高可阅读性,多元运算符如
=
等左右应当各留空一格
‘‘‘
if-else条件语句的使用和规范
‘‘‘
ACCOUNT = ‘Daniel Meng‘
PASSWORD = ‘123456‘
print(‘please input account‘)
USER_ACCOUNT = input()
print(‘please input password‘)
USER_PASSWORD = input()
if ACCOUNT == USER_ACCOUNT and PASSWORD == USER_PASSWORD :
print(‘success‘)
else :
print(‘fail‘)
控制语句可以独立使用,也可以嵌套
if condition:
if expression:
pass
else:
if condition:
pass
else:
pass
if expression:
pass
if expression:
pass
这里讲一下由缩进带来的代码块的概念。对于同样缩进水平的代码属于同一代码块,处于同一级别
# 代码块
if expression:
code1
code11
code11
code22
code22
code33
code33
code2
code3
else:
code1
code2
code3
当遇到多条件判断时,可以使用elif
语法,这是else if
的简写。else
和elif
都不能单独出现
a = input()
a = int(a)
if a == 1:
print(‘apple‘)
elif a == 2:
print(‘orange‘)
elif a == 3:
print(‘banana‘)
else:
print(‘shopping‘)
注意,因为python是弱类型语言,所以input()
函数统一都按字符串类型捕获,之后需要自行将数据转换成自身希望的类型
python中没有c,java中的
switch case
语法。python中可以使用上文所述的if... elif... elif... else
形式来代替。进一步的官方建议也可以使用字典的形式来实现switch
语句的作用
def function_1(...):
...
functions = {‘a‘: function_1,
‘b‘: function_2,
‘c‘: self.method_1, ...}
func = functions[value]
func()
循环控制语句
包括while
和for
两类循环。先说while
循环
while condition:
#循环体
do your things
...
orther statements
循环语句很容易发生死循环的错误。在循环体中一定要有能影响循环条件的语句
counter = 0
while counter <= 10:
# 代码块
counter += 1
print(‘I am While ‘ + str(counter))
python中无论是while
还是for
,都可以搭配else
,表示循环条件结束后进行的操作
while condition:
do your things
...
else:
pass
pass
指代的是空操作
while循环多用于递归,for循环多用于遍历序列、集合或字典。也可以说while多用于循环次数不定,for用于循环次数确定的场合。
for target_list in expression_list:
do your things
...
上面给出了for
循环格式。其也可以搭配else
操作
for target_list in expression_list:
pass
else:
pass
循环控制语句可以嵌套使用
a = [[‘apple‘,‘orange‘,‘banana‘,‘grape‘],(1,2,3)]
for x in a:
for y in x:
print(y,end=‘ ‘)
else:
print(‘fruit is gone‘)
PS E:Pythonseven> python .c2.py
apple orange banana grape 1 2 3 fruit is gone
else
部分会在遍历完,或者说for循环完成后执行。
小技巧
print()
方法中可以使用第二个参数end
,来控制结果输出格式,默认end = ‘ ‘
在循环中往往有时对某些情况特殊处理,比如说临界/错误时退出,忽略某些值等。这时就会使用到break
和continue
操作了
break
会终止最内层循环,如果被终止层循环配有else
部分,else
部分也会被略过。continue
则是跳过当前第n次循环,直接进行第n+1次循环
a = [[‘apple‘,‘orange‘,‘banana‘,‘grape‘],(1,2,3)]
for x in a:
for y in x:
if y == ‘banana‘:
break
elif y == 2:
continue
print(y)
else:
print(‘Done‘)
PS E:Pythonseven> python .c2.py
apple
orange
1
3
Done
注意例子中,因为break
程序没有输出banana、grape和else部分。因为continue
程序跳过了2,其余部分正常输出
如果有c、java等其他语言背景可能会产生疑问,上面的for
更像是for each
。如果是下面这种指定循环次数的经典for,python该怎么表示呢?
for(int i = 0; i < n; i++){
do something
}
对此,python使用了range(start,end[,step])
函数,它可以接受三个参数,表示以步长step
为单位获取一个[start,end)
范围内的序列,步长可选,默认为1
for x in range(0,10):
print(x, end = ‘ | ‘)
print()
for x in range(0,10,2):
print(x, end = ‘ | ‘)
print()
for x in range(10,0,-2):
print(x, end = ‘ | ‘)
PS E:Pythonseven> python .c3.py
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
0 | 2 | 4 | 6 | 8 |
10 | 8 | 6 | 4 | 2 |
以上是关于Python学习之路--03流程控制语句的主要内容,如果未能解决你的问题,请参考以下文章