文章目录

  • while
  • for
  • 常用循环算法



目录:

0x00 - Python学习笔记

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)

这里的letterstateName中的每一个字符,我们也可以使用索引来实现

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)