Quick_Python_2
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, elif和else,相信大家阅读代码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的循环控制流中,常使用的是while和for,不过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作为一门编程语言,所拥有的控制流。主要包括分支,循环和异常处理。
接下来的一课,相对来说比较轻松,作为一个过渡,让你可以消化之前的知识,准备好之后的学习。我将在下一课中为你讲授关于字符串与编码的一些知识,一起加油!
上一篇: HttpUtils
推荐阅读