一、for 循环
1.1 语法
for i in range(10):
print(i)
1.2 示例
打印0到100之间的偶数
#打印100以内偶数
for i in range(100):
if i%2 == 0:
print("偶数",i)
二、嵌套for循环
建议嵌套尽量不超过4层。
#循环打印楼层
for floor in range(1,7):
print(f"当前在{floor}层".center(50,'-'))
for room in range(1,10):
print(f"当前房间是{floor}0{room}室.")
三、break&continue
#跳过第三层循环打印楼层
for floor in range(1,7):
print(f"当前在{floor}层".center(50,'-'))
if floor == 3:
print("不走三层……")
continue #停止本次循环,进入下次循环
for room in range(1,10):
print(f"当前房间是{floor}0{room}室.")
#循环打印楼层至404结束
for floor in range(1,7):
print(f"当前在{floor}层".center(50,'-'))
if floor == 3:
print("不走三层……")
continue #停止本次循环,进入下次循环
for room in range(1,10):
if floor == 4 and room == 4:
print("见鬼了……")
#break #跳出本层循环,上一层循环仍继续
exit() #结束程序
else:
print(f"当前房间是{floor}0{room}室.")
四、for循环练习
4.1 打印九九乘法表
# 打印九九乘法表
for i in range(1,10):
for j in range(1,i+1):
print(f"{i}x{j}={i*j}",end =" ")
print()
4.2 素数练习
# 方式一:求100以内所有素数
for i in range(2,101):
is_ss = True
for j in range(2,i):
if i % j == 0:
is_ss = False
if is_ss == True:
print(f"{i}是素数……")
# 方式二:求100以内所有素数
for i in range(2,101):
for j in range(2,i):
if i % j == 0:
break
else: #当循环正常结束时执行
print(f"{i}是素数……")
4.3 打印三角形
# 打印三角形
for i in range(10):
if i <= 5:
print("* " * i)
else:
print("* " * (10-i))
五、while 循环
5.1 语法
count = 0
while count < 10:
count += 1
print("loop",count)
5.2 死循环
count = 0
while True:
count += 1
print("loop",count)
5.3 示例
要求:每轮可以猜3次,猜错了有提示猜大了还是小了,3次没猜中可选继续猜还是结局。
# 猜小几居年龄
count = 0
black_girl_age = 25
while count < 3:
guess = input("猜小几居的年龄>:")
if guess.isdigit():
guess = int(guess)
else:
print("不识别的指令,请重新输入>:")
continue
if guess > black_girl_age:
print("大了大了……")
elif guess < black_girl_age:
print("小了小了……")
else:
print("恭喜你!猜对了!^-^")
break
count += 1
if count == 3:
cmd = input("还要再试一把吗?(y/n)>:")
if cmd in ["Y","y","yes"]:
count = 0
else:
print("byby……see u……")
六、实战小程序
6.1 存款多少年才能翻倍
1万本金,利息0.01932每年,问连本带利多少年能翻倍?
base = 10000 #本金
inserest = 0.01932 #利息
year = 0
while base <= 20000:
year += 1
base = base + (base * inserest)
print(year,base)
6.2 小球坠落反弹经过多少米
一个小球,从100米高空坠落,每次反弹回原来一半高度,问10次反弹完,小球经过多少米?
height = 100 #小球初始高度
distance = 0 #小球初始经过
count = 0 #小球初始坠落次数
while count < 10:
distance += height #记录坠落时经过的长度
height = height / 2 #记录反弹回的高度
distance += height #记录反弹回经过的长度
count += 1
print(count,distance,height)
6.3 猴子吃桃
有一堆桃子,猴子每天吃桃子总数的一半并多吃一个。吃了10天,到11天还剩1个桃子,问:猴子吃之前一共多少个桃子?
count = 1
day = 11
while day > 1:
count = (count + 1)*2 #上一天吃之前的桃子数量
day -= 1
print(day,count)
6.4 计算和
计算1-2+3-4+5-6+7……100的和
# 方式一
sum_o = 0
i = 1
while i <= 100:
if i % 2 == 0:
sum_o = sum_o + i
i += 1
sum_j = 0
i = 1
while i <= 100:
if i % 2 != 0:
sum_j = sum_j + i
i += 1
print(sum_j - sum_o)
# 方式二
sum = 0
count = 1
while count <= 100:
if count % 2 == 0:
sum -= count
else:
sum += count
count += 1
print(sum)
6.5 寻找列表中最大值、最小值
寻找列表中最大值、最小值
# 寻找列表中最大值、最小值
data = [23,14,54,3,57,12,9,4,32,6]
max_n = data[0]
for i in data:
if i > max_n:
max_n = i
print(max_n)
min_n = data[0]
for i in data:
if i < min_n:
min_n = i
print(min_n)
6.6 寻找组合
从两个列表中各取一个数,如果两个数的和等于10,则以列表方式输出这两个数
data1 = [2,14,-5,11,76,-35,22,74,-31,45]
data2 = [15,-34,63,54,67,-1,7,8,6,-9,-23,43,41]
for i in data1:
for j in data2:
if i + j == 10:
print([i,j])
6.7 年会抽奖
300员工,年会随机抽奖,一等奖3人,2等奖6人,三等奖30人,中奖者不能重复
import random
staff_list = []
for i in range(1,301):
staff_list.append(f'员工{i}')
lottery_levels = [30,6,3]
count = 0
while count < 3:
choice = input(f'开始抽 {3-count} 等奖 ……')
winners = random.sample(staff_list,lottery_levels[count])
print(winners)
for p in winners:
staff_list.remove(p) # 删除中奖者
count += 1