Python程序设计基础 课件 第4章 控制结构_第1页
Python程序设计基础 课件 第4章 控制结构_第2页
Python程序设计基础 课件 第4章 控制结构_第3页
Python程序设计基础 课件 第4章 控制结构_第4页
Python程序设计基础 课件 第4章 控制结构_第5页
已阅读5页,还剩96页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第4章

控制结构python程序设计基础教程4.1概述三种基本控制结构:顺序结构选择结构:分支,条件循环结构4.2选择结构if条件语句if单分支if双分支if多分支条件表达式4.2.1if单分支if单分支语句格式如下:if<条件表达式>: <语句组A>示例:根据成绩返回是否通过考试score=int(input("请输入分数:"))ifscore>=60:print("您的考试成绩为{},恭喜通过!".format(score))#结果:请输入分数:65您的考试成绩为65,恭喜通过!4.2选择结构4.2.2if双分支

if双分支语句格式如下:if<条件表达式>: <语句组A>else: <语句组B>4.2选择结构4.2.2if双分支示例:改进的根据成绩返回是否通过的例子,若大于或等于60分,则返回分数并显示通过,否则返回分数并实现未通过。score=int(input("请输入分数:"))ifscore>=60:print("您的考试成绩为{},恭喜通过!".format(score))else:print("您的考试成绩为{},未通过,继续努力!".format(score))#结果:请输入分数:65您的考试成绩为65,恭喜通过!请输入分数:45您的考试成绩为45,未通过,继续努力!4.2选择结构示例:求两个数的较大值,并输出a,b=eval(input("a,b="))ifa>=b:max=aelse:max=bprint("a={},b={}".format(a,b))print('max={}'.format(max))#结果:a,b=34.5,89.7a=34.5,b=89.7max=89.7a,b=45,21a=45,b=21max=454.2.2if双分支练习4.2选择结构if多分支语句格式如下:if<条件表达式1>: <语句组1>elif<条件表达式2>: <语句组2>……elif<条件表达式n>: <语句组n>else: <语句组x>注意:if语句中的各分支,只会执行其中的一组4.2.3if多分支4.2选择结构示例:再次改进的根据成绩返回结果的例子,若大于或等于90分,则返回分数并显示“优秀”,若小于90分,但大于等于60分,则返回分数并显示“通过”;若低于60分,则返回分数并显示“未通过”。score=int(input("请输入分数:"))ifscore>=90:print("您的考试成绩为{},优秀!".format(score))elifscore>=60:print("您的考试成绩为{},通过!".format(score))else:print("您的考试成绩为{},未通过!".format(score))4.2.3if多分支4.2选择结构score=int(input("请输入分数:"))ifscore>=90:print("您的考试成绩为{},优秀!".format(score))elifscore>=60:print("您的考试成绩为{},通过!".format(score))else:print("您的考试成绩为{},未通过!".format(score))#结果:请输入分数:98您的考试成绩为98,优秀!请输入分数:75您的考试成绩为75,通过!请输入分数:50您的考试成绩为50,未通过!#结果:请输入分数:200您的考试成绩为200,优秀!请输入分数:-50您的考试成绩为-50,未通过!问题:缺逻辑示例存在的问题4.2选择结构score=int(input("请输入分数(0-100):"))if0<=score<=100:ifscore>=90:print("您的考试成绩为{},优秀!".format(score))elifscore>=80:print("您的考试成绩为{},良好!".format(score))elifscore>=70:print("您的考试成绩为{},中等!".format(score))elifscore>=60:print("您的考试成绩为{},及格!".format(score))else:print("您的考试成绩为{},不及格!".format(score))else:print("成绩为{},无效!".format(score))#结果:请输入分数(0-100):198成绩为198,无效!请输入分数(0-100):75您的考试成绩为75,中等!请输入分数(0-100):-50成绩为-50,无效!4.2.3示例优化4.2选择结构条件表达式语句格式如下:<True部分>if<条件表达式>else<False部分>示例:判断x的奇偶,将结果记录在result中。x=int(input(“请输入一个整数:"))result="偶数"ifx%2==0else"奇数“print("{}是{}".format(x,result))条件句等价于:ifx%2==0: result="偶数"else: result="奇数"#结果:>>>请输入一个整数:3434是偶数>>>请输入一个整数:2727是奇数4.2.4条件表达式4.2选择结构4.3循环结构for循环:遍历循环while循环:条件循环4.3循环结构for循环:遍历循环while循环:条件循环4.3.1循环结构:for循环1for循环语句格式1如下:for<元素>in<数据集>: <循环体>示例:求自然数1~100的和sum=0foriinrange(1,101):sum+=i#sum=sum+iprint("1+2+3+…+100={}".format(sum))#结果:1+2+3+…+100=5050方法二:print("1+2+3+…+100={}".format(sum(range(1,101))))4.3循环结构示例1:快速生成数据序列1>>>list1=[iforiinrange(1,5,2)][1,3]示例1相当于:list1=[]foriinrange(1,5,2):list1+=[i]print(list1)示例2:快速生成数据序列>>>[i**2foriinrange(10)ifi%2==0][0,4,16,36,64]示例2相当于:list1=[]foriinrange(10):ifi%2==0:list1+=[i**2]print(list1)4.3循环结构(1)for循环的应用1示例:删除所有的数字字符s=input('输入一个字符串:')str=''.join([iforiinsifnoti.isdigit()])print(str)一个小变化:s=input('输入一个字符串:')str='‘.join([iforiinsifnoti.isdigit()])print(str)一个小变化:s=input('输入一个字符串:')str=‘*'.join([iforiinsifnoti.isdigit()])print(str)4.3循环结构(2)for循环的应用2示例:统计字符串的单词及其出现次数s=input("输入一个字符串:")list1=list(s.split(''))dict1=dict()##dict1={}forwordinlist1:dict1[word]=dict1.get(word,0)+1print(dict1)4.3循环结构(2)for循环的应用2示例:将一个字符串中的大写字母换小写,小写字母换大写,其它字符不变。##大小写字母互换.方法二s=input('输入一个字符串:')st=s.swapcase()##大小写字母互换print(st)

