千家信息网

怎么理解Python的控制结构

发表于:2024-11-23 作者:千家信息网编辑
千家信息网最后更新 2024年11月23日,本篇内容介绍了"怎么理解Python的控制结构"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!01 f
千家信息网最后更新 2024年11月23日怎么理解Python的控制结构

本篇内容介绍了"怎么理解Python的控制结构"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

01 for循环

for循环是Python的一种最基本的控制结构。使用for循环的一种常见模式是使用range函数生成数值范围,然后对其进行迭代。

res = range(3) print(list(res))  #输出:[0, 1, 2]
for i in range(3): print(i)  '''输出: 0 1 2 '''
  • for循环列表

使用for循环的另一种常见模式是对列表进行迭代。

martial_arts = ["Sambo","Muay Thai","BJJ"] for martial_art in martial_arts:     print(f"{ martial_art} has influenced\           modern mixed martial arts")  '''输出: Sambo has influenced modern mixed martial arts Muay Thai has influenced modern mixed martial arts BJJ has influenced modern mixed martial arts '''

02 while循环

while循环是一种条件有效就会重复执行的循环方式。while循环的常见用途是创建无限循环。在本示例中,while循环用于过滤函数,该函数返回两种攻击类型中的一种。

def attacks():     list_of_attacks = ["lower_body", "lower_body",          "upper_body"]     print("There are a total of {lenlist_of_attacks)}\           attacks coming!")     for attack in list_of_ attacks:         yield attack attack = attacks() count = 0 while next(attack) == "lower_body":     count +=1     print(f"crossing legs to prevent attack #{count}") else:     count += 1     print(f"This is not lower body attack, \ I will cross my arms for# count}")  '''输出: There are a total of 3 attacks coming! crossing legs to prevent attack #1 crossing legs to prevent attack #2 This is not a lower body attack, I will cross my arms for #3 '''

03 if/else语句

if/else语句是一条在判断之间进行分支的常见语句。在本示例中,if/elif用于匹配分支。如果没有匹配项,则执行最后一条else语句。

def recommended_attack(position):     """Recommends an attack based on the position"""     if position == "full_guard":         print(f"Try an armbar attack")     elif position == "half_guard":         print(f"Try a kimura attack")     elif position == "fu1l_mount":         print(f"Try an arm triangle")     else:         print(f"You're on your own, \          there is no suggestion for an attack")
recommended_attack("full_guard")#输出:Try an armbar attack
recommended_attack("z_guard")  #输出:You're on your own, there is no suggestion for an attack

04 生成器表达式

生成器表达式建立在yield语句的概念上,它允许对序列进行惰性求值。生成器表达式的益处是,在实际求值计算前不会对任何内容进行求值或将其放入内存。这就是下面的示例可以在生成的无限随机攻击序列中执行的原因。

在生成器管道中,诸如 "arm_triangle"的小写攻击被转换为"ARM_TRIANGLE",接下来删除其中的下划线,得到"ARM TRIANGLE"。

 def lazy_return_random_attacks():      """Yield attacks each time"""      import random      attacks = {"kimura": "upper_body",             "straight_ankle_lock": "lower_body",             "arm_triangle": "upper_body",              "keylock": "upper_body",              "knee_bar": "lower_body"}      while True:          random_attack random.choices(list(attacks.keys()))          yield random attack  #Make all attacks appear as Upper Case upper_case_attacks = \          (attack.pop().upper() for attack in \          lazy_return_random_attacks())
next(upper-case_attacks)  #输出:ARM-TRIANGLE
## Generator Pipeline: One expression chains into the next #Make all attacks appear as Upper Case upper-case_attacks =\     (attack. pop().upper() for attack in\     lazy_return_random_attacks()) #remove the underscore remove underscore =\     (attack.split("_")for attack in\     upper-case_attacks) #create a new phrase new_attack_phrase =\     (" ".join(phrase) for phrase in\     remove_underscore)
next(new_attack_phrase)  #输出:'STRAIGHT ANKLE LOCK'
for number in range(10):     print(next(new_attack_phrase))  '''输出: KIMURA KEYLOCK STRAIGHT ANKLE LOCK '''

05 列表推导式

语法上列表推导式与生成器表达式类似,然而直接对比它们,会发现列表推导式是在内存中求值。此外,列表推导式是优化的C代码,可以认为这是对传统for循环的重大改进。

martial_arts = ["Sambo", "Muay Thai", "BJJ"] new_phrases [f"mixed Martial Arts is influenced by \     (martial_art)" for martial_art in martial_arts]
print(new_phrases) ['Mixed Martial Arts is influenced by Sambo', \ 'Mixed Martial Arts is influenced by Muay Thai', \ 'Mixed Martial Arts is influenced by BJJ']

