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

简介: 欢迎大家来到“Python从零到壹”,在这里我将分享约200篇Python系列文章,带大家一起去学习和玩耍,看看Python这个有趣的世界。所有文章都将结合案例、代码和作者的经验讲解,真心想把自己近十年的编程经验分享给大家。本文主要介绍Python语法基础知识,包括条件语句、循环语句和函数。

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

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

本文对应源代码如下:

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

@[toc]


一.条件语句

在讲诉条件语句之前,需要先补充语句块的知识。语句块并非一种语句,它是在条件为真时执行一次或执行多次的一组语句,在代码前放置空格缩进即可创建语句块。它类似于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知识,更希望您能跟着我一起写代码,一起进步。如果文章能给您的研究或项目提供一些微不足道的思路和帮助,就更欣慰了。作者最大的期望就是文章中的一些故事、话语、代码或案例对您有所帮助,致那些努力奋斗的人。

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

原文地址:https://blog.csdn.net/Eastmount/article/details/108479670

(By:娜璋之家 Eastmount 2020-12-07 夜于武汉 )

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

相关文章
|
1天前
|
开发者 Python
Python入门:8.Python中的函数
### 引言 在编写程序时,函数是一种强大的工具。它们可以将代码逻辑模块化,减少重复代码的编写,并提高程序的可读性和可维护性。无论是初学者还是资深开发者,深入理解函数的使用和设计都是编写高质量代码的基础。本文将从基础概念开始,逐步讲解 Python 中的函数及其高级特性。
Python入门:8.Python中的函数
|
1月前
|
存储 人工智能 Python
[oeasy]python061_如何接收输入_input函数_字符串_str_容器_ 输入输出
本文介绍了Python中如何使用`input()`函数接收用户输入。`input()`函数可以从标准输入流获取字符串,并将其赋值给变量。通过键盘输入的值可以实时赋予变量,实现动态输入。为了更好地理解其用法,文中通过实例演示了如何接收用户输入并存储在变量中,还介绍了`input()`函数的参数`prompt`,用于提供输入提示信息。最后总结了`input()`函数的核心功能及其应用场景。更多内容可参考蓝桥、GitHub和Gitee上的相关教程。
16 0
|
1月前
|
Python
[oeasy]python057_如何删除print函数_dunder_builtins_系统内建模块
本文介绍了如何删除Python中的`print`函数,并探讨了系统内建模块`__builtins__`的作用。主要内容包括: 1. **回忆上次内容**:上次提到使用下划线避免命名冲突。 2. **双下划线变量**:解释了双下划线(如`__name__`、`__doc__`、`__builtins__`)是系统定义的标识符,具有特殊含义。
32 3
|
1月前
|
JSON 监控 安全
深入理解 Python 的 eval() 函数与空全局字典 {}
`eval()` 函数在 Python 中能将字符串解析为代码并执行,但伴随安全风险,尤其在处理不受信任的输入时。传递空全局字典 {} 可限制其访问内置对象,但仍存隐患。建议通过限制函数和变量、使用沙箱环境、避免复杂表达式、验证输入等提高安全性。更推荐使用 `ast.literal_eval()`、自定义解析器或 JSON 解析等替代方案,以确保代码安全性和可靠性。
45 2
|
2月前
|
数据可视化 DataX Python
Seaborn 教程-绘图函数
Seaborn 教程-绘图函数
87 8
|
2月前
|
Python
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
Python中的函数是**一种命名的代码块,用于执行特定任务或计算
64 18
|
2月前
|
Python
Python中的函数
Python中的函数
62 8
|
23天前
|
存储 缓存 Java
Python高性能编程:五种核心优化技术的原理与Python代码
Python在高性能应用场景中常因执行速度不及C、C++等编译型语言而受质疑,但通过合理利用标准库的优化特性,如`__slots__`机制、列表推导式、`@lru_cache`装饰器和生成器等,可以显著提升代码效率。本文详细介绍了这些实用的性能优化技术,帮助开发者在不牺牲代码质量的前提下提高程序性能。实验数据表明,这些优化方法能在内存使用和计算效率方面带来显著改进,适用于大规模数据处理、递归计算等场景。
58 5
Python高性能编程:五种核心优化技术的原理与Python代码
|
2月前
|
Python
[oeasy]python055_python编程_容易出现的问题_函数名的重新赋值_print_int
本文介绍了Python编程中容易出现的问题,特别是函数名、类名和模块名的重新赋值。通过具体示例展示了将内建函数(如`print`、`int`、`max`)或模块名(如`os`)重新赋值为其他类型后,会导致原有功能失效。例如,将`print`赋值为整数后,无法再用其输出内容;将`int`赋值为整数后,无法再进行类型转换。重新赋值后,这些名称失去了原有的功能,可能导致程序错误。总结指出,已有的函数名、类名和模块名不适合覆盖赋新值,否则会失去原有功能。如果需要使用类似的变量名,建议采用其他命名方式以避免冲突。
52 14
|
2月前
|
分布式计算 大数据 数据处理
技术评测:MaxCompute MaxFrame——阿里云自研分布式计算框架的Python编程接口
随着大数据和人工智能技术的发展,数据处理的需求日益增长。阿里云推出的MaxCompute MaxFrame(简称“MaxFrame”)是一个专为Python开发者设计的分布式计算框架,它不仅支持Python编程接口,还能直接利用MaxCompute的云原生大数据计算资源和服务。本文将通过一系列最佳实践测评,探讨MaxFrame在分布式Pandas处理以及大语言模型数据处理场景中的表现,并分析其在实际工作中的应用潜力。
116 2

热门文章

最新文章

推荐镜像

更多