【Python】Python之条件判断和循环

本文深入讲解Python中的条件判断(if、if-else、if-elif-else)和循环(for、while)语句,包括代码块的缩进规则、break和continue的使用,以及多重循环的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

【Python】Python之条件判断和循环

今天,我们来学习Python的一个灰常灰常重要的知识内容——条件判断和循环。在学习之前,我想请大家先联想回忆一下,我们以前学习的C语言内容,联系C语言的条件判断语句 if-else语句以及循环语句for语句和while语句,通过两种语言的联系,会有助于大家对Python的条件判断和循环的理解。

Python之if语句

计算机之所以能做很多自动化的任务,因为它可以自己做条件判断。
比如,输入用户年龄,根据年龄打印不同的内容,在Python程序中,可以用if语句实现:

age = int(input('请输入你的年龄:'))
if age >= 18:
    print ('your age is', age)
    print ('you are an adult!')

值得注意得是: Python代码的缩进规则。具有相同缩进的代码被视为代码块,上面的三四行 print 语句就构成一个代码块,如果 if 语句判断为 True,就会执行这个代码块。

缩进请严格按照Python的习惯写法:4个空格,不要使用Tab,更不要混合Tab和空格,否则很容易造成因为缩进引起的语法错误。

还有一点要注意: if 语句后接表达式,然后要以( : ) 表示代码块开始。

如果我们在Python交互环境下敲代码,还要特别留意缩进,并且退出缩进需要多敲一行回车键的。

Python之 if-else

当 if 语句判断表达式的结果为 True 时,就会执行 if 包含的代码块:

if age >= 18:
    print ('your age is', age)
    print ('you are an adult!')

如果我们想判断年龄在18岁以下时,打印出 '‘you are a teenager!’,应该怎么办?
再写一个if 判断语句吗?

if age < 18:
    print ('your age is', age)
    print ('you are a teenager!')

还是用 not 运算进行判断:

if not age >= 18:
    print ('your age is', age)
    print ('you are a teenager!')

其实我们可以发现,这两种条件判断是“非此即彼”的,要么符合条件1,要么就符合条件2,因此完全可以用一个 if … else … 语句把它们统一起来:

if age >= 18:
    print ('your age is', age)
    print ('you are an adult!')
else:
    print ('your age is', age)
    print ('you are a teenager!')

利用 if … else … 语句,我们可以根据条件表达式的值为 True 或者 False ,分别执行 if 代码块或者 else 代码块。

要注意: else 后面有个“:”。

Python之 if-elif-else

倘若有的时候,一个 if … else … 还不够用,那应该怎么办?比如说,根据年龄的划分:

划分1:18岁或以上:adult
划分2:6岁或以上:teenager
划分3:6岁以下:kid

我们或许可以尝试用一个 if (age >= 18) 判断是否符合条件1,如果不符合,再通过一个 if 判断 (age >= 6) 来判断是否符合条件2,否则,执行条件3:

age = int(input('请输入你的年龄:'))
if age >= 18:
    print('your age is', age)
    print('you are an adult!')
else:
    if age >= 6:
        print('your age is', age)
        print('you are a teenager!')
    else:
        print('your age is', age)
        print('you are a kid!')

这样写出来,我们就得到了一个两层嵌套的 if … else … 语句。这个逻辑是没有问题的,但是如果继续增加条件,比如3岁以下是 baby,那就又要有所改动:

age = int(input('请输入你的年龄:'))
if age >= 18:
    print('your age is', age)
    print('you are an adult!')
else:
    if age >= 6:
        print('your age is', age)
        print('you are a teenager!')
    else:
        if age >= 3:
            print('your age is', age)
            print('you are a kid!')
        else:
            print('your age is', age)
            print('you are a baby!')

我们会发现这种缩进只会越来越多,随之而来的是代码也会越来越难看。

为了避免嵌套结构的 if … else …,我们可以用 if … 多个elif … else … 的结构,一次写完所有的规则:

age = int(input('请输入你的年龄:'))
if age >= 18:
    print('your age is', age)
    print('you are an adult!')
elif age >= 6:
    print('your age is', age)
    print('you are a teenager!')
elif age >= 3:
    print('your age is', age)
    print('you are a kid!')
else:
    print('your age is', age)
    print('you are a baby!')

elif 意思就是 else if,这样一来,我们就写出了结构非常清晰的一系列条件判断了。
特别注意: 这一系列条件判断会从上到下依次判断,如果某个判断为 True,执行完对应的代码块,后面的条件判断就直接被忽略,不再执行了。

我们下面来看一个代码:

age = int(input('请输入你的年龄:'))
if age >= 6:
    print('your age is', age)
    print('you are a teenager!')
elif age >= 18:
    print('your age is', age)
    print('you are an adult!')
elif age >= 3:
    print('your age is', age)
    print('you are a kid!')
else:
    print('your age is', age)
    print('you are a baby!')

当 age = 10 时,结果打印出 ‘you are a teenager!’ 是正确的;但 当age = 20 时,为什么结果还是打印出 ‘you are a teenager!’ ?

原因是当我们输入一个大于等于6的数时,代码执行第一个 if 判断,然后得出并且打印出 'you are a teenager!'的结果,然后代码就直接跳出,不在进行下一个判断语句了,自然也不会打印出其他的结果。
如果要修复代码,那应该怎么做呢?下面我给出我的修复结果:

if age >= 18:
    print('your age is', age)
    print('you are an adult!')
elif age >= 6:
    print('your age is', age)
    print('you are a teenager!')
elif age >= 3:
    print('your age is', age)
    print('you are a kid!')
else:
    print('your age is', age)
    print('you are a baby!')