06 中级主题

有了这些基础知识后,重要的是不仅要了解如何创建代码,还要了解如何创建可维护的代码。创建可维护代码的一种方法是创建一个库,另一种方法是使用已经安装的第三方库编写的代码。其总体思想是最小化和分解复杂性。

  • 使用Python编写库

使用Python编写库非常重要,之后将该库导入项目无须很长时间。下面这些示例是编写库的基础知识:在存储库中有一个名为funclib的文件夹,其中有一个_init_ .py文件。要创建库,在该目录中需要有一个包含函数的模块。

首先创建一个文件。

touch funclib/funcmod.py

然后在该文件中创建一个函数。

"""This is a simple module""" def list_of_belts_in_bjj():     """Returns a list of the belts in Brazilian jiu-jitsu"""     belts= ["white", "blue", "purple", "brown", "black"]     return belts
import sys;sys.path.append("..") from funclib import funcmod funcmod.list_of_belts_in-bjj()  #输出:['white', 'blue', 'purple', 'brown', 'black']
  • 导入库

如果库是上面的目录,则可以用Jupyter添加sys.path.append方法来将库导入。接下来,使用前面创建的文件夹/文件名/函数名的命名空间导入模块。

  • 安装第三方库

可使用pip install命令安装第三方库。请注意,conda命令(

https://conda.io/docs/user-guide/tasks/manage-pkgs.html)是pip命令的可选替代命令。如果使用conda命令,那么pip命令也会工作得很好,因为pip是virtualenv虚拟环境的替代品,但它也能直接安装软件包。

安装pandas包。

pip install pandas

另外,还可使用requirements.txt文件安装包。

> ca requirements.txt pylint pytest pytest-cov click jupyter nbval  > pip install -r requirements.txt

下面是在Jupyter Notebook中使用小型库的示例。值得指出的是,在Jupyter Notebook中创建程序代码组成的巨型蜘蛛网很容易,而且非常简单的解决方法就是创建一些库,然后测试并导入这些库。

"""This is a simple module"""  import pandas as pd  def list_of_belts_in_bjj():     """Returns a list of the belts in Brazilian jiu-jitsu"""      belts = ["white", "blue", "purple", "brown", "black"]     return belts  def count_belts():     """Uses Pandas to count number of belts"""      belts = list_of_belts_in_bjj()     df = pd.Dataframe(belts)     res = df.count()     count = res.values.tolist()[0]     return count
from funclib.funcmod import count_belts
print(count_belts())  #输出:5

可在Jupyter Notebook中重复使用类并与类进行交互。最简单的类类型就是一个名称,类的定义形式如下。

class Competitor: pass

该类可实例化为多个对象。

class Competitor: pass
conor = Competitor() conor.name = "Conor McGregor" conor.age = 29 conor.weight = 155
nate = Competitor() nate.name = "Nate Diaz" nate.age = 30 nate.weight = 170
def print_competitor _age(object):     """Print out age statistics about a competitor"""      print(f"{object.name} is {object.age} years old")
print_competitor_age(nate)  #输出:Nate Diaz is 30 years old
print_competitor_age(conor)  #输出:Conor McGregor is 29 years old
  • 类和函数的区别

类和函数的主要区别包括:

  • 函数更容易解释。

  • 函数(典型情况下)只在函数内部具有状态,而类在函数外部保持不变的状态。

  • 类能以复杂性为代价提供更高级别的抽象。

"怎么理解Python的控制结构"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

输出 函数 循环 文件 代码 命令 生成 示例 语句 常见 方法 生成器 知识 表达式 结构 控制 接下来 内容 就是 第三方 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 水电厂安全风险数据库 新闻服务器的页面长啥样 庐阳深信服网络安全认证 陕西发表论文选哪个数据库 地理信息系统软件开发和应用 企业网络安全报告有拓扑图 http请求中的数据库事务 up软件开发 土地规划数据库 云桌面安全服务器 软件开发创业合作伙伴 联想3850服务器管理口登录 惠普服务器丢失数据 普陀区品质软件开发诚信合作 同时对服务器发送数据库 阿里服务器远程密码忘记了 数据库单条插入一张表怎么写 mysql 连接数据库慢 网络安全周怎么保护 云服务器安全防护服务运营商 规模大的软件开发公司电话 德州智慧团建软件开发电话 巴彦软件开发有限公司 全校师生同上一节网络安全课 照相机媒体服务器死机 提高网络安全知识演讲 柬埔寨正规博彩公司软件开发 数据库单条插入一张表怎么写 求职类app软件开发 北京网络技术非法牟利
0