(共21张PPT)
简单算法及其程序实现
3.3
解析与枚举
①需要先将图像统一转换为黑白图像。如灰度值小于132,输出为黑色,否则输出为白色
②灰度值=0.299×红色颜色分量+0.587×绿色颜色分量+0.114×蓝色颜色分量
R=43
G=10
B=241
Gray_scale=
0.299*R+0.587*G+0.114*B
if Gray_scale <132:
print(“黑色”)
else:
print(“白色”)
解析算法
解析与枚举
求解某整数x的所有因子(不包含x本身)
x = int(input(‘请输入整数x:’))
i=1
while i<=x-1:
if :
print(i)
=
x%i==0
i=i+1
枚举算法
解析与枚举
③若该信息点区域的黑色像素不少于所有像素的64%,则判断该信息点被填图
④每个信息点由25x12像素组成
fname = input(“请输入文件的名称”)
f=open(fname,”r+”) #以读写的形式打开文件
count = 01
line = f.readline() #从文件中读取一行
while line: #当line非空(从文件中读取到了数据)
R,G,B= map(int,line)
if 0.299*R+0.587*G+0.114*B<132:
line = f.readline() #继续读取一行
if :
print(“已填涂”)
count=count+1
count>=25*12*0.64
解析与枚举
下列问题中适合使用解析算法解决的是( )
A.计算两个电阻的并联值
B.完成各大网站访问量的排名
C.找出100以内所有的质数
D.找出100以内所有6的倍数
A
例题
模拟一个简易计算器,其功能是:输入两个数和一个运算符(加、减、乘、除),进行算术运算并输出运算结果。程序运行效果如下图所示。
a=float(input(″输入第一个运算数:″))
b=float(input(″输入第二个运算数:″))
ch=input(″输入运算符:″)
if______①______:
ans=a+b
print(a,″+″,b,″=″,ans)
elif ch==″-″:
______②______
print(a,″-″,b,″=″,ans)
ch==”+”
ans=a-b
例题
模拟一个简易计算器,其功能是:输入两个数和一个运算符(加、减、乘、除),进行算术运算并输出运算结果。程序运行效果如下图所示。
elif ch==″*″:
ans=a*b
print(a,″*″,b,″=″,ans)
elif ch==″/″:
if______③______:
ans=a/b
print(a,″/″,b,″=″,ans)
else:
print(″除数不能为0″)
b!=0
例题
将10个数据“12,20,15,86,55,69,96,35,99,72”依次存放在列表List1中,使用如下Python程序段找出大于50的数的个数。
List1=[12,20,31,86,55,69,96,35,99,72]
count=0
key=50
for i in range(0,10):
if____________:
count+=1
print(″大于50的个数为:″,count)
List[i]>50
例题
将10个数据“12,20,15,86,55,69,96,35,99,72”依次存放在列表List1中,使用如下Python程序段找出等于5的倍数的数的个数。
List1=[12,20,31,86,55,69,96,35,99,72]
count=0
key=5
for i in range(0,10):
if____________:
count+=1
print(″大于50的个数为:″,count)
程序中划线处的代码应为( )
A.List1[i]//count==0 B.List1[i]%count==0
C.List1[i]//key==0 D.List1[i]%key==0
例题
下列程序的功能是将十进制数整数转换为二进制数。程序运行时,输入一个十进制数整数,输出该十进制数对应的二进制数。程序运行效果如上图所示。
n=int(input(″请输入一个十进制整数:″))
y=n
s=″″
while______①______:
r=y%2
______②______
y=y//2
print(″十进制数:″,n,″转换为二进制数为:″,s)
y!=0
s=str(r)+s
例题
角谷猜想:任意一个大于1的自然数n,进行如下运算:若n为奇数,则n的值替换为3n+1,若n是偶数时,则n变为原来的一半,经过若干次计算后,该数最终必为1。编写程序,输入一个大于1的自然数,计算从该数变为1的计算次数,并输出计算过程及计算的次数。程序运行效果如下图所示。
n=int(input(″输入一个大于1的自然数:″))
count=0
print(n,″→″,end=″″)
输入一个大于1的自然数:100
100→50→25→76→38→19→58→29→88→44→22→11→34→17→52→26→13→40→20→10→5→16→8→4→2→1
计算次数为:25
例题
while______①______:
count=count+1
if n% 2==1:
______②______
else:
n=n//2
if n==1:
print(n,″\\n″)
else:
print(n,″→″,end=″″)
print(″计算次数为:″+______③______)
(2)当输入的n为3,则输出的计算次数为________。(填数字)
输入一个大于1的自然数:100
100→50→25→76→38→19→58→29→88→44→22→11→34→17→52→26→13→40→20→10→5→16→8→4→2→1
计算次数为:25
例题
m钱买n鸡问题。用m元买n只鸡,公鸡5元一只,母鸡3元一只,小鸡1元3只,输出用m钱买n鸡的所有方案及方案总数。
count=0
m=int(input(″请输入钱:″))
n=int(input(″请输入要买的鸡的数量:″))
for i in range(m//5+1):
for j in range(m//3+1):
k=______①______
if______②______:
count+=1
print(″方案″,count,″:″,i,j,k)
请输入钱:50请输入要买的鸡的数量:20方案1:3 11 6方案2:7 4 9共有方案数:2
n-i-j
i*5+j*3+k/3 == m
例题
有一只猴子,第一天摘了若干个桃子,当场吃掉了一半,觉得还不过瘾,又多吃了一个;第二天早上又将剩下的桃子吃掉一半,又多吃了一个;以后每天早上都吃了前一天剩下的一半多一个。到第10天早上猴子想再吃时,发现只剩下一个桃子了,问第一天猴子共摘了多少个桃子?
x=1
for n in range(2,11):
________________
print(″The number of peaches is:″,x)
【运行结果为】
The number of peaches is:1534
编写程序,实现如下功能:对于任意输入的正整数n,求出具有n个不同因子的最小正整数m(m≤50000)。
例如:n=4,则m=6,因为6有4个不同整数因子1,2,3,6;而且是最小的有4个因子的整数。
import math
def sum(k):
s=0
for i in range(1,int(math.sqrt(k))+1):
if k % i==0:
s+=2
if k==i*i:
______②______
returns
例题
编写程序,实现如下功能:对于任意输入的正整数n,求出具有n个不同因子的最小正整数m(m≤50000)。
例如:n=4,则m=6,因为6有4个不同整数因子1,2,3,6;而且是最小的有4个因子的整数。
n=int(input(″请输入n:″))
for m in range(1,50001):
if______①______:
print(m)
break
例题
编写程序,实现如下功能:输入包含数字、字母的字符串,统计该字符串中数字字符的个数,并输出统计结果。
s=input('请输入字符串:')
count=0
______①______
numst=″0123456789″
for i in range(0,n):
if______②______:
count+=1
print(count)
(2)输入字符串为“my2out304pop”,输出的结果为_____
例题
下列程序的功能是:程序运行时,输入正整数n,统计1至n的整数中包含数字2的整数个数,并输出统计结果。若n=20,有2、12和20三个整数包含数字2,则输出统计结果“3”。
s=0
n=int(input(″请输入n:″))
for i in range(1,n+1):
k=False
______①______
例题
下列程序的功能是:程序运行时,输入正整数n,统计1至n的整数中包含数字2的整数个数,并输出统计结果。若n=20,有2、12和20三个整数包含数字2,则输出统计结果“3”。
while not k and t>0:
if t % 10==2:
k=True
______②______
if k==True:
s=s+1
print(″包含2的整数共有:″,s)