Python急速入门——(第四章:程序结构)

2023-12-15 00:54:59


1.顺序结构


我们可以通过调试,来观察程序执行的顺序。(运行环境:pycharm)

在这里插入图片描述

点击小虫子后,点击下一步,不断调试。

在这里插入图片描述

可以发现,程序是按照顺序,从上向下执行的,这就是顺序结构。


2.对象的布尔值


Python中一切皆为对象,所有对象都有一个布尔值。获取对象的布尔值使用内置函数bool()

以下对象的布尔值为False:

  • False、数值0、None、空字符串、空列表、空元组、空字典、空集合。

代码示例:

# 测试对象的布尔值
print('---------------以下对象的布尔值均为False---------------')
print(bool(False)) # False -- False
print(bool(0)) # 0 -- False
print(bool(0.0)) # 数字0 -- False
print(bool(None)) # None -- False
print(bool('')) # 空字符串 -- False
print(bool("")) # 空字符串 -- False
print(bool([])) # 空列表 -- False
print(bool(list())) # 空列表 -- False
print(bool(())) # 空元组 -- False
print(bool(tuple())) # 空元组 -- False
print(bool({})) # 空字典
print(bool(dict())) # 空字典
print(bool(set())) # 空集合

print('------------------其他对象的布尔值均为True----------------------')
print(bool(1))
print(bool('hello world'))
print(bool(True))

输出:

---------------以下对象的布尔值均为False---------------
False
False
False
False
False
False
False
False
False
False
False
False
False
------------------其他对象的布尔值均为True----------------------
True
True
True

3.分支结构


1.单分支结构

语法结构:

if 条件表达式
	条件执行体

例:

num = 10
if num > 0:
	print(num, '大于 0')

输出:

10 大于 0

2.双分支结构:

语法结构:

if 条件表达式
	条件执行体1
else
	条件执行体2

例:

# 双分支结构
money = 1000 # 有1000块钱存款
s = int(input('请输入取款金额:')) # 要取走多少钱
if money >= s:
    money -= s
    print('取款成功,余额为:', money)
else:
    print('取款失败,余额不足')

输出1:(200是我们输入的数据)

请输入取款金额:200
取款成功,余额为: 800

输出2:

请输入取款金额:1200
取款失败,余额不足

3.多分支结构:

语法结构:

if 条件表达式1:
	条件执行体1
elif 条件表达式2:
	条件执行体2
elif 条件表达式N:
	条件执行体N
[else:] # []括起来的内容可写可不写
	条件执行体N+1

例:

# 多分支结构
'''
多选一执行
判断成绩的好坏:(整数)
90-100 A
80-89 B
70-79 C
60-69 D
0-59 E
大于100或小于0为非法数据
'''

score = int(input('请输入成绩:'))
if score >= 90 and score <= 100:
	print('A')
elif score >= 80 and score <= 89:
	print('B')
elif score >= 70 and score <= 79:
	print('C')
elif score >= 60 and score <= 69:
	print('D')
elif score >= 0 and score <= 59:
	print('E')
else:
	print('输入数据非法')

认识一下Python中的优雅写法:

score = int(input('请输入成绩:'))
if 90 <= score <= 100:
    print('A')
elif 80 <= score <= 89:
    print('B')
elif 70 <= score <= 79:
    print('C')
elif 60 <= score <= 69:
    print('D')
elif 0 <= score <= 59:
    print('E')
else:
    print('输入数据非法')

不同于C和C++,Python中可以直接使用数学中的写法:90 <= score <= 100

4.嵌套if:

语法结构:

if 条件表达式1:
	if 内层条件表达式2:
		内层条件执行体1
	else:
		内层条件执行体2
else:
	条件执行体

例:

'''
买东西,会员的折扣和非会员的折扣不一样
    会员 200<=money 5折
        100<=money<200 8折
        money<100 不打折
    非会员 200<=money 8折
        100<=money<200 9.5折
        money<100 不打折
'''

answer = input('您是会员吗?是/否:')
money = int(input('您一共消费的金额是:'))
if answer == '是':
    print('享受会员优惠')
    if 200 <= money:
        print('您实际消费', money*0.5, '元')
    elif 100 <= money < 200:
        print('您实际消费', money*0.8, '元')
    elif money < 100:
        print('您实际消费', money, '元')
else:
    print('不享受会员优惠')
    if 200 <= money:
        print('您实际消费', money*0.8, '元')
    elif 100 <= money < 200:
        print('您实际消费', money*0.95, '元')
    elif money < 100:
        print('您实际消费', money, '元')

5.条件表达式:

条件表达式是if…else的简写。

语法结构:x if 判断条件 else y

运算规则:如果判断条件的布尔值为True,条件表达式的返回值为x,否则条件表达式的返回值为y。

例:

'''比较两个数的大小'''
num_a = int(input('请输入第一个数:'))
num_b = int(input('请输入第二个数:'))
print(str(num_a) + '大于等于' + str(num_b) if num_a >= num_b else str(num_a) + '小于' + str(num_b))

6.pass语句:

