目录
前言
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}不是一个质数")