作业解答

# 让用户提供矩形的长和宽,打印出这个矩形的周长和面积
# 使用input函数创建长和宽两个变量
length = int(input('请输入矩形的长度:'))
width = int(input('请输入矩形的宽度:'))  # 因为input输入进去的数值会自动变成字符串类型,所以需要将字符串类型强转为int类型
​
# 矩形的周长   周长 = (长 + 宽) * 2
perimeter = (length + width) * 2
print('该矩形的周长为:', perimeter)
​
# 矩形的面积  面积 = 长 * 宽
area = length * width
print('该矩形的面积为:', area)

python代码运行规范

"""
python代码运行规律:
1、所有的标点符号都将使用英文状态的标点符号,如果是中文符号,则会爆红,且程序无法运行
2、python代码的运行规律为从上到下顺序执行的
"""
str1 = '欢迎xx期的'
str2 = '小伙伴'
str3 = '前来学习'
print(str1)
print(str2)
print(str3)

思考

如果想要控制代码的流程顺序该怎么办呢?

if条件语句

关于代码流程顺序的控制就需要到咱们即将学习的if条件语句了,当我们需要对一种情况进行判断的时候,此时就可以用到if条件语句进行判断,现在我们可以先来看一下if的语句格式:

if语句格式

"""
if条件语句:当我们需要对一些情况进行判断的时候,此时就可以用到if条件语句进行判断。
if语句语法格式:
if 判断条件:
    满足条件时要做的事情
else:
    不满足条件需要做的事情
平常过十字路口要看红绿灯,如果是绿灯才可以过马路,否则需要停止等待。该如何用代码表示出来呢?
"""
light = 'red'  # 创建一个红绿灯变量
if light == 'red':  # 使用if条件语句进行判断,如果现在的红绿灯显示的是红灯
    print('等待绿灯')  # 则在控制台中打印出:等待绿灯
else:                
    print('正常过马路')  # 或者 在控制台中打印出:正常过马路

代码优化

对于这一串代码,咱们还可以进行一个优化,把他变成由用户输入(input())目前的红绿灯情况

light = input('请输入目前的红绿灯情况:')  # 把固定的变量值改变成由用户输入值
if light == '红灯':
    print('等待绿灯')
else:
    print('正常过马路')

对于以上的这种情况,我们只有一个判断情况,但是如果我们需要有多个判断的地方,我们该怎么做呢?如果对于以上的情况,增加对于黄灯和绿灯也进行一个判断怎么办呢?

if循环的选择

这里给同学们创造一个情景

"""
假如我正在驾车经过红绿灯,请编写一个对于红绿灯三种颜色进行三次判断,并且打印出各个灯亮起时,此时的一个状态
"""
light = input('请输入目前红绿灯的状态:')
if light == '红灯':
    print('静止通行')
if light == '黄灯':
    print('即将变为红灯,建议等待绿灯亮起后通行')
if light == '绿灯':
    print('可以正常通行')
else:
    print('状态输入错误')

对于以上的这一种用法呢,也是可以的,但对于多种判断的格式,咱们的if语句有一个专门用于多种判断使用的关键字:elif

对于有多个判断条件的if循环时,中间的其他判断都是用elif进行判断。

light = input('请输入目前红绿灯的状态:')
if light == '红灯':
    print('静止通行')
elif light == '黄灯':
    print('即将变为红灯,建议等待绿灯亮起后通行')
elif light == '绿灯':
    print('可以正常通行')
else:
    print('状态输入错误')

对于以上两种方法都是可以的,但是推荐使用elif,因为使用第一种方法有两个弊端:

第一个就是因为当变量进入if判断的之后,就会每个if条件都要去判定一次,这样的话非常浪费程序的内存与运行时间,虽然现在的运行看起来很快,那是因为现在的代码编写并不是很多,只有十多行,所以看不出有运行时间的变化,但是到了之后同学们自己编写几十行上百行代码的时候,就会有明显的时间差异。

第二个弊端就是容易出错,使用多个if语句时,有可能会出现逻辑的错误或者遗漏掉某一些情况。

三目运算

对于python中的三目运算也可以称为条件运算符

可以将三目运算写在print函数里:

a = 6
# 平常if判断语句格式:
if a > 5:
    print('此时a的值大于5')
else:
    print('此时a的值小于5')
​
"""
三目运算符
语法格式:
条件成立执行 if  判断条件  else 条件不成立执行
"""
print('此时a的值大于5' if a > 5 else '此时a的值小于5')
# 不推荐使用三目运算符,因为相比与if条件语句格式,格式比较难看出来,从而影响代码的可读性。

if嵌套

在Python中,if嵌套是指在一个if语句的代码块中再嵌套另一个if语句。这是一种条件语句的嵌套形式,用于实现更复杂的判断逻辑。

# 判断输入的数字是否小于10或者大于20
num = int(input('请输入你需要判断的数字:'))
if num < 10:
    print("数字小于10")
else:
    if num > 20:
        print("数字大于20")
    else:
        print("数字在10和20之间")

比较运算符

对于在python中变量的比较,我们可以借助这一些运算符去进行一个逻辑的判断。

"""
比较运算符
> 大于
< 小于
>= 大于等于
<= 小于等于
== 等于
!= 不等于
特点:
比较运算符的返回结果都是bool型,在实际的使用中,会经常的用到它们。
字符串和数值不能比较
字符串只能和字符比较
"""
# 分别定义变量a为3 变量b为6
a = 3
b = 6
print(a > b)  # a并不大于b 所以输出的值为False
print(a < b)  # a小于b 所以输出的值为true
print(1 == '1')  # 字符串与数值不能比较,所以输出的值为False
print('a' > 'A') # 因为在ascii码表上a对于的数值是97 而A对应的数值是65

