11.题目:
古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
程序分析:兔子的规律为数列1,1,2,3,5,8,13,21....
注:为什么{} {}那里有很多空格?是为了输出时好看,但需要手动调整,看输出结果吧!
#11
f1 = 1
f2 = 1
for i in range(1,22):print (' {} {} '.format(f1,f2), end=" ")if (i % 3) == 0:print ('')f1 = f1 + f2f2 = f1 + f2
输出:
看上面的输出结果是不是感觉越往下越拥挤呢,那么有什么好办法解决呢?
此时应引出我们的一个新知识点
但在这里我用到的时
%ld是指长整数
%12ld指输出12位的长整数
"%12ld %12ld" 输出两个12位的长整数
此时代码应变为:
f1 = 1
f2 = 1
for i in range(1,22):print ('%12ld %12ld' % (f1,f2), end=" ")if (i % 3) == 0:print ('')f1 = f1 + f2f2 = f1 + f2
输出:
此时是不是感觉好看多了,嘿嘿!!
12.题目:
判断101-200之间有多少个素数,并输出所有素数。
程序分析:判断素数的方法:用一个数分别去除2到sqrt(这个数),如果能被整除,则表明此数不是素数,反之是素数。
h = 0
leap = 1
from math import sqrt
from sys import stdout
for m in range(101,201):k = int(sqrt(m + 1))for i in range(2,k + 1):if m % i == 0:leap = 0breakif leap == 1:print ('%-4d' % m)h += 1leap = 1
输出:
看输出结果,我们如果想知道有多少个还得自己去数,如果我们加上一行代码就知道了!
在文末加上:print ('总个数为',h)
当然,我们还可以10个数分一组,这只需两行代码完成
if h % 10 == 0:
print ('')
意思是每到整十时,就输出一个空
代码如下:
#12
h = 0
leap = 1
from math import sqrt
from sys import stdout
for m in range(101,201):k = int(sqrt(m + 1))for i in range(2,k + 1):if m % i == 0:leap = 0breakif leap == 1:print ('%-4d' % m)h += 1if h % 10 == 0:print ('')leap = 1
print ('总个数为',h)
输出: