目录
- while练习题:
- 1、存款多少年能翻倍
- 2.小球坠落长度计算
- 3、猴子吃桃
- 4、计算:1-2+3-4...+99-100的和
while练习题:
1、存款多少年能翻倍
1万本金,年利息:0.0325,求连本带息多少年能翻倍
解析:
- while循环:求每年的本金和利息一共多少;
- 退出循环条件:本金*(1+利息) <= 2 *本金。
代码部分
# 本金
principal = 10000
# 利息
interest = 0.0325
# 翻倍总金额
total = 20000
# 统计所需年数
count = 0
while principal <= total:
count+=1
principal *= (1+interest)
# print(f"第{count}年,连本带息总金额:{principal}")
print(f"需要{count}年才能连本带息翻倍")
运行结果
2.小球坠落长度计算
一个小球,从100米高空坠落,每次反弹回原来一半高度,问第10次反弹完,小球经过多少米?
分析:
- 小球所经历距离 = 小球高度+反弹高度
- 小球反弹高度 = 小球高度/2
代码部分
# 初始高度
height = 100
# 小球掉落所经历的距离
distance = 0
# 掉落次数
count = 0
while count < 10 :
# 球所经历过的长度
distance +=height
# 球反弹高度
height /= 2
# 反弹回所经历的长度
distance += height
# 统计次数
count += 1
# 打印每次掉落所经历的距离和高度
print(f'第{count}次,小球所经历的距离:{distance},小球反弹高度{height}')
运行结果
3、猴子吃桃
有一堆桃子,猴子每天吃桃子总数的一半并多吃一个。吃了10天,到第11天只剩一个桃子。问:猴子吃之前,一共是多少个桃子?
分析:
- while控制天数
- 逆推总数找规律
- 第11天 1
- 第10天 (1+1)*2 = 4
- 第9天 (4+1)*2 = 10
- …
- 第1天 (sum+1)*2 = sum
代码部分
#花费的总天数
days = 11
# 统计总共桃子数量,以最后一天剩余的数作为统计总数的初始值
sum = 1
while days >= 1 :
print(f"第{days}天,桃子数量:{sum}")
# 上一天吃的之前的桃子数量
sum=(sum+1)*2
days -= 1
运行结果
4、计算:1-2+3-4…+99-100的和
解析:
加的是单数,减去的是偶数,利用%进行判断并计算
代码部分
# 第一种for循环
# sum = 0
# for i in range(1,101):
# if i%2==1 :
# sum+=i
# print(f"单数减法:{sum}+{i}={sum}")
# else:
# sum-=i
# print(f"双数加法:{sum}-{i}={sum}")
# 第二种while循环
sum = 0
count = 1
while count <= 100 :
if count%2==1:
sum+=count
# print(f"单数加法:{sum}+{count}={sum}")
else:
sum-=count
# print(f"双数减法:{sum}-{count}={sum}")
count+=1
运行结果