基础
一、读程序,总结程序功能
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
來源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。