Python學習筆記系列之004:語句

来源:https://www.cnblogs.com/salmond/archive/2018/04/02/8689952.html
-Advertisement-
Play Games

導讀 : 1.if語句 2.while語句 一、if語句 if語句是最常用的條件控制語句,Python中的一般形式為: if 條件一: statements elif 條件二: pass # 空語句/占位語句 else: statements Python中用 elif 代替了 else if ,所 ...


導讀 :

1.if語句

2.while語句

3.for語句

4.break和continue

5.pass和else

一、if語句

if語句是最常用的條件控制語句,Python中的一般形式為:

if 條件一:

    statements

elif 條件二:

    pass # 空語句/占位語句

else:

    statements

Python中用 elif 代替了 else if ,所以if語句的關鍵字為:if - elif - else。

註意:

1、每個條件後面要使用冒號(:),表示接下來是滿足條件後要執行的語句塊。

2、使用縮進來劃分語句塊,相同縮進數的語句在一起組成一個語句塊。

3、在Python中沒有switch - case語句。

 1. if語句的三種類型

單分支

if not (a>0 and a<=50):
    print("在0到50之外....")

簡單猜數字游戲:

age_of_princal = 56
guess_age = int(   input(">>:") )

雙分支:

if guess_age == age_of_princal:
    print("yes")
else:
    print("no ")

多分支:

if guess_age == age_of_princal:
    print("Yes,you got it..")
elif guess_age > age_of_princal:
    print("shoud try samller..")
else:
    print("try bigger ...")

 

2. 案例:簡單成績等級判斷

score = int(input("score:"))
if score > 90:
    print("A")
elif score > 80:
    print("B")
elif score > 70:
    print("C")
elif score > 50:
    print("D")
else:
    print("")

 

3. if嵌套:上火車案例

ticket = 1              #1表示有車票  0表示沒有車票
knifeLenght = 48     #cm

#先判斷是否有車票
if ticket==1:
    print("通過了車票的檢測,進入到了車站,接下來要安檢了")

    #判斷刀的長度是否合法
    if knifeLenght<=10:
        print("通過了安檢,進入到了候車廳")
        print("馬上就要見到TA了,很開心.....")

    else:
        print("安檢沒有通過,等待公安處理....")

else:
    print("兄弟 你還沒有買票了,先去買票 才能進站....")

 

4. 猜拳游戲

import random

player = int(input('請輸入:剪刀(0)  石頭(1)  布(2):'))
computer = random.randint(0,2)

# 用來進行測試   #print('player=%d,computer=%d',(player,computer))

if ((player == 0) and (computer == 2)) or ((player ==1) and (computer == 0)) or ((player == 2) and (computer == 1)):
    print('獲勝,哈哈,你太厲害了')

elif player == computer:
   print('平局,要不再來一局')

else:
   print('輸了,不要走,洗洗手接著來,決戰到天亮')

 

5. 擴展:隨機數的處理

在 Python 中,要使用隨機數,首先需要導入 隨機數 的 模塊 —— “工具包”

import random

導入模塊後,可以直接在 模塊名稱 後面敲一個 . 然後按 Tab 鍵,會提示該模塊中包含的所有函數。

    random.randint(a, b) ,返回 [a, b] 之間的整數,包含 a 和 b。

例如:

random.randint(12, 20)  # 生成的隨機數n: 12 <= n <= 20   

random.randint(20, 20)  # 結果永遠是 20   

random.randint(20, 10)  # 該語句是錯誤的,下限必須小於上限。

 

二、while迴圈

1. while 語句基本語法

初始條件設置 —— 通常是重覆執行的 計數器

while 條件(判斷 計數器 是否達到 目標次數):

    條件滿足時,做的事情1

    條件滿足時,做的事情2

    ...(省略)...

    處理條件(計數器 + 1)

else:

    語句

註意冒號和縮進。另外,在Python中沒有do..while迴圈。

幾乎所有的程式語言都選擇從 0 開始計數。因此,大家在編寫程式時,應該儘量養成習慣:除非需求的特殊要求,否則 迴圈 的計數都從 0 開始。

示例

a, b = 0, 1

while b < 10: # 迴圈輸出斐波納契數列
    print(b)
    a, b = b, a+b

 

while迴圈一般通過數值是否滿足來確定迴圈的條件

 i = 0

