[Python从零到壹] 二.语法基础之条件语句、循环语句和函数

Eastmount 2020-11-13 00:01:04
Python 基础 语法 条件 语句


欢迎大家来到“Python从零到壹”,在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界。所有文章都将结合案例、代码和作者的经验讲解,真心想把自己近十年的编程经验分享给大家,希望对您有所帮助,文章中不足之处也请海涵。

Python系列整体框架包括基础语法10篇、网络爬虫30篇、可视化分析10篇、机器学习20篇、大数据分析20篇、图像识别30篇、人工智能40篇、Python安全20篇、其他技巧10篇。您的关注、点赞和转发就是对秀璋最大的支持,知识无价人有情,希望我们都能在人生路上开心快乐、共同成长。

本文参考了作者CSDN的文章,链接如下:

同时,作者新开的“娜璋AI安全之家”将专注于Python和安全技术,主要分享Web渗透、系统安全、人工智能、大数据分析、图像识别、恶意代码检测、CVE复现、威胁情报分析等文章。虽然作者是一名技术小白,但会保证每一篇文章都会很用心地撰写,希望这些基础性文章对你有所帮助,在Python和安全路上与大家一起进步。




一.条件语句

在讲诉条件语句之前,需要先补充语句块的知识。语句块并非一种语句,它是在条件为真时执行一次或执行多次的一组语句,在代码前放置空格缩进即可创建语句块。它类似于C、C++、Java等语言的大括号({ })来表示一个语句块的开始和结束。

在Python中使用冒号(:)来标识语句块的开始,块中每一条语句都有缩进并且缩进量相同,当回退到上一层缩进量时,就表示当前语句块已经结束。 下面开始详细讲解条件语句。

1.单分支

单分支语法如下:

if <condition>:
<statement>
<statement>

< condition > 是条件表达式,基本格式为< expr >< relop >< expr >;< statement >是语句主体。判断条件如果为真(True)就执行语句,如果为假(False)就跳过语句,执行下一条语句。条件判断通常有布尔表达式(True、False)、关系表达式(>、<、>=、<=、= =、!=)和逻辑运算表达式(and、or、not,其优先级从高到低是not、and、or)等。

注意:在Python2.x版本中,条件表达式是不强制要求用括号括起来的,但条件表达式后面一定要添加英文冒号字符。

a = 10
if a==10:
print('变量a等于10')
print(a)

输出结果如下:
在这里插入图片描述



2.二分支

二分支语法如下:

if <condition>:
<statement>
<statement>
else:
<statement>
<statement>

执行过程如下图所示:

在这里插入图片描述

如果条件语句< condition >为真,if后面的语句就被执行,如果为假,则执行else下面的语句块。条件语句的格式为:< expr >< relop >< expr >,其中< expr >为表达式、为关系操作符。例如:a >= 10、b != 5等。

a = 10
if a >= 5:
print('变量a大于等于5')
print(a)
else:
print('变量a小于5')
print(a)

输出结果如下,由于变量a为10,大于5执行if中的语句。

在这里插入图片描述



3.多分支

if多分支由if-elif-else组成,其中elif相当于else if,同时它可以使用多个if的嵌套。具体语法如下所示:

if <condition1>:
<case1 statements>
elif<condition2>:
<case2 statements>
elif<condition3>:
<case3 statements>
...
else:
<default statements>

该语句是顺序评估每个条件,如果当前条件分支为True,则执行对应分支下的语句块,如果没有任何条件成立,则执行else中的语句块,其中else是可以省略的。代码如下:

num = input("please input:")
num = int(num)
print(num)
if num >= 90:
print('A Class')
elif num >= 80:
print('B Class')
elif num >= 70:
print('C Class')
elif num >=60:
print('D Class')
else:
print('No Pass')

输出值为76,则在80到70之间,成绩为C等级,输出结果如下图所示。

在这里插入图片描述

注意:由于Python不支持switch语句,所以多个条件判断,只能用elif来实现,如果判断需要多个条件需同时判断时,可以:

  • 使用or (或),表示两个条件有一个成立时判断条件成功
  • 使用and (与),表示只有两个条件同时成立的情况下,判断条件才成功
