欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Quick_Python_2

程序员文章站 2022-05-04 18:07:54
...

Quick_Python_2

Markdown By 云天

本节课的主要内容是讲解Python编程语言的控制流,主要包括分支循环异常处理

不过在讲解正文内容之前,我想介绍Python中一个相当重要且充满活力的函数,**input( )**函数:

Input( ), an important function

response = input('90年代的你,年份末尾数字是?')

# input() is an important interaction function
# the input of input() will be converted to type 'str' automatically

print(type(response))
print(str(199) + response)

90年代的你,年份末尾数字是?9
<class ‘str’>
1999

这段我设计的例程看似简单,然而每一行代码,每一行注释其实都包含了非常重要的知识点,让我一一道来:

1—> 第一行代码为input函数,当你运行这行代码时,终端会提示你输入。这句提示语便是括号内单引号中的字符串。而你输入的数据将被赋给response这个变量;

2—> input函数是一个非常重要的交互式函数;

3—> 切记!无论你输入的数据是整型还是浮点数型等,input函数都会强制性地将其转化为字符串型并赋予给变量response;

4—> type函数是一个Debug中非常有用的函数,它使得你可以方便地跟踪变量类型。顺便说一句,这在爬虫工程中相当有用,可以帮你快速识别跟踪json, bs, tag等各种类型;

5—> 注意在用**“+”拼接字符串时,必须保证拼接对象的类型是一致的**。如果不一致,请像在C中那样进行强制类型转换

下面,我们开始控制流的学习吧!

IF and LOOP

If, elif, else

我要再次说这句话了:“Python就像是可执行的伪代码。”它的分支结构非常易懂,格式如下例程,包括了if, elifelse,相信大家阅读代码1-2遍便能理解的。

我强调两个细节:(1)再次复习input函数会将输入的数据强制转换为字符串类型的变量,因此为了下面数值比较代码的简洁,我们有意识地将其强制转换为整型;(2)判断条件写完后,写一个冒号**“:”,然后敲击回车键,IDE会自动帮你空出四格**。在Python中,不像C每一行结束要加上分号,但空格的准确使用是很重要的,希望大家以后多多注意。

score = int(input('你模电考了多少分鸭?'))

if score < 60:
    print('你对得起王老师吗?')
elif 60 <= score < 80:
    print('一般般')
elif 80 <= score < 90:
    print('还不错哦')
else:
    print('厉害了')

你模电考了多少分鸭?99
厉害了

LOOP

For

Python的循环控制流中,常使用的是whilefor,不过for的应用往往更为广泛一些。下面的例程是一个最为基本的for循环。其中,i是我们设置的循环变量mylist是我们的循环即将遍历的对象,在这里,它是一个列表:

mylist = ['cat', 'dog', 'rabbit', 'turtle']

for i in mylist:
    print(i)

cat
dog
rabbit
turtle

下面的例程中,体现一个非常重要的range( )函数。通过程序的运行结果我们可以看出,便利**range(n)可以打印出0 ~ (n-1)**的数字。也许现在你看不出这有什么用,不过在课程末尾我所展示的一个爬虫案例中,你可以看到它在实际中的妙用。

# use of function range()
for i in range(3):
    print(i)

0
1
2

列表生成式则可以用一行语句代替循环生成list,是一种很简洁并且很重要的方法。代码如下,不要被吓到,它真的很像可执行的伪代码,所以多看两遍,一定可以理解的:

name = [i for i in [3, 4, 5, 6, 7] if i > 5]   
print(name)

[6, 7]

凡事只是简洁好看可不行,在实际中列表生成式有没有用处呢?答案当然是肯定的!“Talk is cheap, show me the code.”下面的例程是用Python实现快速排序,我们可以关注less = [i for i in list[1:] if i <= pivot]larger = [i for i in list[1:] if i > pivot]这两行代码,它们就是运用列表生成器使得代码在逻辑清晰的基础上变得简洁:

# Python Code for quick_sort
# test_list: [5, 3, 6, 2, 10]

def quick_sort(list):
    if len(list) < 2:
        return list
    else:
        pivot = list[0]
        less = [i for i in list[1:] if i <= pivot]
        larger = [i for i in list[1:] if i > pivot]

        return quick_sort(less) + [pivot] + quick_sort(larger)

test_list = [5, 3, 6, 2, 10]
print(quick_sort(test_list))

[2, 3, 5, 6, 10]

While

下面的代码块给出了一个while循环的例子。这个简短的程序,有着我们经常用的功能:以交互式界面提示你输入自己的密码。如果密码输入正确,则打印“pass !”;如果密码输入错误,程序将提示你再次输入,以此不断循环下去。

while True:
    password = input('Please enter your password:')
    if password == '520':
        break
print('pass!')

以下是尝试三次输入后的打印结果:

Please enter your password:66
Please enter your password:777
Please enter your password:520
pass!

try···except···

我将为大家介绍一种能很好处理程序运行中异常情况的语法:try···except···。比如在爬虫工程中,由于一些网站编写得不是很好,我们的爬虫在进行到某一步时,可能会出错抑或中断,无法按预期获取到所有数据。这时,我们最好能提前预判一些问题,并用代码提前将它们规避。

try···except···的基本语法及用途见下方代码块:

#--------------基本格式--------------
try:
#(除非发生报错)执行下列代码
    ···
    ···
except ***:
#一旦发生报错,执行下列代码,***为报错类型
#Python报错类型汇总:https://www.runoob.com/python/python-exceptions.html
    ···
    ···

我们尝试编写一个实例。我们构造了一个包含5个整型元素的列表,并尝试在循环中用16除以列表中每一个元素。然而我们知道0是不可以作为分母的。于是我们利用try···except···规避0作为分母的情况,使程序正常运行完并打印出相应结果:

#--------------Code_4--------------
num = [0,1,2,3,4]

for i in num:
    try:
        print(16/i)
    except ZeroDivisionError:
        print('0不可以做除数')

0不可以做除数
16.0
8.0
5.333333333333333
4.0

我们的第三课结束啦,Quick_Python_2 !

我们先讲解了一个十分重要且好用的input函数作为引子,而后我们学习了Python作为一门编程语言,所拥有的控制流。主要包括分支,循环和异常处理。

接下来的一课,相对来说比较轻松,作为一个过渡,让你可以消化之前的知识,准备好之后的学习。我将在下一课中为你讲授关于字符串与编码的一些知识,一起加油!

相关标签: Python 教程

推荐阅读