Python---程序控制流程

目录

前言

一.顺序结构

 二.选择结构

单分支结构

 双分支结构

 多分支结构

三.循环结构

for 循环

 关键字:break/continue

range 函数

输出等腰三角形

while 循环

输出等腰三角形

 计算多项式的和

 四.练习

​  五.面试题

重点:6倍定理

总结


前言

Python中的程序控制流程指的是程序的执行顺序和条件判断。常用的控制流程包括顺序结构、条件结构和循环结构。


一.顺序结构

顺序结构中python代码按照程序编写的顺序执行:从上到下,从有到右。

a= 10
a **=2  
print(str(f"a的值是:a=10^2={a}"))
a +=1
print(str(f"a的值是:a=100+1={a}"))
a -=1
print(str(f"a的值是:a=101-1={a}"))
a /=10
print(str(f"a的值是:a=100/10={a}"))

 二.选择结构

在生活中,我们总是要做出许多选择,程序也是一样,如输入的用户名和密码正确,则提示登录成功,进入网站,否则提示登录失败。以上例子中的判断就是程序中的选择语句

单分支结构

语法:

if 条件:
    代码块

 条件是一个返回布尔值的表达式。如果条件为True,则执行代码块中的语句;如果条件为False,则跳过代码块,继续执行后续的语句。

下面是一个例子,演示了单分支结构的使用:

result = input("请输入一个随机数:")
if int(result) >= 10:
    print("输入的数字是两位数")

 双分支结构

在Python中,双分支结构主要由if-else语句组成。它根据条件的真假来执行不同的代码块。

以下是一个双分支结构的示例:

if 条件:
    # 如果条件为真,执行这里的代码块
    代码块1
else:
    # 如果条件为假,执行这里的代码块
    代码块2

 一个更实际的示例是判断一个数的正负:

num = int(input("请输入一个整数:"))
if num > 0:
    print("这个数是正数")
else:
    print("这个数是负数或零")

我们通过input函数获取用户输入的整数,并使用if-else语句判断这个数是正数还是负数(包括零)。根据条件的真假,我们打印出相应的结果。

 多分支结构

f-elif-else语句:使用if-elif-else语句可以根据多个条件的真假执行不同的代码块。示例代码如下:

if condition1:
    # 条件1成立时执行的代码
elif condition2:
    # 条件2成立时执行的代码
else:
    # 条件1和条件2都不成立时执行的代码

 下面是一个多分支结构的演示案例:

num = int(input("请输入一个整数:"))
if num > 0 and num <=9:
    print("这个数是正数")
elif num > 9:
    print("这个数是两位数")
else:
    print("这个数是负数或零")

 在这个案例中,如果输入的整数大于0小于9,执行 if 条件中的代码块,如果不匹配,执行elif 条件中的判断,若满足elif判断条件,执行elif中的代码块,若if 和elif 条件都不满足,则执行else中的代码块。

三.循环结构

生活中很多问题无法一次解决,必须反复做同一件事,如公交车等工具必须每天在同样的时间出发,类似的反复做同一件事的情况称之为循环。Python中的循环结构包括for循环和while循环。

for 循环

for循环是一种遍历迭代对象的循环结构,通过指定一个序列或者其他可迭代对象来进行遍历。语法如下:

for 变量 in 可迭代对象:
    循环体

 例如:

colors = ['red', 'green', 'blue']
for color in colors:
    print(color)

 关键字:break/continue

语法结构:

for 变量 in 可迭代对象:
    下面是循环体:
    if 条件:
        break:循环被break中断时,循环被认为是非正常结束,此时不会执行else中的代码块
        continue:正常结束本次循环,开始执行下一次循环。此时会执行else中的代码块
    else:
        代码块
        当循环正常结束,会执行else中的代码块

if- else 演示案例:

numbers = [1, 2, 3, 4, 5]
for number in numbers:
    if number % 2 == 0:
        print(f"数字{number}是偶数")
    else:
         print(f"数字{number}是奇数")

