在古代,皇帝后宫佳丽三千,这么多的妃子可都是皇帝从众多秀女中一个个选出来的,今天我们来用python模拟帮皇帝选妃。
程序的循环可以处理大量的重复性工作,这是程序一个很重要的优势,在python中主要有两种循环方式,一个是 for 循环,一个是 while 循环,这两个循环都能实现相同的效果,只是用法有些不一样。
先来看下 for 循环的结构以及一个简单例子。for 循环主要用来遍历list数组、dict字典中的元素。
# for in 循环结构
# list 为数组或字典,x即为数组或字典中的元素
for x in list:
print('这里会输出数组中的元素')
feizi = ['孝贤纯皇后','皇后辉发那拉氏','孝仪纯皇后','慧贤皇贵妃','纯惠皇贵妃','淑嘉皇贵妃','庆恭皇贵妃']
print('乾隆的妃子有:')
for x in feizi:
print(x)
再来看下 while 循环的结构和例子。while 也很简单,就是只要满足条件就一直循环执行,直到当不再满足条件就结束。
while True:
print('只要满足上面的条件,我就会一直有输出')
sum = 0
n = 100
print('我要一口气算出 1到100之间所有整数之和')
while n > 0:
sum = sum + n
n = n - 1
print(sum)
在 python 循环中,还有两个关键字可以对循环进行特殊控制,一个是 break ,break 可以直接控制程序终止循环。另一个 continue ,continue则可以控制结束当前本次循环,即该循环下面的语句不再循环,直接进入下一次循环了。我们下面将使用一个皇帝选妃的例子来详细解释下。
# 这个数组代表每个秀女 源码来自公众号:谭某人
xiunv = [{'name':'秀女A', 'age':'20', 'height':'160'}, {'name':'秀女B', 'age':'19', 'height':'158'}, {'name':'秀女C', 'age':'23', 'height':'165'}]
count = 0
for x in xiunv:
if int(x['age']) > 22: #如果年龄大于22 则直接淘汰不考虑,即循环下一个秀女
print('年龄太大了,直接下一个')
continue
if int(x['height']) < 155: #如果身高低于155 则直接淘汰不考虑,即循环下一个秀女
print('身高不够,直接下一个')
continue
count += 1
if count > 5: #皇帝本次只选5名秀女,如果已到5名就直接终止循环结束程序
print('已经选满了,不选了')
break
最后需要一点的是,循环虽然好用,但是一定要注意避免写成了死循环。