Day4-作业

基础

一、读程序,总结程序功能

numbers = 1foriinrange (0,20):  numbers *= 2print(numbers)

答:打印2^20的结果

summation=0num=1whilenum<=100:if(num%3==0ornum%7==0)andnum%21!=0:        summation +=1num+=1print(summation)

答:打印100以内能被3或7整除,但是不能被21整除的数的个数

编程实现(for和while各写一遍):

求1到100之间所有数的和、平均值

(1)for循环

sum = 0average = 0forxinrange(1,101):    sum += xaverage = sum / 100print('1-100的所有数的和是:%d'%sum)print('1-100的所有数的平均值是:%.1f'%average)1-100的所有数的和是:50501-100的所有数的平均值是:50.5[Finishedin0.5s]

(2)while循环

num=1sum = 0average = 0whilenum <= 100:    sum += num    num += 1average = sum / 100print('1-100的所有数的和是:%d'%sum)print('1-100的所有数的平均值是:%.1f'%average)1-100的所有数的和是:50501-100的所有数的平均值是:50.5[Finishedin0.5s]

计算1-100之间能3整除的数的和

(1).for循环

sum =0fornuminrange(1,101):ifnotnum %3:        sum += numprint('1~计算1-100之间能被3整除的数的和为:%d'%sum)1~计算1-100之间能被3整除的数的和为:1683[Finishedin0.4s]

(2).while循环

num =1sum =0whilenum <=100:ifnotnum %3:        sum += num    num +=1print('1~计算1-100之间能被3整除的数的和为:%d'%sum)1~计算1-100之间能被3整除的数的和为:1683[Finishedin0.4s]

计算1-100之间不能被7整除的数的和

(1).for循环

sum = 0forninrange(1,101):ifn % 7:        sum += nprint('1-100之间不能被7整除的数的和是:%d'%sum)1-100之间不能被7整除的数的和是:4315[Finishedin0.5s]

(2).while循环

sum = 0 num = 1whilenum <= 100:ifnum % 7 :        sum += num    num += 1print('1-100之间不能被7整除的数的和是:%d'%sum)1-100之间不能被7整除的数的和是:4315[Finishedin0.5s]

二、稍微困难

1、求斐波那契数列中第n个数的值:1,1,2,3,5,8,13,21,34....

方法一

whileTrue:    num1 =1num2 =1i =1#计数n = int(input('请输入所求斐波那契数列的序号:'))ifn ==1orn ==2:print('第%d个斐波那契数列值是:1'%n)else:whilen >1:            num1,num2 = num2, num1+num2            n -=1i +=1print('第%d个斐波那契数列值是:%s'%(i,num1))效果:请输入所求斐波那契数列的序号:1第1个斐波那契数列值是:1请输入所求斐波那契数列的序号:5第5个斐波那契数列值是:5请输入所求斐波那契数列的序号:8第8个斐波那契数列值是:21

方法二

deffib(num):ifnum <=2:return1else:returnfib(num-1) + fib(num-2)num = int(input('请输入斐波那契数列的序列:'))print('第%d个斐波那契数列值是:%d'%(num,fib(num)))结果:请输入斐波那契数列的序列:8第8个斐波那契数列值是:21

2、判断101-200之间有多少个素数,并输出所有素数。判断素数的方法:用一个数分别除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数

forprimeinrange(101,201):    num =2whilenum < prime:ifnotprime % num:breakelifprime % num :            num +=1ifnum +1== prime:                print(prime,end=' ')结果:101103107109113127131137139149151157163167173179181191193197199[Finishedin0.5s]

3、打印出所有的水仙花数,所谓水仙花数是指一个三位数,其各位数字立方和等于该数本身。例如:153是一个水仙花数,因为153 = 1^3 + 5^3 + 3^3

n1 =0n2 =0n3 =0forninrange(100,1000):    n1 = n// 100n2 = n %100// 10n3 = n %10ifn == n1**3+n2**3+n3**3:        print(n,end='  ')结果:153370371407[Finishedin0.5s]

4、有一分数序列:2/1,3/2,5/3,8/5,13/8,21/13...求出这个数列的第20个分数

分子:上一个分数的分子加分母 分母: 上一个分数的分子 fz = 2 fm = 1 fz+fm / fz

fz = 2fm = 1forninrange(1,21):ifn == 20:print('第%d个分数为:%d/%d'%(n,fz,fm))    fz,fm = fz+fm,fz结果:第20个分数为:17711/10946[Finishedin0.3s]

5、给一个正整数,要求:1、求它是几位数 2.逆序打印出各位数字

n = int(input('请输入一个正整数:'))n = str(n)len = len(n)n_new = n[-1::-1]#存储逆序的字符串print('这个数的长度为%d'%len)print('逆序为%s'%n_new)结果:请输入一个正整数:12345这个数的长度为5逆序为54321

作者:Deathfeeling

链接:https://www.jianshu.com/p/796deaa27097

來源:简书

简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容