五、Python条件控制语句

本文详细介绍了Python中的条件控制语句,包括if、input()、if-else、if-elif-else,还提供了丰富的练习题,如水仙花数、质数判断、循环语句的使用等,旨在帮助读者深入理解和掌握Python的条件控制结构。

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

一、if语句

1.1 语法格式
(1)语法:if条件表达式:

(2)执行的流程:if语句在执行时,会先对条件表达式进行求值判断;
如果为True,则执行if后的语句;
如果为False,则不执行。

if True:print("Hello World")#返回Hello World

if False:print("Hello World")#返回不执行

(3)代码块
希望if可以控制多条语句,则可以在if后跟着一个代码块。

什么是代码块?
代码块就是保存这一组代码,同一个代码块中的代码,要么都执行,要么都不执行。代码块就是一种为代码分组的机制。

#希望if可以控制多条语句,则可以在if后跟着一个代码块
#什么是代码块?
#代码块就是保存这一组代码,同一个代码块中的代码,要么都执行,要么都不执行。
#代码块就是一种为代码分组的机制。
num=10
if num>20:
    #代码块
    print("num比20大") #这个if语句相当于:if num>20:print("num比20大")【在一行中的if形式】
    print("你好")##这个print有缩进,受if条件控制,
print("Hello World")#这个print没有缩进,不受if条件控制

num=30
if 20<num<40:#逻辑语句
    print("num比20大比40小")

二、input()函数

2.1、需求
获取用户输入的用户名,用户名是admin 欢迎访问

2.2、返回值的类型

str=input() #返回值是string类型
value=int(input('请输入你的工资:'))#类型转换

if value>=10000: #注意比较的类型,input()返回的数据类型是string
    
    print('你太厉害了')

2.3、代码示例

# 需求:获取用户输入的用户名,用户名是admin 欢迎访问

username=input("请输入用户名:") #返回值是string类型,"请输入用户名:"为提示内容

if username=='admin'
    print("欢迎光临")

三、if-else语句

3.1、语法格式
在这里插入图片描述

value=int(input('请输入你的工资:'))#类型转换

if value>=2000: #注意比较的类型,input()返回的数据类型是string

    print('你该加油了')
else:
    print("咋混的,兄弟?")

四、if-elif-else语句

4.1、语法格式
在这里插入图片描述
4.2、执行规则
if-elif-…-else的执行是按从前往后的顺序依次查找对应的条件,条件匹配上则执行对应的代码块,并终止后面的(elif…-else)的条件查找。

#if-elif-...-else:执行按从前往后的顺序依次查找对应的条件,条件匹配上则执行对应的代码块,并终止后面的elif..-else的条件查找。
value=int(input('请输入你的工资:'))#类型转换

#对比一:
if value>=30000: #注意比较的类型,input()返回的数据类型是string
    print('有钱就是任性')

elif value>=20000:
    print('有钱真好')

elif value>=10000:
    print('哥也月薪上万了')

elif value>=5000:
    print('工资还说的过去')

elif value>=2000:
    print('你该加油了')

else:
    print("咋混的,兄弟?")


#对比二
if value>=2000: #若输入的是20000,则此程序只输出“你该加油了”,跟上面的程序执行结果完全不一样,上面的程序执行结果为“有钱真好”
    print('你该加油了')


elif value>=5000:
    print('工资还说的过去')

elif value>=10000:
    print('哥也月薪上万了')

elif value>=20000:
    print('有钱真好')

elif value>=30000: #注意比较的类型,input()返回的数据类型是string
    print('有钱就是任性')

else:
    print("咋混的,兄弟?")

五、if语句练习

5.1、练习一

#判断月份属于哪个季节
month=input("请输入一个月份")

#先把不正确的月份排除
if month>12 or month<1:
    print(month,"月份不存在")

#判断月份
elif 3<=month<=5:
    print(month, "春季")

elif 6<=month<=8:
    print(month, "夏季")

elif 9<=month<=11:
    print(month, "秋季")

else:
    print(month, "冬季")

5.2、练习二

'''
编写一个程序,获取用户输入的整数,通过显示来判断这个数是奇数还是偶数
'''
#获取用户输入的数
num=int(input('请输入一个任意的整数:'))

#判断num是奇数还是偶数
if num%2==0:
    print(num,'是偶数')
else:
    print(num,'是奇数')

5.3、练习三

'''
编写一个程序,检查任意一个年份是否是闰年
    若果一个年份可以被4整除,但不能被100整除,或者可以被400整除,这个年份就是闰年
'''
year=int(input('请输入任意年份:'))