print会输出for 循环从容器numbers遍历的元素,输出完成后,执行else中的代码块。 

break 演示案例:

numbers = [1, 2, 3, 4, 5]
for number in numbers:
    if number % 2 == 0:
        break
        print(f"数字{number}是偶数")
    else:
         print(f"数字{number}是奇数")

print会输出for 循环第一次从容器numbers中遍历的元素,当遍历的元素2满足 if 语句条件时执行 if 语句中的代码块,当执行break关键字会中断for 循环,print函数和else中的代码块都不会被执行

continue 关键字演示案例:

numbers = [1, 2, 3, 4, 5]
for number in numbers:
    if number % 2 == 0:
        continue
        print(f"数字{number}是偶数")
    else:
         print(f"数字{number}是奇数")

 当 number 的值满足 if 条件语句的值时,执行if 语句中的代码块,执行continue关键字时会正常结束本次循环不会执行[print(f"数字{number}是偶数")]语句,然年后开始执行下一次循环,从而实现仅输出奇数数字的效果。

range 函数

 在Python中,range()函数是一个内置函数,用于生成一个整数序列。

range()函数的基本语法是:

range(stop)
range(start, stop, step)
  • start:可选参数,表示生成序列的起始值,默认为0。
  • stop:必需参数,表示生成序列的结束值。生成的序列不包含该值。
  • step:可选参数,表示生成序列的步长,默认为1。step>0 升序 step<0 降序

下面是一些使用range()函数的示例:

numbers = list(range(10))
print("生成一个从0到9的整数序列",numbers)

odd_numbers = list(range(1, 11, 2))
print("生成一个从1到10的奇数序列:",odd_numbers)

odd_numbers = list(range(11, 1, -2))
print("生成一个从11到1的奇数降序序列:",odd_numbers)

输出等腰三角形

m = int(input("请输入总层数:"))
for line_number in range(1,m+1,1):
    print((m - line_number) * " ",end=" ")
    print((line_number*2-1)*"*")

等腰三角形遵循如下数列规则:第n行星号个数=n*2-1/空格数=总层数-n;

假设总层数为5,利用end参数使print函数不换行输出,这样就可以实现第一行先输出5-1=4个空格,然后不换行输出1*2-1=1个星号,依次类推实现输出等腰三角形。

while 循环

while语句用于创建一个循环,只要给定的条件为真,循环就会一直执行。在循环体内,可以执行需要重复执行的语句。每次循环开始时,会先判断条件是否为真,如果为真,则执行循环体。执行完循环体后,会再次判断条件是否为真,如果为真,则继续执行循环体,这个过程会一直重复,直到条件为假为止。

while语法如下:

while 条件:
    循环体

 以下是一个例子,展示了while循环的用法:

i = 1
while i <= 5:
    print(i)
    i += 1

 述代码会输出数字1到5。循环开始时,变量i的值为1,满足条件,进入循环体,打印出i的值,然后i的值增加1。然后再次判断条件,i的值变为2,继续满足条件,进入循环体,重复相同的操作,直到i的值变为6,不再满足条件,循环结束。

输出等腰三角形

m = int(input("请输入总层数:"))
n = 1
while n <= m:
    print((m - n) * " ", end=" ")
    print((n * 2 - 1) * "*")
    n += 1

 计算多项式的和

m = int(input("请输入总项数:"))
he = 0
n = 1
while n <= m:
    he += 1/n * (-1 if n%2==0 else 1)
    n += 1
print(he)

 四.练习

求100以内的奇数/偶数和。

sum = 0
for i in range(1,101,2):
    sum = sum + i
print("100以内奇数和是:",sum)

sum2 = 0
for i in range(0,101,2):
    sum = sum + i
print("100以内偶数和是:",sum)

 一个自然数与3的和是5的倍数,与3的差是6的倍数,这个自然数最小是多少?

i = 0
while (i+3)%5!=0 or (i-3)%6!=0:
    i += 1
