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))
        
发布了44 篇原创文章 · 获赞 57 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/weixin_45144837/article/details/104033236
今日推荐