所以我们在执行多条判断语句时,一定要注意条理性,一定要遵行某个特定顺序进行语句判断,或者简单地说,要从判断条件定义域范围小的开始,然后到范围大的结束,层层递进,完成代码所要实现的目的。

Python之 for循环

我们在之前的文章中,了解到list或tuple是可以表示一个有序集合的,但如果我们想依次访问一个list中的每一个元素呢?比如 list:

name = ['Lisa','Malina','Ned','Andy']
print (name[0])
print (name[1])
print (name[2])
print (name[3])

如果list只包含几个元素,这样写还可以实现代码的目的;但是如果list包含1万个元素,那我们写1万行print函数就不大实际了。
在这个候,循环就可以派上用场了。

Python的 for 循环就可以依次把list或tuple的每个元素迭代出来:

name = ['Lisa','Malina','Ned','Andy']
for nm in name:
    print(nm)

注意: nm这个变量是在 for 循环中定义的,意思是依次取出list中的每一个元素,并把元素赋值给 nm,然后执行for循环体,也就是缩进的代码块。

通过 for 循环函数,遍历一个list或者tuple就显得非常容易了。

我们下面来看一个例题:
班里考试后,老师要统计班里同学的平均成绩,已知其中4位同学的成绩如下:77,99,88,66
请利用for循环计算出四位同学的平均成绩。
解析:在使用 for 循环之前,我们需要对四名同学的成绩,使用list集合表示出来,如下:mark = [77,99,88,66],然后我们构建 for 循环语句:

mark = [77,99,88,66]
sum = 0
for a in mark:
    sum += a
print (sum / 4)

通过利用一个sum变量累加就可以计算出总成绩,然后再对总成绩求平均值。

Python之 while循环

和上文中的 for 循环不一样的另一种循环是 while 循环,while 循环不会迭代 list 或 tuple 的元素,而是根据表达式判断循环是否结束。
比如说,要从 0 开始打印不大于 N 的整数:

N = int(input('请输入数字:'))
x = 0
while x <= N:
    print ( x )
    x += 1

测试结果
在这里插入图片描述
while循环每次先判断 x <= N,如果为True,则执行循环体的代码块,否则就跳出循环。

在循环体内,x +=1会让 x 不断增加,最终因为 x < N 不成立而退出循环。如果没有这一个语句,while循环在判断 x <= N 时总是为True,就会无限循环下去,变成死循环,所以要特别留意while循环的退出条件。

我们看如下命题:利用while循环计算100以内奇数的和。
具体代码如下:

sum = 0
x = 1
while x <= 100:
    sum += x
    x += 2
print ( sum )
Python之 break退出循环

在我们使用 for 循环或者 while 循环时,如果要在循环体内直接退出循环,可以使用 break 语句实现。

比如计算 1 至 某个大于1整数 的和,我们使用while来实现:

a = int(input('请输入数字:'))
sum = 0
x = 1
while True:
    sum +=  x
    x +=  1
    if x > a:
        break
print ( sum )

起初看来, while True 就是一个死循环,但是在循环体内,我们还判断了 x > a 条件成立时,用break语句跳出循环,这样也可以实现循环的结束。

我们接下来看一下下面的例题:利用 while True 无限循环配合 break 语句,计算 1 + 2 + 4 + 8 + 16 + … 的前20项的和。
解析代码如下:

sum = 0
x = 1
n = 1
while True:
    if n > 20:
        break
    sum +=  x
    x *= 2
    n += 1
print ( sum )

该代码最重要的是要明白:break退出循环的条件是循环已执行了20次。

Python之 continue继续循环

在循环过程中,我们可以用break函数退出当前循环,还可以用continue函数跳过后续循环代码,然后继续下一次循环。
假设我们已经写好了利用 for 循环计算平均分的代码:

mark = [77, 99, 55, 88, 66, 33, 22, 85]
sum = 0
n = 0
for a in mark:
    sum += a
    n += 1
print (sum / n)

现在老师只想统计及格分数的平均分,就是要把 x < 60 的分数剔除掉,这时可以利用 continue 函数来做到当 x < 60的时候,不继续执行循环体的后续代码,直接进入下一次循环:

mark = [77, 99, 55, 88, 66, 33, 22, 85]
sum = 0
n = 0
for a in mark:
    if a < 60:
        continue
    sum += a
    n += 1
print (sum / n)

接下来让我们思考一个题目:对已有的计算 0 - 100 的while循环进行改造,通过增加 continue 语句,使得只计算奇数的和:

sum = 0
x = 1
while True:
    sum += x
    x += 1
    if x > 100:
        break
print ( sum )

分析如下:当 x 是偶数时,就通过continue语句提前进入下一次循环,所以continue判断的位置非常重要。

修改的代码如下:

sum = 0
x = 0
while True:
    x = x + 1
    if x > 100:
        break
    if x % 2 == 0:
        continue
    sum = sum + x
print ( sum )
Python之 多重循环

其实在循环内部,还可以嵌套循环,我们来看一个例子:

for a in ['A', 'B', 'C']:
    for b in ['1', '2', '3']:
        print (a + b)

测试如下:在这里插入图片描述
a 每循环一次,b 就会循环 3 次,这样我们可以打印出如上图一样的一个全排列。

为了让大家可以更加了解多重循环的本质,我们下面来看一个例题:
对100以内的两位数,请使用一个两重循环打印出所有十位数数字比个位数数字小的数,例如,59(5 < 9)。

for a in [1, 2, 3, 4, 5, 6, 7, 8, 9]:
    for b in [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]:
        if a < b :
            print (a * 10 + b )

测试的结果如下:
在这里插入图片描述

今天,关于Python条件判断和循环的内容就大概这么多,具体的一些操作希望大家可以配合PyCharm多进行代码编写和测试,在实践中成长,加油了!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值