while i<5:
    print("當前是第%d次執行迴圈"%(i+1))
    print("i=%d"%i)
    i+=1

結果:

    當前是第1次執行迴圈

    i=0

    當前是第2次執行迴圈

    i=1

    當前是第3次執行迴圈

    i=2

    當前是第4次執行迴圈

    i=3

    當前是第5次執行迴圈

    i=4

2. while迴圈嵌套

列印如下:

    *

    * *

    * * *

    * * * *

    * * * * *

第1種方法實現:

# 定義一個計數器變數,從數字1開始,迴圈會比較方便
row = 1
while row <= 5:
    print("*" * row)
    row += 1

第2種方法實現:

row = 1

while row <= 5:
    # 假設 python 沒有提供字元串 * 操作
    # 在迴圈內部,再增加一個迴圈,實現每一行的 星星 列印

    col = 1
    while col <= row:
        print("*", end="")
        col += 1

    # 每一行星號輸出完成後,再增加一個換行
    print("")  #等同於print("\n")

    row += 1

 

3. 案例

(1)計算1~100的累積和(包含1和100)

i = 1
sum = 0

while i<=100:
    sum = sum + i
    i += 1

print("1~100的累積和為:%d"%sum)

(2)計算1~100之間偶數的累積和(包含1和100)

i = 1
sum = 0

while i<=100:
    if i%2 == 0:
        sum = sum + i
    i+=1

print("1~100的累積和為:%d"%sum)

(3)列印九九乘法表

第1種方法:

row = 1

while row <= 9:

    col = 1
    while col <= row:
        # end = "",表示輸出後,不換行
        # "\t" 可以在控制台輸出一個製表符,協助在輸出文本時對齊

        print("%d * %d = %d" % (col, row, row * col), end="\t")
        col += 1

    # 一行列印完成的換行
    print("")

    row += 1

第2種方法:

    row = 1

    while row<=9:

        col=1
        while col<=row:
            print("%d*%d=%-2d "%(col,row,row*col),end='')
            col+=1

        print('')

        row+=1

結果:

1*1=1

1*2=2   2*2=4

1*3=3   2*3=6   3*3=9

1*4=4   2*4=8   3*4=12  4*4=16

1*5=5   2*5=10  3*5=15  4*5=20  5*5=25

1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36

1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49

1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64

1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81

 

4. print函數擴展

在預設情況下,print 函數輸出內容之後,會自動在內容末尾增加換行;

如果不希望末尾增加換行,可以在 print 函數輸出內容的後面增加 , end=""

其中 "" 中間可以指定 print 函數輸出內容之後,繼續希望顯示的內容 。

語法格式如下

# 向控制台輸出內容結束之後,不會換行

print("*", end="")

# 單純的換行

print("")

end="" 表示向控制台輸出內容結束之後,不會換行

 

三、for迴圈

1. for迴圈基本語法

for迴圈一般是對能保存多個數據的變數,進行遍歷。

Python中的for語句與C語言中的for語句有點不同:C語言中的for語句允許用戶自定義迭代步驟和終止條件;而Python的for語句可以遍歷任何序列(sequence),按照元素在序列中的出現順序依次迭代。一般形式為:

for variable in sequence:

    statements

else:

    statements

示例

words = ['cat','love','apple','python','friends']

for item in words:

    print(item, len(item))

 

如果你需要在迴圈體內修改你正 迭代的序列,你最好是製作一個副本,這時切片標記就非常有用了:

words = ['cat','love','apple','python','friends']

for item in words[:]: # 製作整個列表的切片副本
    if len(item) >= 6:
        words.insert(0, item)

print(words)

我們註意到迴圈語句中還可以使用 else子句 ,下麵有講到。

demo1

name = 'dongGe'

for x in name:

    print(x)

結果:

d

o

n

g

G

e

demo2:

name = ''

for x in name:
    print(x)
else:
    print("沒有數據")

結果:

沒有數據

 

2. 應用場景

在 迭代遍歷 嵌套的數據類型時,例如 一個列表包含了多個字典。(關於字典之後會講到)

需求:要判斷 某一個字典中 是否存在 指定的 值:

       如果 存在,提示並且退出迴圈;

       如果 不存在,在 迴圈整體結束 後,希望 得到一個統一的提示.

