python中的流程控制语句

本文详细介绍了Python中的if-else语句和特殊用法if-elif-else,以及while循环的使用,包括多个示例代码,如判断年龄、闰年、奇数之和、质数等。同时,文章提供了循环语句的练习,如求7的倍数之和、1000内的水仙花数等,展示了如何优化代码效率。
摘要由CSDN通过智能技术生成

if-else语句

# 语法:
#     if 条件表达式:
#         代码块
#     else :
#         代码块
# 执行流程:
#     if-else语句在执行时,先对if后的条件表达式进行求值判断
#         如果为True,则执行if后的代码块
#         如果为False,则执行else后的代码块

代码演示:

age = 18
if age > 17:
    print('你已经成年了~~~~')
else:
    print('你还未成年~~~')

if -else 语句的特殊用法

a = 5
b = 5
# 判断是否相等
print("a 等于 b") if a == b else print("a 不等于 b")

# 判断是否不相等
print("a 等于 b") if not a == b else print("a 不等于 b")  # ==号的优先级 高于not的优先级,所以先执行 a == b,然后对其结果 取反。
# 等价于
print("a 等于 b") if a != b else print("a 不等于 b")

# 说明 :当满足if内的条件表达式时,执行if前的语句,否则 执行else后的语句

if-elif-else语句

# 语法:
#     if 条件表达式:
#         代码块
#     elif 条件表达式:
#         代码块
#     elif 条件表达式:
#         代码块
#     else:
#         代码块

# 执行流程:
#     if-elif-else 语句在执行时,会自上而下依次对条件表达式进行求值判断,
#         如果表达式的结果为True,则执行当前代码块,然后语句结束
#         如果表达式的结果为False,则继续向下判断,直到找到True为止
#         如果所有的表达式都是False,则执行else后的代码块

代码演示1:

age = 67
if age < 18:
    print('你还未成年')
elif 18 <= age < 30:
    print('你已经是成年人了')
elif 30 <= age < 60:
    print('你已经中年了')
elif age >= 60:
    print('你已经退休了')

代码演示2:

# 判断一个年份是否为闰年
# 如果一个年份可以被4整除不能被100整除,或者能被400整除,这个年份就是闰年
year = int(input('请输入一个任意的年份:'))
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
    print(year, '是闰年')
else:
    print(year, '不是闰年')

while 循环语句

# 循环语句
# 循环语句可以使指定的代码块重复指定的次数
# 循环语句分成两种,while循环 和 for 循环 (for循环放到后面再说)
# while 循环
# 语法
#   while 条件表达式:
#       代码块
#   else :   #不常用,但是while循环后面确实可以加else
#       代码块
#   执行流程:
#     while语句在执行时,会先对while后的条件表达式进行求值判断,
#     如果判断结果为True,则执行循环体(代码块),
#     循环体执行完毕,继续对条件表达式进行求值判断,依次类推,
#     直到判断结果为False,则循环终止,如果循环有对应的else,则执行else后的代码块
#  条件表达式恒为True的循环语句,称为死循环,它会一直运行,慎用。

循环语句练习

1.求100以内所有的奇数之和

# 分析:奇数是单数。奇数指在整数中,不能被2整除的数,奇数的数学表达形式为:2k+1(k为整数)
# 方式一 通过奇数的定义
i = 1
odd_sum = 0  # 定义奇数之和变量
while i <= 100:
    if (i % 2) != 0:
        odd_sum += i  # 累加奇数之和
        print(i, end=' ')  # 打印奇数
    i += 1
print()
print('100以内所有的奇数之和:', odd_sum)
#打印结果:
#1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99 
#100以内所有的奇数之和: 2500

# 方式二 通过奇数的数学表达式 ,这种方式效率高
i = 0
flag = True
while flag:
    num = 2 * i + 1
    if num < 100:
        print(num, end=' ')
        i += 1
    else:
        flag = False
print()
print('100以内所有的奇数之和:', odd_sum)
#打印结果:
#1 3 5 7 9 11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 51 53 55 57 59 61 63 65 67 69 71 73 75 77 79 81 83 85 87 89 91 93 95 97 99 
#100以内所有的奇数之和: 2500

2.求100以内所有7的倍数之和,以及个数

# 分析 能够被7整除的数 是7的倍数 例如:7 14 28 .... (虽然0除以7也能整除 但是数学上规定不包括0)
i = 1  #起始值
count = 0  # 定义统计个数的变量
sum = 0  # 定义统计和的变量
while i <= 100:
    if (i % 7) == 0:
        sum += i
        count += 1
        print(i, end=' ')
    i += 1
