例1 打印三角形图案
程序分析:
*
* *
* * *
* * * *
* * * * *
如上图所示:
如果要打印一个5行的三角形,需要一个大循环去控制行数,在大循环中加入两个小循环,一个控制空格的数量,一个控制*的数量。
- 使用变量a来接收三角形的行数,使用range来循环a次
a = int(input("请输入要输出的三角形行数:"))
for i in range(a):
- 在三角星的最上面一行,需要输入a-1个空格,然后输入一个*,随后回车,开始下一行
- 第二行输入a-2个空格,然后输入a-2个空格,然后输入两个*,随后回车,开始下一行
- 因为range是从0开始的,所以需要在控制空格的循环上使用range(a-i-1)
for i in range(a):
for j in range(a-i-1):
print(end=" ")
- 因为第一行是1个*,之后的每一行都比前一行多一个*,最大*个数就是行数,所以
for j in range(a-i-1):
print(end=" ")
for k in range(a-i-1,a):
print("*",end=" ")
- 在每一行输入完成后,进行回车
print("")
程序示例:
"""
题目:打印三角形
版本:1.0
作者:假书生@
日期:2020年1月18日
"""
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
作者:假书生@
日期:2020年1月18日
"""
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
作者:假书生@
日期:2020年1月18日
"""
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
作者:假书生@
日期:2020年1月18日
"""
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))