##大小写字母互换.方法一s=input('输入一个字符串:')s=list(s)#字符串不可更改,先转成列表类型foriinrange(len(s)):

ifs[i].isupper():s[i]=s[i].lower()elifs[i].islower():s[i]=s[i].upper()s=''.join(s)#变回字符串print(s)#结果:输入一个字符串:This123atest!tHIS123ATEST!输入一个字符串:Hello+World!hELLO+wORLD!4.3循环结构(3)for循环示例-大小写转换for循环语句格式2:for<元素>in<数据集>: <循环体>else: <语句组>分析:for循环条件满足时,执行循环体不满足时,执行else后的语句组,并退出循环4.3.2循环结构:for循环24.3循环结构示例:给定的范围内的数据查找startnum=int(input("请输入查找数据的起始值:"))endnum=int(input("请输入查找数据的终止值:"))foriinrange(startnum,endnum+1):ifi%7==0andi%5==0:print("找到数值{}符合要求".format(i))else:print(“查找完毕!")请输入查找数据的起始值:100请输入查找数据的终止值:200找到数值105符合要求找到数值140符合要求找到数值175符合要求查找完毕(1)for循环2应用4.3循环结构示例:打印杨辉三角的前rows行内容(2)for循环2应用-杨辉三角4.3循环结构rows=int(input("请输入需要显示的杨辉三角的行数:"))rowlist=[1,1]foriinrange(1,rows+1):nextrowlist=[1]print(""*2*(rows-i),end="")forjinrange(len(rowlist)-1):print("%4s"%rowlist[j],end="")nextrowlist+=[rowlist[j]+rowlist[j+1]]print("%4s"%rowlist[-1])nextrowlist+=[1]rowlist=nextrowlist(2)for循环2应用-杨辉三角4.3循环结构while循环语句格式1:while<条件表达式>: <循环体>示例:求自然数1~100的和sum=0i=1whilei<=100:sum+=ii+=1print("1+2+3+…+100={}".format(sum))4.3.3while循环4.3循环结构示例:求自然数1+3+5+7+…+99的和sum=0i=1whilei<=100:sum+=ii+=2print(“while:100以内奇数的和={}".format(sum))sum=0foriinrange(1,100,2):sum+=iprint("for:100以内奇数的和={}".format(sum))比较:While是条件循环,无需知道循环次数For是遍历循环,要求明确循环次数(1)while循环和for循环对比4.3循环结构示例:2016年国家总人口为13.8亿,增长率为5.9‰,现欲估算多少年后国家总人口达到20亿?population=13.8years=0whilepopulation<20:years+=1population*=1+0.0059##p=p*(1+0.0059)print("{}年后,国家总人口达到20亿".format(years))未知循环次数(重复执行次数)通常用while循环#结果:64年后,国家总人口达到20亿(2)循环结构的应用-人口问题4.3循环结构num=int(input('输入一个整数:'))vernum=0#逆序数=0whilenum:vernum=vernum*10+num%10#4434324321num//=10#1231210print(‘逆序数=%d’%vernum)#输出逆序数(((0*10+4)*10+3)*10+2)*10+1示例:构造一个数的逆序数。如1234->4321(2)循环结构的应用-逆序数4.3循环结构while循环语句格式2如下:while<条件表达式>: <循环体>else: <语句组>else分句的使用方法与for类似循环条件满足时,执行循环体;不满足时,执行else后的语句组,退出循环4.3.4while…else循环4.3循环结构一个类似的示例:假设有一足够大的纸,其厚度为0.15mm,编程计算对折多少次后其厚度能超过珠穆朗玛峰的高度(8848.43m)。high=0.00015n=0whilehigh<8848.43:n+=1high*=2else:print("计算结束!")print("对折{}次后,纸的厚度能超过珠穆朗玛峰的高度".format(n))for结构实现的循环,while结构都能够实现,更加灵活计算结束!对折26次后,纸的厚度能超过珠穆朗玛峰的高度(1)循环结构的应用-while…else循环应用4.3循环结构问题:条件表达式设为True时,将陷入死循环whileTrue:year=int(input("请输入需要查询的年份:"))if(year%100!=0andyear%4==0)oryear%400==0:print("{}年是闰年".format(year))else:print("{}年不是闰年".format(year))示例:判断一个年份是否是闰年闰年判断的或条件:年份值能够被4整除,不能被100整除;年份值能够被400整除。请输入需要查询的年份:20222022年不是闰年请输入需要查询的年份:20082008年是闰年请输入需要查询的年份:问题:死循环,怎么办?(1)循环结构的应用-while循环应用-死循环问题4.3循环结构break语句continue语句pass语句4.3.5其他循环控制语句4.3循环结构break语句循环体内的break语句可以中止并跳出本级循环。for循环和while循环均可以使用该语句。(1)其他循环控制语句:break语句4.3循环结构示例:修改上例判断闰年的例子,管理员输入0退出循环whileTrue:year=int(input(“请输入需要查询的年份(0则退出):"))

