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的简写。elseelif都不能单独出现

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()

循环控制语句

包括whilefor两类循环。先说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 = ‘ ‘

在循环中往往有时对某些情况特殊处理,比如说临界/错误时退出,忽略某些值等。这时就会使用到breakcontinue操作了

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流程控制语句的主要内容,如果未能解决你的问题,请参考以下文章

Java学习之路流程控制语句

day1::(python-学习之路)-流程控制和文件读写

Web全栈工程师之路——JavaScript篇——流程控制语句

python学习之路(基础篇)——基本语法流程控制

Java基础之路上----流程控制语句

Python学习-第三周:流程控制