# 判断值是否在小于0或大于10
num = 10
if num < 0 or num > 10:
print('hello')
else:
print('undefine')
# 输出结果: undefine
# 判断值是否在0~5或者10~15之间
num = 8
if (num >= 0 and num <= 5) or (num >= 10 and num <= 15):
print('hello')
else:
print('undefine')

输出结果如下图所示:

在这里插入图片描述

当if有多个条件时可使用括号来区分判断的先后顺序,括号中的判断优先执行,此外and和or的优先级低于>(大于)、<(小于)等判断符号,即大于和小于在没有括号的情况下会比与或要优先判断。

同时,你也可以在同一行的位置上使用if条件判断语句,如下实例。但不见大家使用类似的语法,在我们编写项目或实战中,很可能你的代码会供别人学习,有时你只负责其中一部分,良好的代码格式及注释是非常必要的。

var = 520
if (var ==520): print("感谢您关注娜璋AI安全之家")


二.循环语句

Python循环语句主要分为while循环和for循环,它允许我们执行一个语句或语句组多次。

1.while循环

while循环语句的基本格式如下:

while <condition>:
<statement>
else:
<statement>

执行流程如下图所示:

在这里插入图片描述

条件表达式< condition >如果为真时,则循环体重复执行,直到条件判断为假,循环体终止,如果第一次判断条件就为假,则直接跳出循环执行else语句,注意else语句可以省略,同时冒号(:)开始进入循环体,缩进区分语句块。条件语句condition包括布尔表达式(True、False)、关系表达式(>、<、>=、<=、= =、!=)和逻辑运算表达式(and、or、not)等。

案例1:1+2+…+100

i = 1
s = 0
while i <= 100:
s = s+i
i = i+1
else:
print('over')
print('sum = ', s)

这段代码是作者写博客或授课时,讲述循环语句最常用的例子,求1+2+3+…+100的结果,答案是5050。该段代码反复执行“i<=100”判断,当i加到101时,判断i>100为假则结束循环执行else语句。

在这里插入图片描述


案例2:循环打开网站
再举一个实例,通过定义一个while循环,调用webbrowser库的open_new_tab()函数循环打开百度首页网址,下面代码反复打开了百度首页5次。完整代码如下:

import webbrowser as web
import time
import os
i=0
while i<5:
web.open_new_tab('http://www.baidu.com')
i=i+1
time.sleep(0.8)
else:
os.system('taskkill /F /IM iexplore.exe')
print('close IE')

代码是调用webbrowser库中open_new_tab()函数打开窗口(百度链接)5次。

在这里插入图片描述

最后循环结束执行os.system()操作系统函数,调用taskkill命令结束IE浏览器进程(Iexplore.exe),其他浏览器程序修改为chrome.exe、qq.exe或firefox.exe即可。其中参数“/F”表示强行终止程序,“/IM”表示图像,如下图所示。

在这里插入图片描述

注意:上述代码实现了循环打开某个网站,可以应用于刷取网页浏览量或Web开发测试等功能。比如新浪博客等部分网页打开一次浏览器会计算一次浏览次数,通过上面这段代码可以循环增加阅读量,部分网站又是通过浏览量进行排序的,不妨试试看。作者引入该代码仅为读者了解循环,也为后面的爬虫知识埋下伏笔。


案例3:奇数和偶数计算
最后补充一个奇数和偶数计算的案例,其基本流程如下图所示:

在这里插入图片描述

代码如下:

numbers = [12, 37, 5, 42, 8, 3]
even = []
odd = []
while len(numbers) > 0:
number = numbers.pop()
if(number % 2 == 0): #偶数判断
even.append(number)
else:
odd.append(number)
#输出结果
print(even)
print(odd)

输出结果如下:

[8, 42, 12]
[3, 5, 37]


2.for循环

for循环语句的基本格式如下:

for <var> in <sequence>:
<statement>
<statement>

流程图如下:

在这里插入图片描述

自定义循环变量var遍历sequence序列中的每一个值,每个值执行一次循环的语句块。sequences表示序列,常见类型有list(列表)、tuple(元组)、strings(字符串)和files(文件)。下面的代码是计算1到100的求和,输出三角形星号的示例。

