您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

一文看懂Python的控制结构:for、while、if…都有了

5b51 2022/1/14 8:19:50 python 字数 23836 阅读 418 来源 www.jb51.cc/python

传统Python语言的主要控制结构是for循环。然而,需要注意的是for循环在Pandas中不常用,因此Python中for循环的有效执行并不适用于Pandas模式。一些常见控制结构如下。for循环while循环if/else语句try/except语句生成器表达式列表推导式模式匹配所有的程序最终都需要一种控制执行流的方

概述


所有的程序最终都需要一种控制执行流的方式。本节介绍一些控制执行流的技术。

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循环的另一种常见模式是对列表进行迭代。

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
'''
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
'''
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
 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
'''
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']


使用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
> ca requirements.txt
pylint
pytest
pytest-cov
click
jupyter
nbval

> pip install -r requirements.txt
"""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的控制结构:for、while、if…都有了全部内容,希望文章能够帮你解决一文看懂Python的控制结构:for、while、if…都有了所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