if year % 4==0 and year %100 !=0 or year % 400 ==0:
    print(year,'是闰年')

else:
    print(year,'是平年')

5.4、练习四

'''
我家的狗5岁,5岁的狗相当于人多大的年龄呢?

    狗的前两年,每一年相当于人的10.5岁,然后每增加1年就增加4岁,
    比如,5岁的狗狗相当于人类的年龄是多少:10.5+10.5+4+4+4=33岁

编写一个程序,获取用户输入狗的年龄,然后判断其相当于人的年龄
如果用户输入负数,请显示错误信息
'''

#方式一
#获取狗的年龄
dog_age=float(input('请输入狗狗的年龄:'))

#定义人的年龄
person_age=0

#如果够的年龄在两岁以下(包含2岁)
if dog_age<=0:
    print('年龄不合法')
elif dog_age<=2:
    person_age=dog_age*10.5

#如果狗的年龄在两岁以上
else:
    #先计算两岁
    person_age=2*10.5

    #计算超过两岁以上的年龄
    # person_age=person_age+(dog_age-2)*4

    person_age+=(dog_age-2)*4


if dog_age>0:
    print(dog_age,'岁的狗,年龄相当于',person_age,'岁的人')

#方式二
#获取狗的年龄
dog_age=float(input('请输入狗狗的年龄:'))

#定义人的年龄
person_age=0

#如果够的年龄在两岁以下(包含2岁)
if dog_age>0:

    if dog_age<=2:
        person_age=dog_age*10.5
    
    #如果狗的年龄在两岁以上
    else:
        #先计算两岁
        person_age=2*10.5
    
        #计算超过两岁以上的年龄
        # person_age=person_age+(dog_age-2)*4
    
        person_age+=(dog_age-2)*4

    print(dog_age, '岁的狗,年龄相当于', person_age, '岁的人')
    
else:
    print('年龄不合法')

六、循环语句

6.1、循环语句
循环语句可以使指定的代码块重复执行指定的次数。

主要有:while语句和for语句

循环三要素:
(1)初始化的表达式,通过初试化来定义变量;
(2)条件表达式,条件表达式用来设置循环执行的条件;
(3)更新表达式,修改初始化变量的值。
6.2、continue 和 break
(1)continue:可以用来跳过当次循环。
(2)break:可以立即退出循环语句,包括循环中的else语句。

#continue
i=0
while i<6:
    i += 1
    if i==2:
        continue
    print(i)
else:
    print('hello')

#break
i=0
while i<6:
    i += 1
    if i==2:# 内层循环,控制宽度,或者行
        break
    print(i)
else:
    print('hello')

6.3、while循环语句
在这里插入图片描述

i=0

while i<10:#决定了执行的次数

    # i+=1#返回1-10

    print(i)

    i+=1 #返回0-9

else:#条件为False,执行下面的代码
    print('else语句执行了')

while循环练习:

'''
求100以内所有偶数之和
'''

#获取所有100以内的数
i=0

#定义一个变量,保存所有偶数的和
result=0

while i<100:

    i+=1

    #判断i是否为偶数
    if i % 2 ==0:
        #计算所有的偶数和
        result+=i

print(result)

七、条件控制语句练习

7.1、练习一
求1000以内所有的水仙花数。
定义:水仙花数指的是一个n位数(n>=3)的每个位数上的数字的n次幂之和等于它本身。
例如,13+53+3**3=153

#获取1000以内所有的三位数
i=100
while i<1000:
    #假设i的百位数是a,十位数b,个位数c
    #求百位数
    a=i//100
    #求十位数
    b=i//10%10
    #个位数
    c=i%10
    print(i,a,b,c)
    i+=1

7.2、练习二
获取用户输入的任意数,判断其是否是质数。
定义:只能被1和它本身的数就是质数,注意1不是质数

# 获取用户输入的任意数
num=int(input("请输入一个任意大于1的整数:"))
#定义一个变量
i=2
#创建一个标记,用来记录num是否是质数,默认是质数
flag=True
while i < num:

    if num%i==0:#如果这个条件成立,则证明num肯定不是质数
        flag=False
        # print(num)

    i += 1

if flag:
    print(num,'是质数')
else:
    print(num,'不是质数')

7.3、练习三
在控制台输出如下图形:
*****
*****
*****
*****
*****

#方式一
# 定义变量,控制图形的高度
i=0
while i < 5: #控制高度
    print('*****')
    print('*****')
    print('*****')
    print('*****')
    print('*****')

    i += 1

# 方式二
# 定义变量,控制图形的高度
i = 0
while i < 5:  # 控制高度
    print('*', end='')
    print('*', end='')  # end表示不换行
    print('*', end='')
    print('*', end='')
    print('*', end='')
    print()

    i += 1

