写在前面:
本系列文章收录:CAU计算机类公选课《Python语言程序设计》的课堂讲义
课程时间为:2022~2023学年秋季
供各位小白参考~
循环结构
类别:
(1)计数循环:重复一定的次数的循环。比如for循环
(2)条件循环:一直重复,直到条件不满足时才结束的循环。比如while循环。
1.while循环
语法结构:
while 条件表达式:
循环体
循环体:一组被重复执行的语句。
【示例】重要的事情,说三遍。
i = 0
while i < 3:
print("小朋友,你喜欢我嘛?请不要骗我哟!")
i += 1
运行结果:
小朋友,你喜欢我嘛?请不要骗我哟!
小朋友,你喜欢我嘛?请不要骗我哟!
小朋友,你喜欢我嘛?请不要骗我哟!
【示例】取款机输入密码模拟。
password = 0
i = 1
while i < 7:
input_num_pwd = int(input("请输入一位数字密码:"))
if input_num_pwd == password :
print("密码正确,正在进入系统...")
i = 8
else:
print(f"密码输入错误,你已经输错{i}次")
i += 1
if i == 7:
print("你的卡已经被锁死,请和发卡行联系!")
运行结果:
请输入一位数字密码:2
密码输入错误,你已经输错1次
请输入一位数字密码:0
密码正确,正在进入系统...
2.for循环与range()函数
for循环适合于枚举、遍历序列以及迭代对象中的元素。
语法结构:
for 迭代对象 in 对象:
循环体
说明:
(1)迭代对象用于保存读出的值
(2)对象为要遍历或迭代的对象,该对象为任何有序的序列对象,比如字符串,列表和元组等
(3)循环体为一组被重复执行的语句。
【示例】利用数值循环输出列表的值。
for item in ['pku','tsinghua','cau','fudan']:
print(item)
运行结果:
pku
tsinghua
cau
fudan
range()函数
range()函数功能:用于生成一系列连续的整数,多用于for循环语句。
语法结构:
range(start,end,step)
参数说明:
(1)start:用于指定计数的初始值,可以省略,如果省略,默认值为0;
(2)end:用于指定计数的结束值(但不包括该值,如range(7)得到的值0~6),此参数不能省略;即左闭右开。
(3)step:用于指定步长,若省略该参数,步长默认为1。
【示例】计算1~100的和。
result = 0
for i in range(1,101,1):
result += i
print(f"1~100的和为{result}")
运行结果:
1~100的和为5050
【示例】遍历字符串:“八百标兵奔北坡,北坡炮兵并排跑,炮兵怕把标兵碰,标兵怕碰炮兵炮。”,统计有多少个“兵”。
str_1 = "八百标兵奔北坡,北坡炮兵并排跑,炮兵怕把标兵碰,标兵怕碰炮兵炮。"
sum = 0
for word in str_1:
if word == '兵':
sum += 1
print(f"经统计分析,一共有兵字:{sum}个。")
运行结果:
经统计分析,一共有兵字:6个。
循环语句嵌套
定义:在Python中,允许一个循环体中嵌套另一个循环。
对于双层循环,循环的总次数等于内外层循环次数之积。
【示例】打印输出九九乘法表。
for i in range(1,10):
for j in range(1,i+1):
d = i * j
print('%dx%d=%-2d '%(j,i,d),end='')
print()
运行结果:
1x1=1
1x2=2 2x2=4
1x3=3 2x3=6 3x3=9
1x4=4 2x4=8 3x4=12 4x4=16
1x5=5 2x5=10 3x5=15 4x5=20 5x5=25
1x6=6 2x6=12 3x6=18 4x6=24 5x6=30 6x6=36
1x7=7 2x7=14 3x7=21 4x7=28 5x7=35 6x7=42 7x7=49
1x8=8 2x8=16 3x8=24 4x8=32 5x8=40 6x8=48 7x8=56 8x8=64
1x9=9 2x9=18 3x9=27 4x9=36 5x9=45 6x9=54 7x9=63 8x9=72 9x9=81
转移和中断语句
(1)break:完全终止循环
1)在while语句中使用break语句
语法结构:
while 条件表达式1:
执行代码
if 条件表达式2:
break
【示例】猜数游戏。
import random
count = 0
while True:
random_number = random.randint(1, 100)
count += 1
input_number = int(input("请输入你所猜的数字:"))
if input_number > random_number:
print(f"太大了,你猜的数应该为{random_number}")
elif input_number < random_number:
print(f"太小了,你猜的数应该为{random_number}")
else:
print("恭喜你,猜对了!")
break
运行结果:
请输入你所猜的数字:56
太小了,你猜的数应该为67
请输入你所猜的数字:67
太大了,你猜的数应该为44
请输入你所猜的数字:44
太大了,你猜的数应该为24
请输入你所猜的数字:42
太小了,你猜的数应该为67
请输入你所猜的数字:63
太小了,你猜的数应该为93
请输入你所猜的数字:
2)在for语句中使用break语句
语法结构:
for 迭代变量 in 对象:
if 条件表达式:
break
【示例】输入一个整数,判断是否为素数。
number = int(input("请输入一个整数:"))
if number < 2:
print("不是素数!")
else:
for i in range(2,number):
if number % i == 0:
print(f"{number}不是素数。")
break
else:
print(f"{number}是素数。")
运行结果:
请输入一个整数:7
7是素数。
(2)continue:结束本次循环,直接跳到下一次循环。
1)在while语句中使用continue语句
语法结构:
while 条件表达式1:
执行代码
if 条件表达式2:
continue
【示例】从键盘输入密码,如果密码长度小于6,则要求重新输入;如果等于6,则判断密码是否正确,如果正确则中断循环,否则提示错误,并要求继续输入。
while True:
pwd = input("请输入密码:")
if len(pwd) < 6:
print("长度为6,请重新输入。")
continue
if pwd == '123456':
print("恭喜你,密码输入正确。")
break
else:
print("密码有误,请重试!")
运行结果:
请输入密码:123
长度为6,请重新输入。
请输入密码:456789
密码有误,请重试!
请输入密码:123456
恭喜你,密码输入正确。
2)在for语句中使用continue语句
语法结构:
for 迭代变量 in 对象:
if 条件表达式:
continue
【示例】过滤敏感字。
sentence = input("请输入一段文字:")
for word in sentence:
if word == '色':
continue
print(word)
运行结果:
请输入一段文字:五光十色,食色可佳
五
光
十
,
食
可
佳
【示例】逢7拍腿游戏。
数字末尾为7或者7的倍数,拍一下腿。
请统计一下,1~99一共拍了多少次腿。
total = 99
for num in range(1,100):
if num % 7 == 0:
continue
else:
strnum = str(num)
if strnum.endswith('7'):
continue
total -= 1
print(f"从1到99,共拍腿{total}次")
运行结果:
从1到99,共拍腿22次
while…else和for…else
【示例】利用for…else…实现猜年龄游戏。判断猜大,猜小。超过3次,提示“对不起,次数到了”。
age_old_boy=60
for i in range(3):
guess = int(input("请输入你猜的年龄:"))
if guess == age_old_boy:
print("猜对了。")
break
elif guess > age_old_boy:
print("猜大了。")
else:
print("猜小了。")
else:
print("对不起,次数到了。")
运行结果:
请输入你猜的年龄:56
猜小了。
请输入你猜的年龄:89
猜大了。
请输入你猜的年龄:60
猜对了。
【上机任务】
P93
11
12
13
15