Python基礎題練習(1.打印三角形圖案 2. 猴子吃桃 2.百錢百雞)

例1 打印三角形圖案

程序分析:

    * 
   * * 
  * * * 
 * * * * 
* * * * * 

如上圖所示:
如果要打印一個5行的三角形,需要一個大循環去控制行數,在大循環中加入兩個小循環,一個控制空格的數量,一個控制*的數量。

  1. 使用變量a來接收三角形的行數,使用range來循環a次
a = int(input("請輸入要輸出的三角形行數:"))
for i in range(a):
  1. 在三角星的最上面一行,需要輸入a-1個空格,然後輸入一個*,隨後回車,開始下一行
  2. 第二行輸入a-2個空格,然後輸入a-2個空格,然後輸入兩個*,隨後回車,開始下一行
  3. 因爲range是從0開始的,所以需要在控制空格的循環上使用range(a-i-1)
for i in range(a):
    for j in range(a-i-1):
        print(end=" ")
  1. 因爲第一行是1個*,之後的每一行都比前一行多一個*,最大*個數就是行數,所以
    for j in range(a-i-1):
        print(end=" ")
    for k in range(a-i-1,a):
        print("*",end=" ")
  1. 在每一行輸入完成後,進行回車
print("")

程序示例:

"""
題目:打印三角形
版本:1.0
作者:假書生@
日期:2020118"""
a = int(input("請輸入要輸出的三角形行數:"))
for i in range(a):
    for j in range(a-i-1):
        print(end=" ")
    for k in range(a-i-1,a):
        print("*",end=" ")
    print("")

運行結果:

請輸入要輸出的三角形行數:5
    * 
   * * 
  * * * 
 * * * * 
* * * * * 

例2 猴子吃桃

程序分析:

猴子吃桃問題:猴子第一天摘下若干個桃子,當即吃了一半,還不過癮,又多吃了一個,
第二天早上又將剩下的桃子吃掉一半,又多吃了一個。以後每天早上都吃前一天剩下的一半零一個。
到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘多少個桃子?
分析:
第一天的桃子數量,等於第二天的桃子數量加1然後乘以2
第二天的桃子數量,等於第三天的桃子數量加1然後乘以2
第三天的桃子數量,等於第四天的桃子數量加1然後乘以2
第四天的桃子數量,等於第五天的桃子數量加1然後乘以2
第五天的桃子數量,等於第六天的桃子數量加1然後乘以2
第六天的桃子數量,等於第七天的桃子數量加1然後乘以2
第七天的桃子數量,等於第八天的桃子數量加1然後乘以2
第八天的桃子數量,等於第九天的桃子數量加1然後乘以2
第九天的桃子數量,等於第十天的桃子數量加1然後乘以2
那麼…第十天桃子的數量已知爲1個,現在可以倒推第一天桃子的數量了吧。

程序示例:

"""
題目:猴子吃桃問題
版本:1.0
作者:假書生@
日期:2020118"""
print("第{}天有1個桃子".format(10))
peach = 1
for i in range(9,0,-1):
    peach  = (peach+1) * 2
    print("第{}天有{}個桃子".format(i,peach))
print("一共有{}個桃子".format(peach))

運行結果:

10天有1個桃子
第9天有4個桃子
第8天有10個桃子
第7天有22個桃子
第6天有46個桃子
第5天有94個桃子
第4天有190個桃子
第3天有382個桃子
第2天有766個桃子
第1天有1534個桃子
一共有1534個桃子

方法二 遞歸:

def Peach(n):
    if n == 10 :
        return 1
    else:
        return (Peach(n+1)+1)*2
print(Peach(1))

例3 百錢百雞

程序分析:

百錢百雞:我國古代數學家張丘建在《算經》一書中提出的數學問題:雞翁一值錢五,雞母一值錢三,雞雛三值錢一。百錢買百雞,問雞翁、雞母、雞雛各幾何?
譯文:公雞一隻5元,母雞一隻3元,小雞3只1元。如何用100元買100只雞。其中公雞,母雞,小雞的數量各是多少

程序示例:

  • 如果都買公雞,最多能買20只
  • 如果都買母雞,最多能買33只
  • 所以說,0<x<20,0<y<33,z=100 -x-y
"""
題目:百錢白雞
版本:1.0
作者:假書生@
日期:2020118"""
for x in range(0,20):
    for y in range(0,33):
        z = 100 -x-y
        if 5*x + 3*y + z/3 == 100:
            print("公雞有{}只,母雞有{}只,小雞有{}只".format(x,y,z))

運行結果:

公雞有0只,母雞有25只,小雞有75只
公雞有4只,母雞有18只,小雞有78只
公雞有8只,母雞有11只,小雞有81只
公雞有12只,母雞有4只,小雞有84

方法二:

"""
題目:百錢白雞
版本:1.0
作者:假書生@
日期:2020118"""
import random
while True:
	x = random.randrange(0,20)
	y = random.randrange(0,33)
	z = random.randrange(0,100)
	if 5*x+3*y+z/3 == 100 and x+y+z == 100:
	    print('公雞:%s 母雞:%s 小雞:%s'%(x, y, z))
        
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章