您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > python课程大练习-实验报告
实验报告课程名称:实验学期:2019年至2020年第1学期实验时间:2019年月日专业:数据科学与大数据技术班级:学号:姓名:指导教师:[在此处键入]1实践一python课程大练习1.1实践:python课程大练习1.1.1实验目的1.通过这次实验掌握python函数的定义,调用。2.熟练掌握if语句,for语句,while语句的运用。3.学会区分与使用形参和实参,掌握形参中的固定形参和可变参数的使用。4.体会并熟练掌握python的数据结构的特点及用法,列如:列表,字典,元组等。1.1.2实验内容及步骤1.分析问题2.编写代码3.运行程序4.结果展示1.1.3程序运行过程、方法和运行结果1.求1-2+3-4+5-6+7-8...+99的和。分析:分析问题之后找到一个求和的公式,然后通过循环进行求和defsum(n):求1-2+3-4+5-6+7-8...+99的和S=0#依次遍历1到n内的整数,奇数为正,偶数为负,再相加foriinrange(1,n):S+=((-1)**(i+1))*ireturnSprint(1-2+3-4+5-6+7-8...+99的和:+str(sum(99)))[在此处键入]2结果:2.玩家与电脑玩石头剪刀布游戏,电脑玩家都随机出拳。1---代表石头,2---代表剪刀,3---代表布。程序提示玩家出拳,并判断电脑赢还是玩家赢。分析:用python标准库函数random生成1-3内的整数随机数,找出玩家胜利的条件,平手的条件,其余的则为电脑胜利。defcaiquan():print('请选择你要出的拳头:''1.石头2.剪刀3.布')player=int(input())computer=random.randint(1,3)print('玩家出的是%d电脑出的是%d'%(player,computer))#判断谁胜利if(player==1andcomputer==2)or(player==2andcomputer==3)or(player==3andcomputer==1):print('玩家胜利')elifplayer==computer:print('打平')else:print('电脑胜利')caiquan()结果:[在此处键入]33.完全平方数,就是可以表示为某个整数的平方的数,例如9,是3的平方,16是4的平方,9和16都是完全平方数,请打印10000以内的完全平方数。分析:1到n内的数依次平方,小于n就输出它的平方数,大于n就结束循环defpingfangshu(n):打印n内的完全平方数#1到n内的数依次平方,小于n就输出它的平方数,大于n就结束循环foriinrange(1,n):ifi**2=n:print(i**2,end=)else:breakprint(打印n内的完全平方数)pingfangshu(1000)结果:4.编写一个函数,输入n为偶数时,调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函数1/1+1/3+...+1/n。分析:根据输入的n来判断其奇偶性,再选择不同的求和公式deffenshu(n):调用函数求1/2+1/4+...+1/n,当输入n为奇数时,调用函1/1+1/3+...+1/nsum=0#判断n的奇偶性ifn%2==0:[在此处键入]4#求其前n/2项偶数的倒数和foriinrange(2,n+1,2):sum+=1/ireturnsumelse:#求其前n/2项奇数的倒数和foriinrange(1,n+1,2):sum+=1/ireturnsumprint(前n/2个的偶数(奇数)的倒数和为:+str(fenshu(8)))结果:n=8n=95.对于一个十进制的正整数,定义f(n)为其各位数字的平方和,如:f(13)=1**2+3**2=10f(207)=2**2+0**2+7**2=53下面给出三个正整数k,a,b,你需要计算有多少个正整数n满足a=n=b,且k*f(n)=n。例如:输入:51500010000输出:3分析:先写各位数字的平方和的函数f(n),方法是将整数转换成列表,再依次求每个元素的平方,最后求和。再写有多少个正整数n满足a=n=b,且k*f(n)=n的函数,方法是判断a和b之间的整数是否满足k*f(n)=n,满足就将个数加一,不满足就退出本次循环,开始下次循环。deff(n):求各位数字的平方和列如:f(13)=1**2+3**2=10[在此处键入]5#将整数转换为列表int_list=list(map(int,str(n)))sum=0#求列表中各项的平方和foriinrange(0,len(int_list)):sum+=int_list[i]**2returnsumdefshijinzhi(*_list):#输入的三个整数k,a,bk=_list[0]a=_list[1]b=_list[2]#满足条件的次数ii=0#判断在a和b中的整数是否满足n==k*f(n),满足次数+1,不满足就继续循环forninrange(a,b+1):ifn==k*f(n):i+=1else:continuereturniprint(满足条件的次数为:+str(shijinzhi(51,5000,10000)))结果:6.猜数字:[在此处键入]6a.随机产生一个1~100范围内的数字;b.让用户猜这个数字,并读取用户的输入;c.当用户没有猜对的时候:提示用户的输入太大或太小;d.再次读取用户的输入,当用户猜对的时候,输出用户猜测的次数。分析:比较用户输入的数和电脑随机生成的数,告诉用户猜大了还是猜小了并让用户再输入数字并且令用户输入的次数加1,然后退出本次循环,开始下次循环,当用户输入0时退出整个循环,结束程序。defsuiji():user=int(input(猜电脑输入的数为多少:))computer=random.randint(1,100)#猜测次数i=1#将user与computer比较,告诉user猜大了还是猜小了whileuser!=computer:ifusercomputeranduser!=0:user=int(input(你猜小了,再猜,【如果你不想猜了,输入0】))ifuser==0:continueelse:i+=1elifusercomputeranduser!=0:user=int(input(你猜大了,再猜,【如果你不想猜了,输入0】))ifuser==0:continueelse:i+=1#如果不想猜了,就结束循环else:[在此处键入]7break#猜完之后,输出猜测的次数iifuser==computer:print(恭喜你猜对了,你一共猜了%d次。%i)else:print(你没有猜对,一共猜了%d次。%i)suiji()结果:1.1.4实验中遇到的问题及分析、解决过程无
本文标题:python课程大练习-实验报告
链接地址:https://www.777doc.com/doc-7348277 .html