print()
print('100以内所有7的倍数之和:', sum)
print('100以内所有7的倍数的个数:', count)
#添加时间戳比较两种方式的执行耗时
from time import *
#方式一 就是上面的那个方法
startTime = time()
i = 1  # 起始值
count = 0  # 定义统计个数的变量
sum = 0  # 定义统计和的变量
while i <= 100:  #可以把100换成10000000 效果更明显
    if (i % 7) == 0:
        sum += i
        count += 1
        # print(i, end=' ')
    i += 1
print()
print('100以内所有7的倍数之和:', sum)
print('100以内所有7的倍数的个数:', count)
endTime = time()
print()
print(f'方式一程序执行耗时:{endTime - startTime}秒')

# 方式二
startTime = time()
i = 1
count = 0  # 定义统计个数的变量
sum = 0  # 定义统计和的变量
flag = True
while flag:
    j = 7 * i  # j为7的倍数
    if j < 100: #可以把100换成10000000 效果更明显
        sum += j
        count += 1
        # print(j, end=' ')
        i += 1
    else:
        flag = False
print()
print('100以内所有7的倍数之和:', sum)
print('100以内所有7的倍数的个数:', count)
endTime = time()
print()
print(f'方式二程序执行耗时:{endTime - startTime}秒')

3.求1000内的水仙花数

水仙花数是指一个 n 位数(n≥3),它的每个位数上的数字的n次幂之和等于它本身
(例如:1**3 + 5 **3 + 3 ** 3 = 153)

i = 100  # 从100开始
while i < 1000:
    a = i // 100        # 获取百位上的数
    b = i % 100 // 10   # 获取十位上的数  还可以 b = i // 10 % 10  或者 b = (i - a*100) // 10
    c = i % 10          # 获取个位上的数
    if (a ** 3 + b ** 3 + c ** 3) == i:
        print(i, end=' ')
    i += 1
    
    #打印结果
    #153 370 371 407 

4.获取用户输入的任意数,判断是否是质数。

质数也叫自然数是只能被1和它自身整除的自然数,1不是质数也不是合数。
只有大于1的整数才有可能成为质数

i = int(input('请输出任意数:'))
j = 2
flag = True
while j < i:
    if i % j == 0:  # 例如 如果输出的i=17,那么 i 会被2到16之间的数都整除一遍,看是否有满足此条件的j。
        flag = False  # 一旦进入代码块中,就表明当前的i不是质数
    j += 1
if flag:
    print(i, '是质数')
else:
    print(i, '不是质数')
    
#优化后的
i = int(input('请输出任意数:'))
j = 2
flag = True
while j <= i ** 0.5:  # 第二处优化  这里为啥改成<=是因为考虑到i为平方根,刚好是整数的情况下。
    if i % j == 0:  # 例如 如果输出的i=17,那么 i 会被2到16之间的数都整除一遍,看是否有满足此条件的j。
        flag = False  # 一旦进入代码块中,就表明当前的i不是质数
        break  # 第一处优化
    j += 1
if flag:
    print(i, '是质数')
else:
    print(i, '不是质数')

两处优化的地方说明:
break:表示 已经确定当前数不是质数了,不需要再循环执行余下的步骤了。
j < i 改为 j <= i ** 0.5

在这里插入图片描述

5. 打印100以内的质数

#直接上优化后的

startTime = time()
i = 2
while i < 100:  # 当这里的i的范围越大时,优化的效果越明显
    j = 2
    flag = True
    while j <= i ** 0.5: # 优化二
        if i % j == 0: 
            # print(i, '不是质数')
            flag = False
            break   #优化 一
        j += 1
    if flag:
        print(i, '是质数', end='')
    # else:
    #     print(i, '不是质数')
    i += 1
endTime = time()
print()
print(f'程序执行耗时:{endTime - startTime}秒')

6. 打印99乘法表

# 1 * 1 =2
# 1 * 2 = 2   2* 2 =4
# 1 * 3 = 3   2 * 3 = 6  3 * 3 = 9
#  ............
#  ............
#  ............
# 1 * 9 = 9   2 * 9 = 18     .............       9 * 9 = 81
# 需要两层循环 外层循环 控制 高度 ,内层循环 控制 宽度
i = 1
while i <= 9:
    j = 1
    while j <= i:
        print(j, '*', i, '=', j * i, end='\t')
        j += 1
    i += 1
    print()
 
# 99乘法表  使用for循环来演示
for i in range(1, 10):
    for j in range(1, i + 1):
        print("{}*{}={}".format(j, i, j * i), end="\t")
    print("")

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值