第二个月课堂004讲解练习题002(经典10题)

实例1:斐波那契数列 ****
实例2:九九乘法表 *****
实例3:所有水仙花数 *****
实例4:高空抛物 *****
实例5:猴子分桃 *****
实例6:猴子偷桃
实例7:回文数
实例8:阶乘求和
实例9:分解质因数
实例10:养 兔子

---------------------------------------------------

第一题:

斐波那契数列

斐波那契数列(Fibonacci)最早由印度数学家Gopala提出,而第一个真正研究斐波那契数列的是意大利数学家 Leonardo Fibonacci,斐波那契数列的定义,用数学函数可表示为:

 1.递推法

2、递归法

----------------------------------------------------

第二题:九九乘法表 

场景一:for循环
for i in range(1,10): for j in range(1,i+1): print("%d*%d=%2d"%(j,i,j*i),end=' ') print("")
场景二:while

i=1
while i<10:
j=1
while j<=i:
print("%d*%d=%2d"%(j,i,j*i),end=' ')
j+=1
print("")
i+=1

-----------------------------------------------------------

 第三题:所有水仙花数 

方法一:
1.1for i in range(100,1000): s=str(i) one=int(s[-1]) ten=int(s[-2]) hun=int(s[-3]) if i == one**3+ten**3+hun**3: print(i)
1.2
for i in range(100,1000):
s = str(i)
if i == int(s[0])**3+int(s[1])**3+int(s[2])**3:
print("水仙花数为:",i)
方法二:
num = int(input('请输入一个三位数:'))
if num == pow(num // 100, 3) + pow(num % 10, 3) + pow(num // 10 % 10, 3):
print("这是一个水仙花数%d" % num)
else:
print("这不是一个水仙花数%d" % num)
方法三:
for i in range(100,1000):
baiwei=i//100
shiwei=i%100//10
gewei=i%10
if i==baiwei**3+shiwei**3+gewei**3:
print("水仙花数为:",i)

---------------------------------------------------------------

 第四题:高空抛物

方法一:
high =100. sum =100 for i in range(1,11): 循环10次 high =high/2 if i==1: sum =sum sum =sum+high*2 print('high:',high)
方法二:
# high=200.
# total=100
# for i in range(10):
# high/=2
# total+=high
# print(high/2)
# print('总长:',total)

-----------------------------------------------------------------------

第五题: 猴子分桃 

五只猴子分桃。半夜,第一只猴子先起来,它把桃分成了相等的五堆,多出一只。于是,它吃掉了一个,拿走了一堆; 第二只猴子起来一看,只有四堆桃。于是把四堆合在一起,分成相等的五堆,又多出一个。于是,它也吃掉了一个,拿走了一堆;......其他几只猴子也都是 这样分的。问:这堆桃至少有多少个?

方法:

#本算法从最后一个猴子进行逆向推倒
def peach(monkey=5):
    pea = 4  ##最后一个猴子分完剩余的桃子
while 1:
        num = pea
        for i in range(monkey):
            num = num + num / 4 + 1
            if num % 1 != 0:  ##如果分出了小数则结束内层循环
pea += 4  ##最后的桃子一定是4的整数倍
break
        if num % 1 == 0:  ##如果是整分 则结束
break
    return pea, num


if __name__ == '__main__':
    pea, num = peach()
    print(pea, num)

------------------------------------------------------------------------

 实例6:猴子偷桃

方法一:while

tail = 1  #桃子剩余个数
i = 9
while i > 0:
    tail = (1 +  tail) * 2
    i -= 1
    print("剩余的桃子个数:%d" % tail)
print("剩余的桃子个数:%d" % tail)

 方法二:

 



---------------------------------------------------------------------------
实例7:回文数

场景二:

a = input("请输入数字: ")
b=len(a)
for i in range (b):
    if(a[i]==a[b-i-1]):
        c=1
    else:
        c=0
if(c==1):
    print("这是回文数")
else:
    print("这不是回文数")

  

---------------------------------------------------------------------------
实例8:阶乘求和

x = 1
y = int(input("请输入要计算的数:"))
for i in range(1, y + 1):
  x = x * i
print(x)

  

---------------------------------------------------------------------------
实例9:分解质因数

场景一:

n=int(input("请输入需要分解的数字:"))
print("{} =".format(n),end=' ')
while n>1:
    for i in range(2,n+1):
        if n%i==0:
            n=int(n/i)
            if n==1:
                print(i)
            else:
                print("{} *".format(i),end=' ')
            break

  

----------------------------------------------------------------------------
实例10:100 以内的素数

方法一:
for i in range(2,100): for j in range(2,i): if i%j==0: break else: print(i,end=",")

  

------------------------------------------------------------------------------

11养兔子

有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个
月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?

month = int(input('繁殖几个月:'))
month_1 = 1
month_2 = 0
month_3 = 0
month_elder = 0
for i in range(month):
    month_1,month_2,month_3,month_elder = month_3+month_elder,month_1,month_2,month_3+month_elder
    print("
第%d个月共"%(i+1),month_1+month_2+month_3+month_elder,"个兔子。")
    print("其中1月兔:",month_1)
    print("其中2月兔:",month_2)
    print("其中3月兔:",month_3)
    print("其中成年兔:",month_elder)

  

原文地址:https://www.cnblogs.com/xiaolehua/p/14090753.html