ifyear==0:##输入0时退出,否则继续循环

breakif(year%100!=0andyear%4==0)oryear%400==0:print("{}年是闰年".format(year))else:print("{}年不是闰年".format(year))请输入需要查询的年份(0则退出):20222022年不是闰年请输入需要查询的年份(0则退出):20082008年是闰年请输入需要查询的年份(0则退出):04.3循环结构break语句应用示例:查找给定的范围内满足条件的第一个数startnum=int(input("请输入查找数据的起始值:"))endnum=int(input("请输入查找数据的终止值:"))foriinrange(startnum,endnum+1):ifi%7==0andi%5==0:print("找到数值{}符合要求".format(i))breakelse:print("该范围内找不到符合要求的数")4.3循环结构break语句应用continue语句循环体内的continue语句可以中止此轮循环,直接进入下一轮循环。for循环和while循环均可以使用该语句。(2)continue语句4.3循环结构continue语句与break语句对比foriinrange(1,10):ifi%2==0:continueprint(i)foriinrange(1,10):ifi%2==0:breakprint(i)#结果:13579#结果:14.3循环结构continue语句应用示例:continue语句与break语句对比forsin"苏锡常":ifs=="锡":continueprint(s,end="")

forsin"苏锡常":ifs=="锡":breakprint(s,end="")