#元组循环
tup = (1,2,3,4,5)
for n in tup:
print(n)
else:
print('End for\n')
#计算1+2+...+100
s = 0
for i in range(101):
s = s + i
print('sum =', s)
#输出三角形星号
for i in range(10):
print("*"*i)

输出结果如下图所示,循环遍历元组tup变量中的值,依次获取并输出;然后计算1累加到100,range(101)表示依次获取101范围内的100个数字,其累加结果为5050;最后输出星号三角形,print “ * ” * i 代码中,第一个星号表示输出星号字符串,第二个星号是乘法,表示输出5个星号,终输出三角形。打印图形是编程基础,使用Python实现要比C语言容易很多,但原理逻辑是一样的。

在这里插入图片描述



3.Break、Continue和Pass语句

Break和Continue是两个常用的跳出循环语句。

  • Break语句
    跳出最内层while、for循环,在语句块执行过程中终止循环,并且跳出整个循环。
s = 0
num = 0
while num<20:
num += 1
s += num
if s > 100:
break
print("The sum is", s)
# The sum is 105

当求和变量s大于100的时候,进入if判断,执行break跳出循环,最后输出105。


  • Continue语句
    在语句块执行过程中终止当前循环,跳出该次循环,执行下一次循环。
for num in range(10):
if num % 2 == 0:
print("even number:", num)
continue
print("number:",num)

输出结果如下,当为偶数的时候continue跳出当前循环,for循环中只输出偶数。

>>>
even number: 0
number: 1
even number: 2
number: 3
even number: 4
number: 5
even number: 6
number: 7
even number: 8
number: 9
>>>

  • pass语句
    pass语句是空语句,为了保持程序结构的完整性所使用的。
# 输出 Python 的每个字母
for letter in 'Python':
if letter == 'h':
pass
print('这是 pass 块')
print('当前字母 :', letter)
print("Good bye!")

输出结果如下图所示:

在这里插入图片描述



4.嵌套循环

while基本语法如下:

while expression:
while expression:
statement(s)
statement(s)

for基本语法如下:

for iterating_var in sequence:
for iterating_var in sequence:
statements(s)
statements(s)

下面以最简单的冒泡排序算法来补充循环嵌套知识。冒泡排序是最常见到的排序算法,也是很基础的一种排序算法。它的实现思想是:

  • 相邻的两个元素进行比较,然后把较大的元素放到后面(正向排序),在一轮比较完后最大的元素就放在了最后一个位置,像鱼儿在水中吐的气泡在上升的过程中不断变大。
def bubble_sort(list):
count = len(list)
for i in range(count):
for j in range(i + 1, count):
if list[i] > list[j]:
list[i], list[j] = list[j], list[i]
return list
#排序算法
list = [3, 91, 23, 14, 56, 9]
print("排序前:", list)
res = bubble_sort(list)
print("排序后:", res)

输出结果如下:

在这里插入图片描述

你可能会疑惑bubble_sort()是什么?其实它是一个自定义函数,下面我们马上讲解。



三.函数

当读者需要完成特定功能的语句块时,需要通过调用函数来完成对应的功能。函数分为无参数函数和有参数函数,当函数提供不同的参数时,可以实现对不同数据的处理。下面从自定义函数、系统自带函数、第三方库函数三个方面进行讲解。

1.自定义函数

(1) 定义方法
为了简化编程,提高代码的复用性,可以自定义函数,函数定义如下:

def funtion_name([para1,para2...paraN]):
statement1
statement2
....
[return value1,value2...valueN]

其中:

  • 定义函数需要使用def关键词
  • function_name表示函数名,后面的冒号(:)不要忘记,并且缩进
  • [para1,para2…paraN]表示参数,可以省略,也可以多个参数
  • [return value1,value2…valueN]表示返回值,可以无返回值,也可以多个返回值
  • 需要注意的是自定义函数有返回值,主调函数就需要接受返回的结果

函数调用时,形参被赋予真实的参数,然后执行函数体,并在函数结束调用时返回结果。Return语句表示退出函数并返回到函数被调用的地方,返回值传递给调用程序。

首先来看一个无返回值的求和函数fun1(),代码如下:

