Python从入门到进阶(六)——语法基础(三)

本文详细介绍了Python编程中的基本控制结构,包括顺序结构、选择结构(条件分支、单分支、双分支、多分支、嵌套和三元表达式)、循环结构(while、for和for-else),以及循环控制语句如break和continue的使用。
摘要由CSDN通过智能技术生成

控制结构

程序有三种基本控制结构:顺序结构,选择结构,循环结构

1 顺序结构

顺序结构是最简单也是最常见的一种结构,采用顺序结构的程序通常按照由前到后的顺序执行各个语句,直到程序结束.
举例如下:

a=2
b=3
c=a+b
d=c*24
print(a,b,c,d)

2 选择结构

2.1 选择结构——条件和分支

条件语句是通过判断条件是否成立,根据条件表达式的结果做出决策,控制不同代码块的执行。

  1. 条件表达式
    条件表达式由运算符和操作数组成

例如:a<4,其中a、4都是操作数,小于符号<是运算符

判断条件可以是具有布尔属性的任意元素,包括数据、变量或由变量与运算符组成的表达式,若其布尔属性为True,条件成立;若布尔属性为False,条件不成立。
除了非空常量外,Python还常使用关系操作符和成员运算符构成判断条件 。

条件表达式常用的运算符有:
算术运算符:+、-、*、/、//、%、**
关系运算符:

分类运算符操作符含义
关系运算符==等于
!=不等于
>大于
<小于
>=大于等于
<=小于等于
成员运算符in存在
not in不存在
Python支持通过保留字not、and和or对判断条件进行逻辑组合:
  • not,表示单个条件的“否”关系。如果“条件”的布尔属性为True,“not 条件”的布尔属性就为False;如果“条件”的布尔属性为False,“not 条件”的布尔属性就为True。
  • and,表示多个条件之间的“与”关系。当且仅当使用and连接的所有条件的布尔属性都为True时,逻辑表达式的布尔属性为True,否则为False。
  • or,表示多个条件之间的“或”关系。当且仅当使用or连接的所有条件的布尔属性都是False时,逻辑表达式的布尔属性为False,否则为True。

2.2 单分支选择结构

  • 若if语句中的判断条件成立,执行if语句后的代码段;
  • 若判断条件不成立,则跳过if语句后的代码段。
  • 单分支结构中的代码段只有“执行”与“跳过”两种情况。

示例:使用单分支结构判断当天是否是星期天。

day=int(input("今天是工作日吗(请输入整数1~7)?"))
if day in [1,2,3,4,5,6]:
	print("今天是工作日.")
if day in [7]:
	print("今天非工作日")	

2.3 双分支选择结构

  • 若if语句中的判断条件成立,执行代码段1
  • 若判断条件不成立,则执行代码段2
    示例:使用二分支结构判断当天是否是工作日。
day=int(input("今天是工作日吗(请输入整数1~7)?"))
if day in [1,2,3,4,5,6]:
	print("今天是工作日.")
else:
	print("今天非工作日")	

2.4 多分支选择结构

if 判断条件1:
	代码段1
elif 判断条件2:
	代码段2
... ...
elif 判断条件n:
	代码段n
else:
	代码段n+1

2.5 选择结构的嵌套

选择结构的嵌套是指选择结构的内部包含选择结构

if 判断条件1:
	代码段1
	if 判断条件2:
		代码段2
	代码段3

2.6 三元表达式

python中没有c语言中的三目运算符,但是可以通过以下的形式实现三目运算符的功能
格式:条件判断为真时的结果 if 判断条件 else 条件为假时的结果
示例:return x-1 if x>0 else x+1
等价于:

if x>0:
	x=x-1
else:
	x=x+1

我们可以利用三元表达式来实现裴波那契数列:

def fun(n):
	return n if n<2 else fun(n-1)+fun(n-2)

还有一种用法,用bool方法选择相应的值

x=1
print([2,3][bool(x)])
x=0
print([2,3][bool(x)])

结果:

3
2

数据检索
存在还是不存在,提示用户输入查询关键字,判断是否在字典中的key中,输出查询结果

def is_existed():
    database={
        "monkey":"Monkey Sun,I Written Python Words in Server Running about 5000 years."
        }
    key=input('请输入你要查询的关键字:')
    print("数据库正在努力检索中...")
    # A.
    #if database.get(key) is None:
    #    print("无法检索到该信息!")
    #else:
    #    print("* 返回:{}".format(database[key]))
    # B.
    #if database.get(key):
    #    print("*返回:{}".format(database[key])) 
    #else:
    #    print("* 无法检索到该信息!")
    # C.
    if key not in database:
        print("* 无法检索到该信息!")    
    else:
        print("* 返回:{}".format(database[key]))

if __name__ == '__main__':
    is_existed()

3 循环结构

在实际应用中有些需要重复进行的操作,可以用循环语句实现。

循环语句有:
while、do while、for

3.1 while循环

  • 若循环条件为True,则循环执行while循环中的代码段;
  • 若循环条件为False,终止while循环。
  • 若while循环的条件总是True,这种情况叫做死循环 。
    例如,使用while循环实现计算n的阶乘
def testwhile():
    n=int(input("请输入一个整数:"))
    fact=1
    i=1
    while i<=n:
        fact=fact*i
        i=i+1
    print("n!={}".format(fact))