# 方式三,循环嵌套
# 定义变量,控制图形的高度
i = 0
while i < 5:  # 外层循环,控制高度,或者列
    j=0
    while j<5: # 内层循环,控制宽度,或者行
        print('*', end='')  # end表示不换行
        j+=1
    print()

    i += 1

7.4、练习四
在控制台输出如下图形:
*
**
***
****
*****

i=0
while i<5:# 外层循环,控制高度,或者列

    j=0
    while j<i+1:# 内层循环,控制宽度,或者行
        print('*', end='')  # end表示不换行
        j += 1
    print()

    i += 1

7.5、练习五
在控制台输出99乘法表:
11=1
1
2=2 2*2=4

#创建外层循环来控制高度
i=0
while i<9:# 外层循环,控制高度,或者列
    i += 1
    j=0
    while j<i:# 内层循环,控制宽度,或者行
        j += 1
        print(f'{j}*{i}={i*j} ',end='')
    print()#表示换行

7.6、练习六
猜数字游戏:随机1-10个数字,如果猜对正确,如果没有才对错误,给用户9次机会,最终结果要求用户一次都猜不对。

思路:可以先拿到用户猜过的数字,我可以随机一个数字,去和用户猜过的数字作比对,如果这个循环的数字没有在用户猜过的数字当中,那么这个数字就是我们需要的答案。

'''
练习六、猜数字游戏,随机1-10个数字,如果猜对正确,如果没有才对错误
    给用户9次机会,最终结果要求用户一次都猜不对。
    
    思路:可以先拿到用户猜过的数字,我可以随机一个数字,
    去和用户猜过的数字作比对,如果这个循环的数字没有在用户猜过的数字当中,
    那么这个数字就是我们需要的答案。
'''
import random
#定义一个列表,用来存储用户猜过的数字
lst=[]
i=0
while i<9:
    number=int(input('请输入一个1-10的数字:'))
    #把用户猜过的数字追加到列表当中
    lst.append(number)
    print('对不起,你没有猜对')
    i+=1

while True:
    number_x=random.randint(1,10) #1<=x<=10

    if number_x in lst:
        continue
    else:
        break
print('正确号码是:',number_x)

7.7、练习七
求100以内的所有质数。

'''
练习七:求100以内的所有质数
'''
i=2
while  i<=100:
    flag = True
    #判断i是否是质数
    #获取所有有可能成为i的因数
    j=2
    while j<i:
        #判断i是否能被j整除,能整除,i不是质数
        if i%j==0:
            flag=False
        j+=1

    if flag:
        print(i)
    i+=1

7.8、练习八-程序性能优化
求10000以内的所有质数。
新手程序员做功能,老程序员做程序性能优化。

'''
练习七:求10000以内的所有质数
'''
#方式一:
from time import *
#获取程序开始的时间
start=time() #检测程序的性能

i=2
while  i<=10000:
    flag = True
    #判断i是否是质数
    #获取所有有可能成为i的因数
    j=2
    while j<i:
        #判断i是否能被j整除,能整除,i不是质数
        if i%j==0:
            flag=False
        j+=1

    if flag:
        pass
        # print(i)
    i+=1
end=time()
print(f'程序花费的时间:{end-start}秒')

#方式二:性能优化一,一旦判断i不是质数,就可以停止内层循环,break方法
from time import *
#获取程序开始的时间
start=time() #检测程序的性能

i=2
while  i<=10000:
    flag = True
    #判断i是否是质数
    #获取所有有可能成为i的因数
    j=2
    while j<i:
        #判断i是否能被j整除,能整除,i不是质数
        if i%j==0:
            flag=False
            break  #程序优化一:一旦判断i不是质数,就可以停止内层循环
        j+=1

    if flag:
        pass
        # print(i)
    i+=1
end=time()
print(f'程序花费的时间:{end-start}秒')

#方式三:性能优化二,判断i一半的数据,即i**0.5
from time import *
#获取程序开始的时间
start=time() #检测程序的性能

i=2
while  i<=10000:
    flag = True
    #判断i是否是质数
    #获取所有有可能成为i的因数
    j=2
    while j<=i**0.5:#性能优化二:判断i一半的数据
        #判断i是否能被j整除,能整除,i不是质数
        if i%j==0:
            flag=False
            break  #程序优化一:一旦判断i不是质数,就可以停止内层循环
        j+=1

    if flag:
        pass
        # print(i)
    i+=1
end=time()
print(f'程序花费的时间:{end-start}秒')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值