#函数定义
def fun1(a,b):
print(a,b)
c = a + b
print('sum =',c)
#函数调用
fun1(3,4)
# 3 4
# sum = 7

再来看一个包含多个参数返回的计算器函数fun2(),代码如下,return返回五个结果。

#函数定义
def fun2(a,b):
print(a,b)
X = a + b
Y = a - b
Z = a * b
M = a / b
N = a ** b
return X,Y,Z,M,N
#函数调用
a,b,c,d,e = fun2(4,3)
print('the result are ',a,b,c,d,e)
re = fun2(2,10)
print(re)

输出结果如下,依次返回加法、减法、乘法、除法、幂运算结果。

>>>
4 3
the result are 7 1 12 1.3333333333333333 64
2 10
(12, -8, 20, 0.2, 1024)
>>>

(2) 自定义函数参数含预定义
预设值是在自定义函数基础上,对某些参数赋予预定义值。例如:

def fun3(a,b,c=10):
print(a,b,c)
n = a + b + c
return n
print('result1 =',fun3(2,3))
print('result2 =',fun3(2,3,5))

第一次调用a为2,b为3,c为预定义值10,求和输出15;第二次调用修改了预定义值c,赋值为5,求和即为2+3+5=10。

在这里插入图片描述

注意:预定义值得参数不能先于无预定义值参数;同时,函数调用时,建议采用一对一赋值,也可以在函数调用中给出具体形参进行赋值,但需要注意的是在函数调用过程中(使用函数时),有预定义值的参数不能先于无预定义值参数被赋值。


2.常见内部库函数

Python系统内部提供了一些库函数供大家使用,这里主要介绍最常见的四个库函数,即str字符串库函数、math数据库函数、os操作系统库函数、socket网络套接字库函数。Python常见内部库函数如下:

在这里插入图片描述

下面代码是这四个常见内部库函数的具体用法,代码如下:

# -*- coding:utf-8 -*-
#字符串库函数
str1 = "hello world"
print('计算字符串长度:', len(str1))
str2 = str1.title()
print('首字母大写标题转换:', str2)
str3 = '12ab34ab56ab78ab'
print('字符串替换:', str3.replace('ab',' '))
#数学库函数
import math
print(math.pi)
num1 = math.cos(math.pi/3)
print('余弦定律:', num1)
num2 = pow(2,10)
print('幂次运算:', num2)
num3 = math.log10(1000)
print('求以10为底的对数:', num3)
#操作系统库函数
import os
print('输出当前使用平台:', os.name)
path = os.getcwd()
print('获取当前工作目录', path)
os.system('taskkill /F /IM iexplore.exe') #关闭浏览器进程
#网络套接字库函数
import socket
ip = socket.gethostbyname('www.baidu.com')
print('获取百度ip地址', ip)

输出结果如下图所示。

在这里插入图片描述



3.第三方库函数

Python作为一门开源语言,它支持各种第三方提供的开源库供我们使用。其使用第三方函数库时的具体格式为:

  • module_name.method(parametes)

表示“第三方函数名.方法(参数)”。例如httplib\httplib2库是针对HTTP和HTTPS的客户端协议,使用httplib2库函数之前,如果没有安装httplib2库会报错“ImportError: No module named httplib2”,如图2.18所示。

在这里插入图片描述

在Linux环境中,输入命令“easy_install httplib2”可以实现自动安装扩展包,Windows环境下需要安装pip或easy_install工具,再调用命令执行安装。在后续文章会讲解pip安装工具及用法,后面章节也会介绍各种第三方库函数实现数据爬取和分析操作。



四.总结

无论如何,作者都希望这篇文章能给您普及一些Python知识,更希望您能跟着我一起写代码,一起进步。如果文章能给您的研究或项目提供一些微不足道的思路和帮助,就更欣慰了。作者最大的期望就是文章中的一些故事、话语、代码或案例对您有所帮助,致那些努力奋斗的人。

最后,真诚地感谢您关注“娜璋之家”公众号,感谢CSDN这么多年的陪伴,会一直坚持分享,希望我的文章能陪伴你成长,也希望在技术路上不断前行。文章如果对你有帮助、有感悟,就是对我最好的回报,且看且珍惜!2020年8月18日建立的公众号,再次感谢您的关注,也请帮忙宣传下“娜璋之家”,哈哈~初来乍到,还请多多指教。