#结果:苏常#结果:苏continue应用4.3循环结构pass语句编写一个规模稍大的应用程序时,通常会用pass语句作为代码的占位。在异常处理时,也经常使用pass语句。forletterin'Python':ifletter=='h':passprint('Thisispassblock')print('CurrentLetter:',letter)print("Goodbye!")#结果CurrentLetter:PCurrentLetter:yCurrentLetter:tThisispassblockCurrentLetter:hCurrentLetter:oCurrentLetter:nGoodbye!示例:(3)其他循环控制语句:pass语句4.3循环结构嵌套循环的工作机制九九乘法表查找算法:顺序查找,二分查找排序算法:交换排序,冒泡排序素数问题进制转换问题数据分块词汇统计数值统计求最大最小值算法实例4.4综合应用循环嵌套问题在一个循环体内又包含了循环结构,这种结构称为循环嵌套。循环嵌套对while循环和for循环语句都适用。如在while循环中嵌入for循环,也可在for循环中嵌入while循环。循环嵌套4.4综合应用foriinrange(0,3):#i:0,1,2forjinrange(0,2):#j:0,1print('i=%d,j=%d'%(i,j))print()嵌套循环的工作机制4.4综合应用(1)算法实例-打印九九乘法表4.4综合应用foriinrange(1,10):forjinrange(1,10):print('%d*%d=%d\t'%(i,j,i*j),end='')print()问题:1.应该是个下三角2.乘数9*1=91*9=9(1)算法实例-打印九九乘法表4.4综合应用foriinrange(1,10):forjinrange(1,i+1):print('%d*%d=%d\t'%(j,i,i*j),end='')print()示例:打印九九乘法表-改进

4.4综合应用已知vec=[[1,2],[3,4]],则表达式[colforrowinvecforcolinrow]的值是?示例:嵌套循环1列表生成式分析:vec=[[1,2],[3,4]]list=[]forrowinvec:#[1,2][3,4]forcolinrow: list+=[col]#1,2,3,4#list.append(col)print(list)已知vec=[[1,2],[3,4]],则表达式[[row[i]forrowinvec]foriinrange(len(vec[0]))]的值是?示例:嵌套循环2分析:vec=[[1,2],[3,4]]list=[]foriinrange(len(vec[0])):#i:0,1forrowinvec:#row:0,1list+=[row[i]]#[1,3],[2,4]print(list)已知vec=[[1,2],[3,4]],则表达式[[row[i]forrowinvec]foriinrange(len(vec[0]))]的值是?示例:嵌套循环2分析:vec=[[1,2],[3,4]]list=[]foriinrange(len(vec[0])):#i:0,1st=[]forrowinvec:#row:0,1 st+=[row[i]]#st.append(row[i])#[1,3],[2,4]list+=st#list.append(st)print(list)查找算法顺序查找:将序列seq中的元素依次与x比较,若相等则查找成功,返回该元素下标;否则返回查找失败对应信息。二分法查找:即折半查找查找序列中的数值是有序排列的(2)算法实例:查找算法4.4综合应用顺序查找:将序列seq中的元素依次与x比较,若相等则查找成功,返回该元素下标;否则返回查找失败对应信息。(2)算法实例:查找算法4.4综合应用顺序查找:将序列seq中的元素依次与x比较,若相等则查找成功,返回该元素下标;否则返回查找失败对应信息。importrandom##生成随机序列searchseqsearchseq=[]foriinrange(20):#i:0..19searchseq+=[random.randint(1,100)]#1..100print("查找序列:{}".format(searchseq))(2)算法实例:查找算法4.4综合应用顺序查找##在序列searchseq中查找x的位置x=int(input("请输入待查找数值:"))foriinrange(len(searchseq)):ifsearchseq[i]==x:print("{}在查找序列中的下标为{}".format(x,i))breakelse:print("查无此数!")(2)算法实例:查找算法4.4综合应用顺序查找#结果:查找序列:[51,31,15,24,74,85,27,58,46,84,51,32,19,71,63,13,17,85,28,75]请输入待查找数值:2424在查找序列中的下标为3查找序列:[91,95,97,69,46,15,68,36,86,30,11,4,86,35,46,24,28,52,98,68]请输入待查找数值:1查无此数!(2)算法实例:查找算法4.4综合应用二分法查找:折半查找