作用:语句什么都不做,只是一个占位符,用在语法上需要语句的地方。

使用场景:先搭建语法结构,还没想好代码怎么写的时候。

与哪些代码一起用?

  • if语句条件执行体
  • for-in语句的循环体
  • 定义函数时的函数体

例:

# pass 语句
'''什么都不做,只是一个站位符,用在需要写语句的地方'''
answer = input('您是会员吗?是/否:')
money = int(input('您一共消费的金额是:'))
if answer == '是':
    pass
else:
    pass

4.循环结构


4.1内置函数range()


1.作用:用于生成一个整数序列。

2.创建range对象的三种方式:

1)range(stop)

创建一个[0,stop)之间的整数序列,步长为1。

"""第一种方式,只给了一个参数,小括号中只有一个数"""
r = range(10) # 默认从0开始,到10结束,步长默认为1
print(r) # 返回值是一个迭代器对象,我们看不到range中的具体数据
print(list(r)) # 用list查看range对象中的整数序列 --> list是列表的意思

输出:

range(0, 10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

2)range(start, stop)

创建一个[start,stop)之间的整数序列,步长为1。

'''第二种方式,给了两个参数,第一个数是start,第二个数是stop'''
r = range(1, 10) # 指定从1开始,到10结束(不包括10),默认步长是1
print(r) # range(1, 10)
print(list(r)) # [1, 2, 3, 4, 5, 6, 7, 8, 9]

输出:

range(1, 10)
[1, 2, 3, 4, 5, 6, 7, 8, 9]

3)range(start, stop, step)

创建一个[start,stop)之间的整数序列,步长为step

'''第三种方式,给了三个参数,第一个是start,第二个是stop,第三个是step'''
r = range(1, 10, 3) # 指定从1开始,到10结束(不包括10),指定步长是3
print(r) # range(1, 10, 3)
print(list(r)) # [1, 4, 7]

输出:

range(1, 10, 3)
[1, 4, 7]

3.range()函数的返回值是一个迭代器对象(你看不到range中的具体数据)。

4.range类型的优点:

不管range对象表示的整数序列有多长,所有range对象占用的内存空间都是相同的,因为仅仅需要存储start,stopstep,只有当用到range对象时,才会去计算序列中的相关元素。

5.用in和not in来判断整数序列中是否存在指定的整数:

'''判断整数序列中是否存在指定的整数 in,not in'''
print(10 in r) # False
print(4 in r) # True
print(10 not in r) # True
print(4 not in r) # False

输出:

False
True
True
False

4.2while循环


1.语法结构:

while 条件表达式:
	条件执行体(循环体)

例:

a = 1 # 初始化判断
while a < 10: # 判断
    print(a) # 打印a
    a += 1 # 调整

输出:

1
2
3
4
5
6
7
8
9

2.选择结构的if与循环结构while的区别

  • if是判断一次,条件为True执行一次
  • while是判断N+1次,条件为True执行N次

3.实际应用:

'''while循环四步走
1.初始化变量
2.条件判断
3.条件执行体(循环体)
4.改变变量
总结:初始化,判断,改变的变量是同一个变量
'''

# 计算1-100的累加和
sum = 0 # sum记录和
n = 1
while n <= 100:
    sum += n
    n += 1
print('和为', sum)

输出:

5050

4.练习:

# 求1-100之间的偶数和

sum = 0
n = 1
while n <= 100:
    if not bool(n % 2):
        sum += n
    n = n + 1
print(sum)

分析:

0的布尔值为False,如果一个数对2取余结果是0,说明它是偶数;是偶数就执行if语句中的执行体,那么条件表达式的值应该为True;所以可以对n % 2逻辑取反。


4.3for-in循环


1.介绍:

  • in表达从(字符串、序列等)中依次取值,又称为遍历。
  • for-in遍历的对象必须是可迭代对象(目前接触到的可迭代对象有两个,一个是字符串,一个是序列)。

2.语法结构:

for 自定义的变量 in 可迭代对象:
	循环体

例1:

"""依次把Python取出,赋值给item"""
for item in 'Python':
    print(item)

输出:

P
y
t
h
o
n

例2:

# range()产生整数数列,也是一个可迭代对象
for i in range(10):
    print(i)

输出:

0
1
2
3
4
5
6
7
8
9

3.循环体内不需要访问自定义变量,可以将自定义变量替代为下划线

# 如果在循环体中用不到自定义变量,可以用"_"代替
for _ in range(5):
    print("Python")

输出:

Python
Python
Python
Python
Python

4.练习:

print('用for循环计算1-100之间的偶数的累加和')
sum = 0 # 用来记录累加和
for i in range(1, 101): # 整数序列为1-100
    if not bool(i % 2):
        sum += i
print(sum)

输出:

用for循环计算1-100之间的偶数的累加和
2550

5.打印100-999之间的水仙花数

# 打印100-999之间的水仙花数
"""
举例:
153=3*3*3+5*5*5+1*1*1
"""

for item in range(100, 1000):
    ge = item % 10 # 个位数字
    shi = item // 10 % 10 # 十位数字
    bai = item // 100 # 百位数字
    if item == ge ** 3 + shi ** 3 + bai ** 3:
        print(item)