ASCII码表是计算机中常用的一种字符编码标准,它用于将字符转换为数字编码以在计算机中存储与传输。和可见字符(如大写字母、小写字母、数字、标点符号等)。这些字符可以通过 ASCII 码表中的数字码来表示,例如大写字母 A 的 ASCII 码为 65,小写字母 a 的 ASCII 码为 97

逻辑判断

当我们需要同时判断多个条件的时候,可以使用或、与、非等逻辑逻辑运算符来同时判断多个条件

"""
或 or
与 and
非 not
"""
# and 表示并且,and两边都为真(True)时,最终才会返回真,如果不为真,则为假(False)
a = 5
if a > 2 and a < 6: # 进行if判断 如果变量a的值大于2,并且小于6,则打印以下代码内容。
    print(True)
else:				# 如果不符合第一次判断情况,则所有情况执行以下代码内容。
    print(False)
    
# or 表示或者,or两边有任何一个为真时,都会返回真(True)。
b = 10
if a < 2 or a > 7: # 进行if判断,如果变量b的值小于2,或者b的值大于7,则打印以下代码内容
    print(True)
else:			  # 如果不符合第一次判断情况,则所有情况执行以下代码内容。
	print(False)
    
# not 表示取反,如果在判断的内容前加上not,结果则会与判断内容相反,达到取反的效果
x = 1
y = 2
if not (x < y):  # 括号里的判断为真(true),但是在前面加上not之后会进行取反,所以if右边的判断条件就变成了假(False)
    print(True)
else:
	print(False)

逻辑短路问题

在同一行代码中代码一般都会默认从左往右运行,但是在逻辑运算过程中,如果能提前得到最终的结果则不再运行这一行之后的代码(代码只运行一半),这个称为逻辑短路

对于理论来说可能会有一些同学不是很理解,我们可以进入pycharm进行一个编写尝试

"""
逻辑短路
同一行代码中代码默认从左往右运行
在逻辑运算过程中,
如果能提前得到最终结果,
将不再运行这一行之后的代码(代码只会执行一半)
"""

# and 逻辑短路 and两边都为真时,就打印真(True),否则会打印假(False)
a = 3
# print(a < 5 and b > 1)  # 当前面的条件满足(前面的值为True)时,将会执行右边的代码,而变量b未进行定义,所以会报错
print(a < 1 and c > 2)  # 当前面的条件未满足(前面的值为False)时,将不会执行右边的代码,直接输出False

# or 逻辑短路  or两边有一边为真时,就会打印真(True)
a = 5
# print(a < 5 or b > 1)  # 当前面的条件不满足(前面的值为False)时,则会执行右边的代码,而变量b未进行定义,所以会报错
print(a == 5 or b > 1)  # 当前面的条件已经满足(前面的值未True)时,则不会执行右边的代码,直接输出了True

while循环

当我们学了if条件语句进行代码的流程控制后,当然也要学习一下咱们的循环语法,在学习语法前我来给大家出一道考题,让我们打开pycharm来思考一下,考题的内容是这样的

"""
请打印出1-100这100个数字,显示在控制台了里
print(1)
print(2)
print(3)
...
print(100)
"""

"""
while循环:
循环是一种重复执行某段代码的结构,只要满足特定的条件,就会不断地执行循环中的语句。
语法格式:
while 条件表达式:
    需要执行的循环语句
"""
a = 1  # 定义变量a的值为1
while a < 101:  # 创造循环直到a小于101时停止
    print(a)
    a += 1

注意: else也可以和while循环一起使用,当循环结束时,执行else内的代码

a = 1  # 定义变量a的值为1
while a < 101:  # 创造循环直到a小于101时停止
    print(a)
    a += 1
else:           # else与while循环一起使用
    print('循环结束,以上打印的数字为1-100')

while死循环创建

"""
while循环:
循环是一种重复执行某段代码的结构,只要满足特定的条件,就会不断地执行循环中的语句。
语法格式:
while 条件表达式: # 对于条件表达式的判断一直为真时,就会不断对于下面的代码进行执行
    需要执行的循环语句
    """

a = 1
while True:
    print(a)

这里,就引发了一个while循环的思考,对于while的循环来说,当条件表达式为假时,才能使循环结束,那如果在死循环内,可不可以用特定条件下结束循环呢?

答案是可以的,咱们接着往下看,接下来我们要学到的是一个关键字break,

使用break跳出循环

break关键字的主要作用是终止循环语句,当程序执行到break关键字时,循环会立即终止,且程序会跳出循环并继续执行循环以外的代码。

a = 1
while True:
    if a == 6:  # 当变量a的值为6时,则执行以下代码
        print('就决定是你了')
        break  # 使用break直接跳出循环,程序会直接执行循环以外的代码
    print(a)
    a += 1
else:		   # 使用break终止循环时不会执行else的内容
    print('循环结束')  # 显示提示-永远达不到的代码
print('================================')
print('这是循环以外的代码')

while嵌套循环

while循环嵌套与if循环嵌套差别不大,while的循环嵌套指的是while里面还包含着while

"""
使用while循环嵌套,用*写一个长为5宽为3的矩形
"""
i = 0
while i < 3:  # 定义外层循环,循环三次,打印三行空字符串
    row = ''
    i += 1
    j = 0
    while j < 5:  # 定义内层循环,使用五次循环,用字符串拼接的方式将每一行的空字符串上拼接成5个星号(*)
        row += '*'
        j += 1
    print(row)