Python流程控制基礎
1.條件語句
內置函數input
a = input("請輸入一段內容:")
print(a)
print(type(a))
代碼執行的時候遇到input函數,就會等鍵盤輸入結果,已回車為結束標志,也就時說輸入回車后代碼才會執行
2.順序執行
Python代碼在執行過程中,遵循下面的基本原則:
普通語句,直接執行;
碰到函數,將函數體載入內存,并不直接執行
碰到類,執行類內部的普通語句,但是類的方法只載入,不執行
碰到if、for等控制語句,按相應控制流程執行
碰到@,break,continue等,按規定語法執行
碰到函數、方法調用等,轉而執行函數內部代碼,執行完畢繼續執行原有順序代碼
Python代碼塊
Python以縮進來標記代碼塊,代碼塊必須要縮進,沒有縮進不是代碼塊。另外,同一代碼塊的縮進量要相同,縮進量不同的不屬于同一代碼塊。
1.不要忘記縮進
if、elif、else后面的代碼塊一定要縮進,而且縮進量要大于if、elif、else本身。
先說明一個反面教材
age = input("請輸入您的名字:")
if age < 18 :
print("警告你還未成年,不能進入網吧")
else:
print("你已經成年,歡迎光臨")IndentationError: expected an indented block after 'if' statement on line 95
縮進錯誤:第95行的“if”語句后應出現縮進塊不縮進的話,就不能構成if、else執行體
2.縮進多少??
Python要求代碼塊必須縮進,但是卻沒有要求縮進量,你可以縮進n個空格,也可以縮進n個Tab鍵的位置。但是從編程習慣的角度看,我建議縮進1個Tab鍵的位置,或者縮進4個空格;它們兩者其實是等價的,很多編輯器都可以將Tab鍵設置為4個空格
3.所有的語句都需要縮進
age = int(input("請輸入您的年齡:"))
if age < 18 :print("你還未成年,建議在家人陪同下使用該軟件!")
print("未成年人如果得到了家長的同意,請忽略以上提示。") #此行忘記縮進
用戶輸入年齡已超過18,但卻出現了“未成年人”提示,好尷尬~~。因為第二個print語句沒有縮進,if沒有把它和第一個print語句當做同一個代碼塊,只要把第二個print語句同樣縮進4個空格即可。
4.同一代碼塊需要縮進相同
age = int(input("請輸入您的年齡:"))
if age < 18 :print("你還未成年,建議在家人陪同下使用該軟件!")print("未成年人如果得到了家長的同意,請忽略以上提示。") #此行忘記縮進
還是上面的示例,第二語句縮進比第一語句縮進多了系統也會提示錯誤。
位于同一代碼塊的所有語句必須擁有相同的縮進量,多一個或少一個空格都不行
5.不要隨便縮進
另外需要注意的是,不需要使用代碼塊的地方千萬不要縮進,一旦縮進就會產生一個 代碼塊。
下面的代碼是一個反面教材:
info = "Python 教程的網址是:http://c.biancheng.net/python/"print(info)
這兩條簡單的語句沒有包含分支、循環、函數、類等結構,不應該使用縮進。
理解if語句和語句塊
if語句是一種分支語句,用于判斷條件是否成立,如果條件成立則執行相應的代碼,否則不執行,if語句通常的語法形式如下:
num = int(input("請輸入一個整數:"))
if num % 2 == 0:print("您輸入的是偶數")
if語句不需要只有一個語句,它可以有一個塊,一個塊可以是多個語句。
num = int(input("請輸入一個整數:"))
if num % 2 == 0:print("您輸入的是偶數")print("您輸入的是偶數")print("您輸入的是偶數")print("您輸入的是偶數")
1.if單分支語句
if語句用于基于某個條件執行代碼塊。當您只關心一個條件并且只想在該條件為真時執行代碼時,您可以使用單分支的if語句
x = 10
if x > 5:print("x比5大")
上面示例,我們定義了一個變量x并將其設置為10,然后,我們使用if語句檢查x是否大于5.因為x的值大于5,所以if語句的代碼塊會被執行。
2.if單分支例子
num = 66
if num > 0 :print("這是一個整數")
- 定義一個變量num,并賦值為66。
- 使用if語句檢查num是否大于0。
- 如果num大于0,程序將執行if語句塊內的代碼。
- 在if語句塊內,使用print函數輸出字符串"這是一個正數."。
- 當你運行這段代碼時,由于num的值為66,大于0,因此程序會輸出"這是一個正數."
3.if單分支語句擴展
if else子句
如果我們想要有條件地執行兩種不同的代碼塊,可以使用if-else語句
num = int(input("請輸入一個整數:"))
if num % 2 == 0:print("您輸入的是偶數")
else:print("您輸入的是奇數"
#引入os標準模塊
import os
#os.name方法,返回操作系統類型,賦值給變量s1
s1 = os.name
#如果s1等于nt,則執行符語句塊中的內容
if s1 == 'nt':print(f"The current os is {s1}.")
elif s1 == 'posix':print("The is Linxu")
root@localhost:/home/scrpict/py# python
Python 3.9.18 (main, Jan 24 2024, 00:00:00)
[GCC 11.4.1 20231218 (Red Hat 11.4.1-3)] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.name
'posix'
>>> exit()
root@localhost:/home/scrpict/py# cat /etc/os-release
NAME="CentOS Stream"
VERSION="9"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="9"
PLATFORM_ID="platform:el9"
PRETTY_NAME="CentOS Stream 9"
ANSI_COLOR="0;31"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:centos:centos:9"
HOME_URL="https://centos.org/"
BUG_REPORT_URL="https://issues.redhat.com/"
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux 9"
REDHAT_SUPPORT_PRODUCT_VERSION="CentOS Stream"
root@localhost:/home/scrpict/py# cat /etc/os-release | grep -E '^NAME|^VERSION'
NAME="CentOS Stream"
VERSION="9"
VERSION_ID="9"
root@localhost:/home/scrpict/py# cat /etc/os-release | grep -E '^NAME|^VERSION' | grep -v ID
NAME="CentOS Stream"
VERSION="9"
root@localhost:/home/scrpict/py# cat /etc/os-release | grep -E '^NAME|^VERSION' | grep -v ID |awk -F"=" '{print $1}'
NAME
VERSION
root@localhost:/home/scrpict/py# cat /etc/os-release | grep -E '^NAME|^VERSION' | grep -v ID |awk -F"=" '{print $2}'
"CentOS Stream"
"9"
root@localhost:/home/scrpict/py# cat /etc/os-release | grep -E '^NAME|^VERSION' | grep -v ID |awk -F"=" '{print $2}' | sed 's@"@@g'
CentOS Stream
9
root@localhost:/home/scrpict/py# cat /etc/os-release | grep -E '^NAME|^VERSION' | grep -v ID |awk -F"=" '{print $2}' | sed 's@"@@g' | column
CentOS Stream 9root@localhost:/home/scrpict/py# os_type=`cat /etc/os-release | grep -E '^NAME|^VERSION' | grep -v ID |awk -F"=" '{print $2}' | sed 's@"@@g' | column`
root@localhost:/home/scrpict/py# echo $os_type
CentOS Stream 9
root@localhost:/home/scrpict/py# echo $os_type | tr -d " "
CentOSStream9
root@localhost:/home/scrpict/py# os_type=$(echo $os_type | tr -d " ")
root@localhost:/home/scrpict/py# echo $os_type
CentOSStream9
檢查變量d是否有某個鍵
d = {"a": 1}
key = "a"
if isinstance(d, dict) and key in d:print(f"字典含有鍵'{key}'")
else: print(f"字典不含有鍵'{key}'"
4.if-elif-else 語句
我們需要根據多個條件進行判斷,此時可以使用 if-elif-else 語句
age = int(input("請輸入這個人的年齡:"))
if age<12:print("還沒上初中")
elif 12 <= age < 15:print("他是一個初中生")
elif 15 <= age < 18:print("他是一個高中生")
elif 18 <= age < 22:print("他是大學生")
else:print("他已經畢業踏入社會了")
if多分支語句
1.elif多分支多條件語句
判斷數字num是正數還是負數
num = int(input("請輸入一個數字:"))
if num > 0:print("這是一個正數")
elif num < 0:print("這是一個負數")
2.if…elif…else子句
age = int(input("請輸入你的年齡 :"))
if age >= 18:print("你已成年。")
else:print("你還未成年。")