循环语句while
程序三种执行结构:
1. 顺序结构
2. 分支机构:依据条件是否成立,选择不同的代码执行
3. 循环结构:一段代码会重复执行多次
循环四要素:
1. 循环变量的初始值
2. 循环条件
3. 循环体代码
4. 让循环变量趋近于结束的代码
循环执行过程
1-2-3-4-2-3-4-2------2(不满足条件时退出循环)
例子:1-100的输出
#定义一个函数
def test_func():
# 定义一个循环变量并有初始值
i = 1
#判断条件
while i <= 100:
#循环体
print(i)
#改变循环变量 语句必须写到循环体里
i += 1
test_func()
不能用在循环外的语句
break
- break只能用在循环里
- 作用是用来结束循环,不管循环还有多少次
while True: # 死循环
print('hello')
break # 跳出循环
print('world')
print('over')
输出结果:hello over
continue
- continue只能用在循环里
- 作用是来结束本次循环,无论这次循环还有多少代码均不执行
while True # 死循环
print('hello')
continue # 跳出循环
print('world')
print('over')
输出结果:无休止打印hello
猜拳游戏
分析
a、两个角色 玩家player+电脑robot
b、动作:石头 0 、剪刀 1 、布 2
c、我的出拳:由输入完成
d、电脑的出拳头:随机数完成
e、比较出拳头
f、判断输赢(尽量少地去写代码)
相等—平局
玩家赢:p0:r1 p1:r2 p2:r0
剩下的都是电脑赢
实现
#导入随机数模块
#导入随机数模块
import random
#定义一个函数 编写框架过程中可以用pass来当占位符
def game():
# 定义一个玩家变量从键盘输入值
player = int(input('请输入一个状态(石头 0,剪刀 1,布 2):'))
# 定义一个电脑变量,使用随机数获取状态
robot = random.randint(0,2)
# 比较状态
#先判断平局
if player==robot:
print('平局')
# 在判断玩家赢的状态
elif((player == 0 )and (robot == 1)) or ((player == 1)and(robot == 2)) or ((player ==2)and(robot == 0)) :
print('玩家赢')
# 剩下的是电脑赢的状态
else:
print('电脑赢')
#函数调用开始游戏
game()
while循环嵌套
格式:
while 条件1:
while 条件2:
循环体...
执行过程:
外层循环循环一次,内层循环循环一圈
示例:外层循环循环三次,内层循环循环五次
i = 0
while i < 3:
print('i --',i)
j = 0
while j < 5:
print('j--',i)
j += 1
i += 1
循环嵌套中应用break和continue
i = 0
while i < 3:
print('i --',i)
j = 0
while j < 5:
print('j--',i)
break # break会跳出最近的循环
j += 1
i += 1
输出结果:
i – 0
j— 0
i – 1
j— 0
i – 2
j— 0
i = 0
while i < 3:
print('i --',i)
break # 整个循环结束
j = 0
while j < 5:
print('j--',i)
j += 1
i += 1
输出结果:
i – 0
i = 0
while i < 3:
print('i --',i)
continue # 结束本次循环
j = 0
while j < 5:
print('j--',i)
j += 1
i += 1
输出结果:
i – 0
i – 0
i – 0
…
无数次
示例:打印偶数
def print_even(n):
i = 0
while i < n:
i += 1
if i % 2 == 1:
continue
print(i)
print_even(10)
输出结果:
2
4
6
8
10
练习:打印矩形(注意换行)
def print_rect():
i = 0
while i < 5: #外层循环打印行数
j = 0
while j < 5:
# 在print函数中,使用end=的形式来给print函数设置一个结束符号,end默认的结束符号是\n换行
print('*',end=' ')
j += 1
print() # end恢复默认值
i +=1
print_rect()
外层循环执行五次内层循环执行五遍
练习:打印99乘法表
def nine_nine_table():
#外层循环用来控制行
i = 1
while i <= 9:
#内层循环用来控制每一列的表达式
j = 1
while j <= i:
print('%d*%d=%-2d '%(j,i,j*i),end = ' ') # 用-2d在指定宽度内左对齐
j += 1
#这个print负责换行
print()
i += 1
nine_nine_table()
运行结果:
1 * 1 = 1
1 * 2 = 2 2 * 2 = 4
1 * 3 = 3 2 * 3 = 6 3 * 3 = 9
1 * 4 = 4 2 * 4 = 8 3 * 4 = 12 4 * 4 = 16
1 * 5 = 5 2 * 5 = 10 3 * 5 = 15 4 * 5 = 20 5 * 5 = 25
1 * 6 = 6 2 * 6 = 12 3 * 6 = 18 4 * 6 = 24 5 * 6 = 30 6 * 6 = 36
1 * 7 = 7 2 * 7 = 14 3 * 7 = 21 4 * 7 = 28 5 * 7 = 35 6 * 7 = 42 7 * 7 = 49
1 * 8 = 8 2 * 8 = 16 3 * 8 = 24 4 * 8 = 32 5 * 8 = 40 6 * 8 = 48 7 * 8 = 56 8 * 8 = 64
1 * 9 = 9 2 * 9 = 18 3 * 9 = 27 4 * 9 = 36 5 * 9 = 45 6 * 9 = 54 7 * 9 = 63 8 * 9 = 72 9 * 9 = 81
for-in循环 &range
for-in 循环是一种增强型循环
range()用来去一个范围
格式:
for 循环变量 in range(a,b) # 循环变量 [a,b-1]
循环代码
示例:
def test_fune():
for i in range(10): #range会得到1-9这样一个数值
print(i)
输出:
0
1
2
3
4
5
6
7
8
9
for-in实现99乘法表:
def nine_nine_table():
for i in range(1,10): # i的范围是1-9
for j in range(1,i+1):
print('%d*%d*%-3d',%(j,i,j*i),end='')
print()
nine_nine_table()
if语句实现三目运算符
C语言: 条件?值1:值2
Python实现:
值1 if条件? else 值2
执行过程:判断条件是否成立,成立得到值1;否则得到值2
# if实现三目运算符
def test_func():
#输入一个数,判断奇偶
n = int(input('number:'))
s='偶数' if n % 2 ==0 else'奇数'
print(s)
test_func()
循环-else
无论是 for - in - else 还是 while - else
都是在循环结束后再执行else后面的代码,若循环遇到break中断执行则不会执行else后面的代码
用途:在数列中寻找一个数字,若没有找到则用else给出反馈
def for_in_else_test():
for i in range(5):
print(i)
else:
print('over')
for_in_else_test()
输出结果:
1
2
3
4
over
def while_else_test():
i = 0
while i < 3:
print(i)
i += 1
else:
print('while over')
while_else_test()
输出结果:
0
1
2
while over