一般来说,循环次数确定的问题使用for循环或者while循环都可以解决,而循环次数不确定的问题只能使用while循环解决。
for语句的格式:
for 循环变量 in 遍历对象:
语句
while语句的格式:
while 条件表达式:
循环体
for语句是通过循环遍历某一序列对象(字符串、列表、元组或字典)来构建循环,循环结束的条件就是对象被遍历完。
而while语句是条件表达式的值为真时,依次执行while语句中的循环体语句,直到条件表达式的值为假时跳出循环,执行下一条语句。
所以它们构建循环的方式就不一样,一个是遍历对象,一个是判断条件真假。而对象有没有被遍历完,是可以写成while语句中的条件表达式的,但是while语句中的条件表达式并不是都可以写成for语句当中这种遍历对象的模式。
1、循环次数明确时:
举例:分别用for语句和while语句编写一个 Python 程序,每行打印每个name和对应的wage。
names = ['张三','李四','王五','赵六']
wages = [8500,8800,8300,9200]
for i in range(0, len(names)):
name = names[i]
wage = wages[i]
print(name, ':', wage)
"""
运行结果:
张三 : 8500
李四 : 8800
王五 : 8300
赵六 : 9200
"""
这里len()函数计算列表的元素个数。
names = ['张三','李四','王五','赵六']
wages = [8500,8800,8300,9200]
i = 0
while i < len(names):
name = names[i]
wage = wages[i]
print(name, ':', wage)
i += 1
"""
运行结果:
张三 : 8500
李四 : 8800
王五 : 8300
赵六 : 9200
"""
2、循环次数不明确时用while语句:
举例:假设第一个工资是8000元,后面每个月涨500元,每个月花费3000元,攒20万元需要多少个月?
month = 1
wage = 8000
expense = 3000
balance = wage - expense
while balance<200000:
month = month + 1
wage = wage + 500
balance = balance + wage - expense
print('攒20万需要:',month,'个月')
在while循环结构中,为了控制循环次数,通常会在程序中设置一个计数变量。每次循环,该变量进行自增或自减操作,当变量值自增到大于设定的上限值或者自减到小于设定的下限值时,循环自动结束。如果不设置一个可以离开循环的条件,有可能会出现死循环。