students = [
    {"name": "阿土",
     "age": 20,
     "gender": True,
     "height": 1.7,
     "weight": 75.0},
    {"name": "小美",
     "age": 19,
     "gender": False,
     "height": 1.6,
     "weight": 45.0},
]

find_name = "阿土"

for stu_dict in students:
    print(stu_dict)
    # 判斷當前遍歷的字典中姓名是否為find_name
    if stu_dict["name"] == find_name:
        print("找到了")
        # 如果已經找到,直接退出迴圈,就不需要再對後續的數據進行比較
        break
else:
    print("沒有找到")

print("迴圈結束")

輸出結果:

{'gender': True, 'weight': 75.0, 'name': '阿土', 'height': 1.7, 'age': 20}

finded

finish

 

3. 擴展:range函數

如果你要遍歷一個數字序列,那麼內置的range()函數就可以派上用場了。函數range()常用於for迴圈中,用於產生一個算術數列:

>>> list(range(10)) # 預設從0開始
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

>>> list(range(1, 11)) # 從1到11, 前閉後開
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

>>> list(range(0, 30, 5)) # 5表示步長, 每隔5取一個數
[0, 5, 10, 15, 20, 25]

示例:(試一下以下代碼的運行結果)

for i in range(2, 11):
    print(i)

 

四、break和continue

break 某一條件滿足時,退出迴圈,不再執行後續重覆的代碼。

continue 某一條件滿足時,不執行後續重覆的代碼 。

break/continue只能用在迴圈中, 除此以外不能單獨使用。

break/continue在嵌套迴圈中, 只對最近的一層迴圈起作用,即只對 當前所在迴圈 有效。

break的作用:

用來結束整個迴圈。

帶有break的迴圈示例如下:

i = 0

while i<5:
    i = i+1
    print('----')
    if i==3:
        break
    print(i)
else:
    print("==while迴圈過程中,如果沒有執行break退出,則執行本語句==")

運行結果:

----
1
----
2
----

for in 遍歷示例如下:

name = 'salmond'

for x in name:
    print('----')
    if x == 'm': 
        break
    print(x)
else:
    print("==for迴圈過程中,如果沒有執行break退出,則執行本語句==")

運行結果:

----
s
----
a
----
l
----

continue的作用

用來結束本次迴圈,緊接著執行下一次的迴圈。

帶有continue的迴圈示例如下:

i = 0

while i<5:
    i = i+1
    print('----')
    if i==3:
        continue
    print(i)

運行結果:

----
1
----
2
----
----
4
----
5

for in 遍歷示例如下:

name = 'salmond'

for x in name:
    print('----')
    if x == 'm': 
        continue
    print(x)
else:
    print("==while迴圈過程中,如果沒有break則執行==")

試著預想以下上面代碼的執行效果,然後實際運行以下。

 

五、pass和else子句

pass

pass語句什麼都不做,它只在語法上需要一條語句但程式不需要任何操作時使用。pass語句是為了保持程式結構的完整性。

else子句

在迴圈語句中還可以使用 else子句 ,else子句在序列遍歷結束(for語句)或迴圈條件為假(while語句)時執行,但迴圈被break終止時不執行:

# 迴圈結束執行else子句

for i in range(2, 11):
    print(i)
else:
    print('for statement is over.')

# 被break終止時不會執行else子句

for i in range(5):
    if(i == 4):
        break;
    else:
        print(i)

else:
    print('for statement is over') # 不會輸出

 

六、練習題:語句

1. 使用if,編寫程式,實現以下功能

_ 從鍵盤獲取用戶名、密碼

_ 如果用戶名和密碼都正確(預先設定一個用戶名和密碼),那麼就顯示“歡迎進入xxx的世界”,否則提示密碼或者用戶名錯誤

 

2.BMI 計算

輸入一個人的身高(m)和體重(kg),根據BMI公式(體重除以身高的平方)計算他的BMI指數。

* 例如:一個52公斤的人,身高是155cm,則BMI為 :`52(kg)/1.55^2(m)= 21.6`

* BMI指數:
```
低於18.5:過輕
18.5-25:正常
25-28:過重
28-32:肥胖
高於32:嚴重肥胖
```

3.個人所得稅