以在升序序列seq中,按折半法来查找给定值x所在的位置。思路:先将x与升序序列seq的中间元素进行比较,若x与中间元素相等,直接返回当前元素位置;若x比中间元素大,说明x若存在于序列中,则一定在序列的后半部分;若x比中间元素小,说明x若存在于序列中,则一定在序列的前半部分。此时,若x与中间元素相等,则已返回结果,完成操作;若不等,也已经将查找范围缩小了一半,在其中用同样的方法进行查找。重复上述操作直到找到返回位置或给出查找失败的对应信息。(2)算法实例:查找算法4.4综合应用二分法(折半)查找二分法(折半)查找importrandom##生成随机序列searchseqsearchseq=[]foriinrange(10):searchseq+=[random.randint(i*5,i*5+4)]print("查找序列:{}".format(searchseq))##在序列searchseq中查找x的位置x=int(input("请输入待查找数值:"))left=0right=len(searchseq)-1(2)算法实例:查找算法4.4综合应用whileleft<=right:mid=(left+right)//2##显示查找过程中的下标位置

print("left:{}right:{}mid:{}".format(left,right,mid))ifx==searchseq[mid]:print("{}在查找序列中的下标为{}".format(x,mid))breakelifx>searchseq[mid]:left=mid+1else:right=mid-1else:##显示找不到时的下标位置

print("left:{}right:{}".format(left,right))print("查无此数!")折半查找运行结果1:查找序列:[3,6,14,18,20,29,30,39,44,47]请输入待查找数值:44left:0right:9mid:4left:5right:9mid:7left:8right:9mid:844在查找序列中的下标为8运行结果2:查找序列:[1,7,10,17,24,29,32,39,40,45]请输入待查找数值:20left:0right:9mid:4left:0right:3mid:1left:2right:3mid:2left:3right:3mid:3left:4right:3查无此数!排序设排序目标是升序选择排序:每一轮比较选择,找到最小值和目标位置的值交换。冒泡排序:交换排序方法,两两比较,逆序则交换。(3)算法实例:排序算法4.4综合应用选择排序:通过每一轮的比较,找到对应位置排序后应该存放的元素与目前存放的元素进行交换。

算法效率分析:比较次数与初始序列内元素的排列情况无关。设初始序列有n个元素,则共需进行n(n-1)/2次元素比较。(3)算法实例:选择排序算法4.4综合应用importrandom##生成随机序列sortseqsortseq=[]foriinrange(5):sortseq+=[random.randint(10,99)]print("初始序列:{}".format(sortseq))(3)算法实例:选择排序算法4.4综合应用排序##对序列sortseq选择法升序排序foriinrange(4):#i:0..3min=i#i是基准位置forjinrange(i+1,5):#j:i+1..4ifsortseq[j]<sortseq[min]:min=j#min记录最小值的位置ifmin!=i:sortseq[min],sortseq[i]=sortseq[i],sortseq[min]print("排序后:{}".format(sortseq))运行结果:初始序列:[45,40,32,90,14]排序后:[14,32,40,45,90](3)算法实例:选择排序算法4.4综合应用若需打印每一轮循环的结果,只需在内层循环的最后添加一句代码: print("第{}轮:{}".format(i+1,sortseq))执行结果如下:

初始序列:[41,70,52,90,10]第1轮:[10,70,52,90,41]第2轮:[10,41,52,90,70]第3轮:[10,41,52,90,70]第4轮:[10,41,52,70,90]排序后:[10,41,52,70,90](3)算法实例:选择排序算法4.4综合应用冒泡排序:通过元素的两两比较及交换来完成排序。(3)算法实例:冒泡排序算法4.4综合应用importrandom##生成随机序列sortseqsortseq=[]foriinrange(5):sortseq+=[random.randint(10,99)]print("初始序列:{}".format(sortseq))(3)算法实例:冒泡排序算法4.4综合应用##对序列sortseq冒泡法升序排序foriinrange(4,0,-1):forjinrange(i):ifsortseq[j]>sortseq[j+1]:sortseq[j],sortseq[j+1]=sortseq[j+1],sortseq[j]##打印每一轮排序结果print("第{}轮:{}".format(5-i,sortseq)) print("排序后:{}".format(sortseq))(3)算法实例:冒泡排序算法4.4综合应用运行结果:初始序列:[74,42,43,75,55]第1轮:[42,43,74,55,75]第2轮:[42,43,55,74,75]第3轮:[42,43,55,74,75]第4轮:[42,43,55,74,75]排序后:[42,43,55,74,75]

由运行结果可以看出排序过程中,排好序还要继续进行下一轮,是否可以将该程序改进呢?(3)算法实例:冒泡排序算法4.4综合应用##对序列sortseq进行升序排序(改进后的冒泡排序)foriinrange(4,0,-1):flag=Falseforjinrange(i):ifsortseq[j]>sortseq[j+1]:sortseq[j],sortseq[j+1]=sortseq[j+1],sortseq[j]flag=Trueprint("第{}轮:{}".format(5-i,sortseq))ifnotflag:breakprint("排序后:{}".format(sortseq))(3)算法实例:冒泡排序算法-优化4.4综合应用运行结果:初始序列:[97,88,12,83,89]第1轮:[88,12,83,89,97]第2轮:[12,83,88,89,97]第3轮:[12,83,88,89,97]排序后:[12,83,88,89,97]算法效率分析:冒泡排序算法的执行与序列元素的原次序有很大关系。若原序列是已经排好序的,则通过冒泡排序只要通过一轮比较即可确定出结果。(3)算法实例:冒泡排序算法-优化4.4综合应用排序算法说明排序计算机经典的排序算法中还有插入排序、希尔排序、堆排序、归并排序、快速排序等等,其中堆排序、归并排序和快速排序相对性能较好,排序速度较快。4.4综合应用素数问题:质数素数即符合以下条件的数:除了1和自身,没有其他因子;该数是大于1的自然数。num=int(input('输入一个整数:'))foriinrange(2,num):ifnum%i==0:print(num,"不是素数")breakelse:print(num,"是素数")num=int(input('输入一个整数:'))i=2while(i<num):ifnum%i==0:print(num,"不是素数")breaki+=1else:print(num,"是素数")示例1:设计一算法,判断一个数是不是素数。(4)算法实例-素数问题4.4综合应用示例2:设计一算法,找出100以内所有的素数。primelist=[]foriinrange(2,101):forjinrange(2,i):ifi%j==0:breakelse:primelist+=[i]print(primelist)#结果:[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97](4)算法实例-素数问题4.4综合应用示例3:键盘输入两个大于0的整数,按要求输出这两个整数之间(不包括这两个整数)的所有素数。n1,n2=eval(input('输入区间的首尾值:'))fornuminrange(n1+1,n2):foriinrange(2,num):if(num%i)==0:breakelse:print(num,end='')#结果:输入区间的首尾值:100,150101103107109113127131137139149(4)

