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 9
root@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("你还未成年。")