編寫一個程式計算個人所得稅(以下為個人所得稅稅率表,3500元起徵):
```
應納稅所得額(含稅) 稅率(%)
不超過1500元的 3
超過1500元至4,500元的部分 10
超過4,500元至9,000元的部分 20
超過9,000元至35,000元的部分 25
超過35,000元至55,000元的部分 30
超過55,000元至80,000元的部分 35
超過80,000元的部分 45
```

 

 

寫給小白的Python之004:數據類型之字元串練習題答案

現有字元串num_str = "0123456789",請分別對num_str按下列要求操作:

# 1. 截取從 2 ~ 5 位置 的字元串
print(num_str[2:6])

# 2. 截取從 2 ~ `末尾` 的字元串
print(num_str[2:])

# 3. 截取從 `開始` ~ 5 位置 的字元串
print(num_str[:6])

# 4. 截取完整的字元串
print(num_str[:])

# 5. 從開始位置,每隔一個字元截取字元串
print(num_str[::2])

# 6. 從索引 1 開始,每隔一個取一個
print(num_str[1::2])

# 倒序切片
# -1 表示倒數第一個字元
print(num_str[-1])

# 7. 截取從 2 ~ `末尾 - 1` 的字元串
print(num_str[2:-1])

# 8. 截取字元串末尾兩個字元
print(num_str[-2:])

# 9. 字元串的逆序
print(num_str[::-1])
# print(aStr[-1::-1])

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 一、vue介紹 + vue類似於高級的模版引擎 + vue的核心思想就是:數據驅動視圖 MVVM 1. 每一個vue程式都是以 new Vue()開始的 2. 每一項vue實例都接收一個選項對象來配置vue應用 3. 選項的 el 屬性用來高數 vue的啟動入口節點 + 入口節點中所有的節點就可以使 ...
  • HTML5和CSS3技術是目前整個網頁的基礎。《HTML5與CSS3實例教程(第2版)》共分3部分,集中討論了HTML5和CSS3規範及其技術的使用方法。這一版全面講解了最新的HTML5和CSS3技術,所有實例均使用最新特性實現,針對的是最新版本的瀏覽器。 《HTML5與CSS3實例教程(第2版)》 ...
  • 一、jQuery($)命名空間 為了避免聲明瞭一些全局變數造成變數污染,使用立即執行函數形成jQuery($)獨立的命名空間; 二、jQuery的本質是什麼? 由jQuery的源碼可知,jQuery的本質是一個函數(對象),是函數就應該有原型(prototype對象),但是,jQuery重置了該原型 ...
  • 創建一個函數,接受兩個或多個數組,返回所給數組的 對等差分(symmetric difference) (△ or ⊕)數組. 創建一個函數,接受兩個或多個數組,返回所給數組的 對等差分(symmetric difference) (△ or ⊕)數組. 給出兩個集合 (如集合 A = {1, 2, ...
  • jQury Mobile是以全球最流行的jQuery為核心的跨平臺移動Web應用開發框架,自從誕生以來,就贏得了業內專家和技術社區的強烈關註。《jQuery Mobile入門經典》採用直觀、循序漸進的方法講解瞭如何藉助jQuery Mobile,通過一個單一的代碼庫來創建適合各種移動設備的移動應用。 ...
  • 設計模式簡介: 設計模式是一套被反覆使用的、多數人知曉的、經過分類編目的、代碼設計經驗的總結。(個人理解:設計模式是不關乎業務,邏輯實現,針對普遍問題的一種解決方案)。 設計模式的類型: 傳統23種設計模式可分為3大類:創建型模式(Creational Patterns)、結構型模式(Structu ...
  • 【Java】0x01 配置開發環境,JDK、CLASSPATH等 一. 下載JDK安裝文件 首先,進入Oracle官網Java頁面。 註意,要下載的是JDK而不是JRE,這點很重要,因為JRE並不包含我們要用的源碼編譯之類的工具。 當前JDK最新版本為Java10,但如今主流的運行環境還是1.7、1 ...
  • Description 小Q的媽媽是一個出納,經常需要做一些統計報表的工作。今天是媽媽的生日,小Q希望可以幫媽媽分擔一些工 作,作為她的生日禮物之一。經過仔細觀察,小Q發現統計一張報表實際上是維護一個可能為負數的整數數列,並 且進行一些查詢操作。在最開始的時候,有一個長度為N的整數序列,並且有以下三 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...