算法实例-素数问题4.4综合应用print('100-999中的最大的3个素数是:')count=3forninrange(999,100,-1):foriinrange(2,n):ifn%i==0:breakifi==n-1:print(n,end='')count-=1ifnotcount:break扩展.求100-999中最大的3个素数。算法设计分析:Count的巧妙设计(4)算法实例-素数问题4.4综合应用示例4:将列表ls=[51,33,54,56,67,88,431,111,141,72,45,2,78,13,15,5,69]中的素数去除,并输出去除素数后列表的元素个数。prime=[]ls=[51,33,54,56,67,88,431,111,141,72,45,2,78,13,15,5,69]foriinls:forjinrange(2,i):ifi%j==0:breakelse:prime+=[i]print('ls中的素数是:',prime)foriinprime:ls.remove(i)print('去除素数后的ls是{}'.format(ls))print('ls中的非素数有{}个'.format(len(ls)))算法设计分析:1.构造一个新的列表prime,存放ls中的素数。2.在ls中判断,只要元素是在prime中存在,就在ls中删除。(4)算法实例-素数问题4.4综合应用(4)算法实例-素数问题4.4综合应用进制转换设计一算法,将十进制正整数转换为十六进制十六进制对应十进制十六进制对应十进制0088119922A1033B1144C1255D1366E1477F15(5)算法实例-进制转换4.4综合应用10-16进制转换除16取余法进制转换数值0~15与十六进制0~F对应01234567891011121314150123456789ABCDEF设计一个字符串序列"0123456789ABCDEF",该序列中的每个字符对应的下标恰恰就是这个十六进制数字代表的十进制数值大小。因此可以将获得的余数作为下标来获取其对应的十六进制数字。(5)算法实例-进制转换4.4综合应用Dnum=int(input("请输入十进制整数:"))ifDnum==0:Hnum="0"else:Hnum=“”#空串Hdigits="0123456789ABCDEF"whileDnum!=0:remainder=Dnum%16Hnum=Hdigits[remainder]+Hnum//连接运算Dnum//=16print("对应的十六进制值为{}".format(Hnum))#结果:请输入十进制整数:300对应的十六进制值为12C请输入十进制整数:0对应的十六进制值为0函数方法:hex(Dnum)Dnum:3001810Hnum:C2C12C(5)算法实例-进制转换4.4综合应用(5)算法实例-进制转换4.4综合应用Dnum=int(input("请输入十进制整数:"))ifDnum==0:Qnum="0"else:Qnum=""Qdigits="01234567"whileDnum!=0:remainder=Dnum%8Qnum=Qdigits[remainder]+QnumDnum//=8print(“对应的八进制值为{}".format(Qnum))#结果:请输入十进制整数:123对应的八进制值为173函数方法:oct(Dnum)(5)算法实例-八进制转换4.4综合应用Dnum=int(input("请输入十进制整数:"))ifDnum==0:Bnum="0"else:Bnum=""Bdigits="01"whileDnum!=0:remainder=Dnum%2Bnum=Bdigits[remainder]+BnumDnum//=2print(“对应的二进制值为{}".format(Bnum))#结果:请输入十进制整数:123对应的二进制值为1111011函数方法:bin(Dnum)(5)算法实例-二进制转换4.4综合应用现有一个集合{10,3,4,23,43,12,5,33,19,38},请编写程序将所有小于等于20的值保存在字典的第一个键key1的值中,将大于20的值保存在第二个键key2的值中。d={'key1':[],'key2':[]}x={10,3,4,23,43,12,5,33,19,38}foriinx:ifi<=20:d['key1']=d['key1']+[i]else:d['key2']=d['key2']+[i]print(d)(6)

算法实例-数据分块4.4综合应用问题:通过键盘输入如下一组汉语词汇并以空格分隔,统计各词汇重复出现的次数,按次数的降序输出词汇及对应次数,以英文冒号分隔。示例格式如下:江苏上海浙江安徽山西安徽江苏江苏上海安徽陕西输出格式如下:江苏:3安徽:3上海:2浙江:1山西:1陕西:1(6)算法实例-数据分块4.4综合应用txt=inp

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论