国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - Python的控制結構之For、While、If循環問題

Python的控制結構之For、While、If循環問題

2020-07-01 10:19華章科技 Python

這篇文章主要介紹了Python的控制結構之For、While、If循環問題,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

傳統Python語言的主要控制結構是for循環。然而,需要注意的是for循環在Pandas中不常用,因此Python中for循環的有效執行并不適用于Pandas模式。一些常見控制結構如下。

  • for循環
  • while循環
  • if/else語句
  • try/except語句
  • 生成器表達式
  • 列表推導式
  • 模式匹配

所有的程序最終都需要一種控制執行流的方式。本節介紹一些控制執行流的技術。

01 for循環

for循環是Python的一種最基本的控制結構。使用for循環的一種常見模式是使用range函數生成數值范圍,然后對其進行迭代。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
res = range(3)
print(list(res))
 
#輸出:[0, 1, 2]
 
for i in range(3):
print(i)
 
'''輸出:
0
1
2
'''

for循環列表

使用for循環的另一種常見模式是對列表進行迭代。

?
1
2
3
4
5
6
7
8
9
10
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循環用于過濾函數,該函數返回兩種攻擊類型中的一種。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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語句。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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”。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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循環的重大改進。

?
1
2
3
4
5
6
7
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

然后在該文件中創建一個函數。

?
1
2
3
4
5
6
7
8
9
10
"""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文件安裝包。

?
1
2
3
4
5
6
7
8
9
> ca requirements.txt
pylint
pytest
pytest-cov
click
jupyter
nbval
 
> pip install -r requirements.txt

下面是在Jupyter Notebook中使用小型庫的示例。值得指出的是,在Jupyter Notebook中創建程序代碼組成的巨型蜘蛛網很容易,而且非常簡單的解決方法就是創建一些庫,然后測試并導入這些庫。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
"""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

該類可實例化為多個對象。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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控制結構 If、While、For內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:http://developer.51cto.com/art/202006/619865.htm

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 山岸逢花在线观看无删减 | 99精品视频在线 | av电影免费观看 | 91亚洲国产成人久久精品网站 | 亚洲午夜av久久乱码 | 日韩免费在线观看 | 龙珠z国语291集普通话 | 亚洲乱码国产乱码精品精的特点 | 久久免费视频9 | 特级西西人体444www高清大胆 | 自拍偷拍欧美 | 成人在线观看网站 | 国产午夜视频 | 在线视频一区二区 | 日韩欧美在线不卡 | 日韩精品观看 | 精品小视频 | 天天干天天看天天操 | 91精品国产成人 | 91影院在线观看 | 国产精品观看 | av中文字幕在线播放 | 久久久91| 在线观看国产一区 | 91精品啪啪| 欧美综合色 | 黄色二区 | 91成人小视频 | 国产精品一区二区av | 丁香六月av | 免费一区二区 | 精品国产乱码久久久久久影片 | 日韩中文在线视频 | 欧美日韩国产精品 | 日韩精品一区二区三区中文在线 | 欧美日韩91| 中文字幕在线观看 | 国产麻豆一区二区三区四区 | 亚洲国产精品久久久 | 永久黄网站色视频免费 | av成人一区二区 |