输出:

153
370
371
407

4.4流程控制语句break


1.作用:用于结束循环结构,通常与分支结构一起使用。

2.示例:

# 流程控制语句break
n = 3
print('你有', n, '次机会')
for item in range(n):
    pdw = input('请输入密码:')
    if pdw == '8888':
        print('密码正确')
        break
    else:
        print('密码错误')
        print('你还有', n - item - 1, '次机会')

一个输出示例:
在这里插入图片描述
3.用while循环来实现:

# while循环实现
n = 3
i = 1
print('你共有', n, '次机会')
while i <= n:
    pdw = input('请输入密码:')
    if pdw == '8888':
        print('密码正确')
        break
    else:
        print('密码错误')
        print('你还有', n - i, '次机会')
    i += 1

4.5流程控制语句continue


1.作用:用于结束当前循环,进入下一次循环,通常和分支语句一起使用。

2.示例:

'''要求输出1-50之间所有5的倍数'''
for item in range(1, 51):
    if item % 5 == 0:
        print(item)

print('----------------------------------')

'''要求使用continue实现'''
for item in range(1, 51):
    if item % 5 != 0:
        continue
    print(item)

4.6else语句


1.if中的else语句:太简单了,不写了。

2.循环中的else语句:

如果没有遇到break,当循环正常执行完时,else后的语句执行。

1)for-in中的else

"""还是以输入密码的练习为例"""
for _ in range(3):
    pdw = input('请输入密码:')
    if pdw == '8888':
        print('密码正确')
        break
    print('密码错误')
else:
    print('3次输入均错误,登入失败')

2)while中的else

'''while循环实现'''
# 变量的初始化
n = 0
'''条件表达式'''
while n < 3:
    '''条件执行体,循环体'''
    pdw = input('请输入密码:')
    if pdw == '8888':
        print('密码正确')
        break
    print('密码错误')
    '''变量的调整'''
    n += 1
else:
    print('3次输入均错误,登入失败')

4.7循环嵌套


以一个实例说明:打印9 * 9乘法表格

"""打印9*9乘法表格"""
for i in range(1, 10): # 从1-9,共9行
    for j in range(1, i + 1):
        print(i, '*', j, '=', i * j, end='\t') # 不要换行
    print() # 换行

输出:

1 * 1 = 1	
2 * 1 = 2	2 * 2 = 4	
3 * 1 = 3	3 * 2 = 6	3 * 3 = 9	
4 * 1 = 4	4 * 2 = 8	4 * 3 = 12	4 * 4 = 16	
5 * 1 = 5	5 * 2 = 10	5 * 3 = 15	5 * 4 = 20	5 * 5 = 25	
6 * 1 = 6	6 * 2 = 12	6 * 3 = 18	6 * 4 = 24	6 * 5 = 30	6 * 6 = 36	
7 * 1 = 7	7 * 2 = 14	7 * 3 = 21	7 * 4 = 28	7 * 5 = 35	7 * 6 = 42	7 * 7 = 49	
8 * 1 = 8	8 * 2 = 16	8 * 3 = 24	8 * 4 = 32	8 * 5 = 40	8 * 6 = 48	8 * 7 = 56	8 * 8 = 64	
9 * 1 = 9	9 * 2 = 18	9 * 3 = 27	9 * 4 = 36	9 * 5 = 45	9 * 6 = 54	9 * 7 = 63	9 * 8 = 72	9 * 9 = 81	

4.8二重循环中的break和continue


1.二重循环中的break和continue只用于控制本层循环

在这里插入图片描述
2.代码示例:

1)break示例:

"""多重循环中的break"""
for _ in range(5):
    for j in range(1, 11):
        if j % 2 == 0:
            break
        print(j)
"""
分析:
    1.刚开始时j的值为1,j%2的值是1,if条件不成立,break不执行,执行print,打印1
    2.内层循环第二趟,j为2,if条件成例,执行break,print不执行
    3.break执行跳出内层循环,开始进入第二次外层循环,再重复一二过程
    4.外层循环控制内层循环的执行次数,内层循环共执行5次
"""

输出:

1
1
1
1
1

总结:break跳出本层循环。

2)continue示例:

"""多重循环中的continue"""
for _ in range(5):
    for j in range(1, 11):
        if j % 2 == 0:
            continue
        print(j, end = '\t')
    print()
"""
分析:
    1.刚开始时j的值为1,j%2的值是1,if条件不成立,continue不执行,执行print,打印1
    2.内层循环第二趟,j为2,if条件成例,执行continue,print不执行
    3.continue执行跳过当前内层循环后面的语句,继续内层循环
    4.此时j为3,if条件不成立,continue不执行,执行print,打印3
    5.以此类推,内层循环执行完一趟就会打印出一行1 3 5 7 9
    6.一共打印5行
"""

总结:continue跳过当前这次循环后面的语句,也是控制当前循环。


文章来源:https://blog.csdn.net/weixin_73870552/article/details/134469004
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。