print("这个最小自然数是:",i)

 在400~500之间求一个数,它被2除余1,被5除余3,被8除余1,求这个数?

for i in range(400,501,1):
    if i%2==1 and i%5==3 and i%8==1:
        print("这个数是:",i)

 使用循环显示以下四种模式

for i in range(1,7):        # i代表每行输出的字符个数
    for n in range(1,i+1):  # n代表每次输出的字符
        print(n,"",end="")  #在同一行打印数字不换行
    print()                 #最外层循环每次迭代结束后换行

for i in range(6,0,-1):
    for n in range(1,i+1):
        print(n,"",end="")
    print()

for i in range(1,7):
    print((6-i)*" ",end="")
    for n in range(i,0,-1):
        print(n,end="")
    print()

for i in range(6,0,-1):
    print((6-i) * " ", end="")
    for n in range(i,0,-1):
        print(n,end="")
    print()

 打印等腰三角形

for i in range(1,7):
    print((7-i)*" ",end="")
    for n in range(1, i + 1):
        print(n, "", end="")
    print()

 打印左右数字对称的等腰三角形

for i in range(1,7):
    print((6-i)*" ",end="")
    for n in range(i,0,-1):
        print(n,end="")
    for n in range(2,i+1):
        print(n,end="")
    print()

 打印菱形

for i in range(1,5):          #控制打印层数在1-4层
    print((5-i)*" ",end="")   #设置打印的空格数,且不换行执行下面代码
    for n in range(1, i + 1): #控制打印的数字字符个数
        print(n, "", end="") 
    print()

for i in range(5,0,-1):
    print((5-i)*" ",end="")
    for n in range(1, i + 1):
        print(n, "", end="")
    print()

打印空心菱形 

for i in range(1,5):
    print((5-i)*" ",end="")
    for n in range(1, i + 1):
        if n !=1 and n !=i:       #设置打印条件,打印字符不是边界字符  
            print(" ","",end="")   #打印空格
        else:                     #如果是边界字符
            print(n, "", end="")   #打印边界字符
    print()

for i in range(5,0,-1):
    print((5-i)*" ",end="")
    for n in range(1, i + 1):
        if n !=1 and n !=i:
            print(" ","",end="")
        else:
            print(n, "", end="")
    print()

 打印两个上下对称的空心等腰三角形

for i in range(1,5):
    print((5-i)*" ",end="")
    for n in range(1, i + 1):
        if n !=1 and n !=i:
            print(" ","",end="")
        else:
            print(n, "", end="")
    print()

for i in range(5,0,-1):
    print((5-i)*" ",end="")
    if i ==5:                        #此处if语句制第几层打印对称轴
        for n in range(1, i + 1):
            print(n, "", end="")
        print()
    else:
        for n in range(1, i + 1):
            if n !=1 and n !=i:
                print(" ","",end="")
            else:
                print(n, "", end="")
        print()

  五.面试题

求质数,要求尽可能减少循环次数

def Prime_number(num):
    for i in range(2,int(num**0.5)+1):
        if num % i == 0:
            print("不是素数")
            break
    else:
        print("是素数")
Prime_number(9)

重点:6倍定理

当数字>5时,所有质数一定是6的倍数+1 或者 6的倍数 -1

numbers = int(input("请输入一个数字"))
if numbers == 1 or numbers==3 or numbers==5 or numbers==7:
    print(f"{numbers}是质数")
else:
    #判断num是否是6的倍数+1 或者 6的倍数 -1
    if numbers % 6 ==5 or numbers % 6==1:
        #
        for i in range(7,int(numbers ** 0.5)+1,6):
            if numbers % i ==0 or numbers %(i+2) ==0:
                print(f"{numbers}是一个非质数,能够被{i}或者{i+2}整除")
            else:
                print(f"{numbers}是一个质数")
    else:
        print(f"{numbers}不是一个质数")

总结

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北 染 星 辰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值