在这里插入图片描述

遗憾,让我们懂得完美。
逝去,让我们不断前行。
她夜色中的身姿是那么的美。

(By:娜璋之家 Eastmount 2020-09-09 夜于武汉 https://blog.csdn.net/Eastmount )

参考文献如下:
[1] 作者书籍《Python网络数据爬取及分析从入门到精通》
[2] 作者博客:https://blog.csdn.net/Eastmount
[3] https://www.runoob.com/python/python-if-statement.html

版权声明
本文为[Eastmount]所创,转载请带上原文链接,感谢
https://blog.csdn.net/Eastmount/article/details/108479670

  1. 利用Python爬虫获取招聘网站职位信息
  2. Using Python crawler to obtain job information of recruitment website
  3. Several highly rated Python libraries arrow, jsonpath, psutil and tenacity are recommended
  4. Python装饰器
  5. Python实现LDAP认证
  6. Python decorator
  7. Implementing LDAP authentication with Python
  8. Vscode configures Python development environment!
  9. In Python, how dare you say you can't log module? ️
  10. 我收藏的有关Python的电子书和资料
  11. python 中 lambda的一些tips
  12. python中字典的一些tips
  13. python 用生成器生成斐波那契数列
  14. python脚本转pyc踩了个坑。。。
  15. My collection of e-books and materials about Python
  16. Some tips of lambda in Python
  17. Some tips of dictionary in Python
  18. Using Python generator to generate Fibonacci sequence
  19. The conversion of Python script to PyC stepped on a pit...
  20. Python游戏开发,pygame模块,Python实现扫雷小游戏
  21. Python game development, pyGame module, python implementation of minesweeping games
  22. Python实用工具,email模块,Python实现邮件远程控制自己电脑
  23. Python utility, email module, python realizes mail remote control of its own computer
  24. 毫无头绪的自学Python,你可能连门槛都摸不到!【最佳学习路线】
  25. Python读取二进制文件代码方法解析
  26. Python字典的实现原理
  27. Without a clue, you may not even touch the threshold【 Best learning route]
  28. Parsing method of Python reading binary file code
  29. Implementation principle of Python dictionary
  30. You must know the function of pandas to parse JSON data - JSON_ normalize()
  31. Python实用案例,私人定制,Python自动化生成爱豆专属2021日历
  32. Python practical case, private customization, python automatic generation of Adu exclusive 2021 calendar
  33. 《Python实例》震惊了,用Python这么简单实现了聊天系统的脏话,广告检测
  34. "Python instance" was shocked and realized the dirty words and advertisement detection of the chat system in Python
  35. Convolutional neural network processing sequence for Python deep learning
  36. Python data structure and algorithm (1) -- enum type enum
  37. 超全大厂算法岗百问百答(推荐系统/机器学习/深度学习/C++/Spark/python)
  38. 【Python进阶】你真的明白NumPy中的ndarray吗?
  39. All questions and answers for algorithm posts of super large factories (recommended system / machine learning / deep learning / C + + / spark / Python)
  40. [advanced Python] do you really understand ndarray in numpy?
  41. 【Python进阶】Python进阶专栏栏主自述:不忘初心,砥砺前行
  42. [advanced Python] Python advanced column main readme: never forget the original intention and forge ahead
  43. python垃圾回收和缓存管理
  44. java调用Python程序
  45. java调用Python程序
  46. Python常用函数有哪些?Python基础入门课程
  47. Python garbage collection and cache management
  48. Java calling Python program
  49. Java calling Python program
  50. What functions are commonly used in Python? Introduction to Python Basics
  51. Python basic knowledge
  52. Anaconda5.2 安装 Python 库(MySQLdb)的方法
  53. Python实现对脑电数据情绪分析
  54. Anaconda 5.2 method of installing Python Library (mysqldb)
  55. Python implements emotion analysis of EEG data
  56. Master some advanced usage of Python in 30 seconds, which makes others envy it
  57. python爬取百度图片并对图片做一系列处理
  58. Python crawls Baidu pictures and does a series of processing on them
  59. python链接mysql数据库
  60. Python link MySQL database