文章目录
- while
- for
- 常用循环算法
目录:
while
在日常生活中,很多地方要用到循环算法,while
是循环算法的关键词之一
示例:我们将 10000 元存入一个年利率为 5% 的银行账户中,求账户余额增长到原来投资额的两倍需要多少年?
# 创建常量变量
INITIAL_BALANCE = 10000.0
RATE = 5.0
TARGET = 2 * INITIAL_BALANCE
# 初始化用于循环的变量
balance = INITIAL_BALANCE
year = 0
# 计算投资收益翻倍所需年份
while balance < TARGET :
year = year + 1
interest = balance * RATE / 100
balance = balance + interest
# 打印结果
print("收益翻倍需要", year, "年")
for
我们常常需要访问字符串中的每个字符,for
循环提供了使该过程易于编程的实现方法。
假设要打印一个字符串,每行一个字符。我们需要遍历字符串中的每一个字符,并分别打印他们:
stateName =
for letter in stateName :
print(letter)
这里的letter
是stateName
中的每一个字符,我们也可以使用索引来实现
for i in range(len(stateName)) :
print(stateName[i])
上述方法使用了 range
>>> for i in range(5) :
print(i)
0
1
2
3
4
>>> for i in range(2, 5) :
print(i)
2
3
4
>>> for i in range(1, 5, 2) :
print(i)
1
3
我们通常使用以下方法来使用for
:
for year in range(1, len(year) + 1) :
那我们什么时候用range()
呢
当我们只需要迭代容器内的每一个值得时候,不需要使用range()
;如果我们需要知道都一个元素在容器中的准确位置时,最好使用range()
容器就是for
中的可迭代序列
常用循环算法
##
# 编写程序,求用户输入数据的总和及平均数
#
# 初始化
total = 0.0
count = 0
# 预读取用户指令
inputStr = input("Enter value: ")
# 设置哨兵值为空
while inputStr != "" :
value = float(inputStr) # 初始化指令为数字
total = total + value
count = count + 1
# 修改读取用户指令
inputStr = input("Enter value: ")
if count > 0 :
average = total / count
else :
average = 0.0
print("您输入数字的总和为%f,平均数为%f" % (total, average))
##
# 本程序用于处理用户输入的一系列成绩
# 计算成绩合格的人数和成绩不合格的人数
# 计算平均成绩,查找最高成绩和最低成绩
#
# 初始化计数器变量
numPassing = 0 # 合格人数
numFailing = 0 # 不合格人数
# 初始化用于计算平均成绩的值
total = 0
count = 0
# 初始化最高成绩和最低成绩变量
maxGrade = 0.0
minGrade = 100.0 # 默认最高成绩为100
# 使用while循环读取成绩
grade = float(input("请输入成绩(-1退出):"))
while grade >= 0.0 :
# 递归成绩合格、不合格人数计数器
if grade >= 60.0 :
numPassing = numPassing + 1
else :
numFailing = numFailing + 1
# 判断成绩是否为最低成绩或最高成绩
if grade < minGrade :
minGrade = grade
if grade > maxGrade :
maxGrade = grade
# 把成绩累加到total中
total = total + grade
count = count + 1
# 读取下一个成绩
grade = float(input("请输入成绩(-1退出):"))
# 打印结果
if count > 0 :
average = total / count
print("平均成绩为:%.2f" % average)
print("合格人数为:", numPassing)
print("不合格人数为:", numFailing)
print("最高成绩为:%.2f" % maxGrade)
print("最低成绩为:%.2f" % minGrade)