3.2 while else循环

Python的while循环也支持使用保留字else产生分支
示例2:使用while-else循环实现计算n的阶乘

def testwhileelse():
    n=int(input("请输入一个整数:"))
    fact=1
    i=1
    print("n!计算中......")
    while i<=n:
        fact=fact*i
        i=i+1
    else:
        print("n!计算完成,循环正常结束.")
    print("n!={}".format(fact))

3.3 for循环

  • 目标可以是字符串、文件、range()函数或组合数据类型等;
  • 循环变量用于保存本次循环中访问到的遍历结构中的元素;
  • for循环的循环次数取决于遍历的目标元素个数。
    遍历字符串中的每个字符
string=input("请输入一个字符串:")
for c in string:
	print(c)

3.4 for else循环

for…else循环的具体实现形式

for 循环变量 in 目标:
	循环体
else:
	代码块

用法与while…else相同,如果循环体结束后没有碰到break语句,就会执行else语句块,如果结束之前碰到了break语句,就会跳出整个for循环,因此else语句块也就不会执行.

4 循环控制语句

在循环语句中,有时候需要达到中断循环,或者跳过本次循环,执行下次循环的情况,因此就需要有循环控制语句

python中使用break、continue语句控制循环的执行过程

break用于跳出整个循环
continue用于跳出本次循环,继续执行下次循环

4.1 break语句

while 循环条件:
	代码段1
	if 判断条件:
		break
	代码段2

for 循环变量 in 遍历结构:
	代码段1
	if 判断条件:
		break
	代码段2

4.2 continue语句

while 循环条件:
	代码段1
	if 判断条件:
		continue
	代码段2

for 循环变量 in 遍历结构:
	代码段1
	if 判断条件:
		continue
	代码段2

4.3 pass语句

保持结构完整性

Python循环的基本使用1

使用for循环打印列表信息

if __name__ == '__main__':
    list = [
        {
            "id": 966024429,
            "number": 2341,
            "title": "Question about license.",
            "body": "I would like to create a [winget](https://github.com/microsoft/winget-cli) package for jq. 🙏🏻"
        },
        {

            "id": 962477084,
            "number": 2340,
            "title": "visibility of wiki pages",
            "body": "The visibility of wiki pages to search engines is generally limited; for example, the search result for \"jq Cookbook\" looks like this:"
        }
    ]

具体如下:

 	# A.
    for i in range(len(list)):
        item=list[i]
        print(' ')
        print("## 第{}条信息".format(i))
        print("* id:{}".format(item["id"]))
        print("* number:{}".format(item['number']))
        print("* title:{}".format(item['title']))
        print("* body:{}".format(item['body']))
    # B.
    for i,item in enumerate(list):
        print('')
        print("## 第{}条信息".format(i))
        print("* id:{}".format(item["id"]))
        print("* number:{}".format(item["number"]))
        print("* title:{}".format(item["title"]))
        print("* body:{}".format(item["body"]))

    # C.
    i=0
    for item in list:
        print('')
        print("## 第{}条信息".format(i))
        print("* id:{}".format(item["id"]))
        print("* number:{}".format(item["number"]))
        print("* title:{}".format(item["title"]))
        print("* body:{}".format(item["body"]))
        i+=1

Python循环的基本使用2

使用 while 遍历,打印列表信息

if __name__ == '__main__':
    list = [
        {
            "id": 955350543,
            "number": 2337,
            "title": "Release 1.6 does not have pre-autoreconf'ed configure script",
            "body": "If you have a usage question, please ask us on either Stack Overflow (https://stackoverflow.com/questions/tagged/jq) or in the #jq channel (http://irc.lc/freenode/%23jq/) on Freenode (https://webchat.freenode.net/)."
        },
        {
            "id": 954792209,
            "number": 2336,
            "title": "Fix typo",
            "body": ""
        }
    ]

具体如下:

# A.
    it=iter(list)
    item=next(it,-1)
    i=0
    while item!=-1:
        print('')
        print("## 第{}条信息".format(i))
        print("* id:{}".format(item["id"]))
        print("* number:{}".format(item["number"]))
        print("* title:{}".format(item["title"]))
        print("* body:{}".format(item["body"]))
        item=next(it,-1)
        i+=1

    # B.
    i=0
    while i<len(list):
        item=list[i]
        print('')
        print("## 第{}条信息".format(i))
        print("* id:{}".format(item["id"]))
        print("* number:{}".format(item["number"]))
        print("* title:{}".format(item["title"]))
        print("* body:{}".format(item["body"]))
        i+=1

    # C.
    #while i in list:
    #    item=list[i]
    #    print('')
    #    print("## 第{}条信息".format(i))
    #    print("* id:{}".format(item["id"]))
    #    print("* number:{}".format(item["number"]))
    #    print("* title:{}".format(item["title"]))
    #    print("* body:{}".format(item["body"]))

    # D.
    i=0
    while True:
        item=list[i]
        print('')
        print("## 第{}条信息".format(i))
        print("* id:{}".format(item["id"]))
        print("* number:{}".format(item["number"]))
        print("* title:{}".format(item["title"]))
        print("* body:{}".format(item["body"]))
        i+=1
        if i==len(list):
            break
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值