1.循环语句基础
(1) 循环概述
· 一组被重复执行的语句称之为循环体,能否继续重复,决定循环的终止条件
· python中的循环有while循环和for循环
· 循环次数未知的情况下,建议采用while循环
· 循环次数可以预知的情况下,建议采用for循环
(2) while循环语法结构
· 当需要语句不断地重复执行时,可以使用while循环
while expression:
while_suite
· 语句while_suite会被连续不断地循环执行,直到表达式的值变成0或False
sum100 = 0
counter = 1
while counter <= 100:
sum100 += counter
counter += 1
print ('result is %d' % sum100)
- 猜数字游戏
import random
# 随机取出100以内的整数,包括1和100
num = random.randint(1, 100)
prompt = "'-' * 20 + '猜数字游戏' + '-' * 20"
while True:
x = input('请输入1-100的数字:\n')
if x == '':
prompt = '请输入!'
print(prompt)
else:
gamer = int(x)
if 1 <= gamer <= 100:
if gamer == num:
prompt = '恭喜猜对了!'
print(prompt)
break
else:
prompt = '猜大了!' if gamer > num else '猜小了'
print(prompt)
else:
prompt = '输入不合法!'
print(prompt)
2.循环语句进阶
(1) break语句
· break语句可以结束当前循环然后跳转到下条语句
· 写程序的时候,应尽量避免使用重复的代码,在这种情况下可以使用wihile-break结构
name = input('uname:')
while name != 'tom':
name = input('uname:')
# 可以替换为
while True:
name = input('uname:')
if name == 'tom':
break
(2) continue语句
· 当遇到continue语句时,程序会终止当前循环,并忽略剩余的语句,然后回到循环的顶端
· 如果仍然满足循环条件,循环体内语句继续执行,否则退出循环
sum100 = 0
counter = 0
while counter <= 100:
counter += 1
if counter % 2:
countinue
sum100 += counter
print("result is %d" % sum100)
(3) else语句
· python中的while语句也支持else子句
· else子句只在循环完成后执行
· break语句也会跳过else块
sum10 = 0
i = 1
while i <= 10:
sum10 += i
i += 1
else:
print(sum10)
(4) 案例1:完善石头剪刀布小游戏
编写game_02.py,要求如下:
- 基于上节game.py程序
- 实现循环结构,要求游戏三局两胜
import random
print('-' * 20 + '这是一个猜拳游戏' + '-' * 20)
result = {'pwin': 0, 'rwin': 0}
while result['pwin'] < 2 and result['rwin'] < 2:
all_choices = ['石头', '剪刀', '布']
robot = random.choice(all_choices)
prompt = '''(0) 石头
(1)剪刀
(2) 布
请选择(0/1/2)'''
index = int(input(prompt))
player = all_choices[index]
win_list = [['剪刀', '布'], ['石头', '剪刀'], ['布', '石头']]
if player in all_choices:
print('电脑出的是 %s' % (robot))
if player.__eq__(robot):
print('平局!')
elif [player, robot] in win_list:
print('\033[32;1m你赢了!\033[0m')
result['pwin'] += 1
else:
print('\033[31;1m你输了!\033[0m')
result['rwin'] += 1
else:
print('输入不合法!')
print('比分为 \033[31;1m%s : %s\033[0m' % (result['pwin'], result['rwin']))
print('\033[31;1m游戏结束!\033[0m')
(5) 猜数程序
编写guess.py,要求如下:
- 系统随机生成100以内数字
- 要求用户猜生成的数字是多少
- 最多猜5次,猜对结束程序
- 如果5次全部猜错,则输出正确结果
import random
# 随机取出100以内的整数,包括1和100
num = random.randint(1, 100)
prompt = "'-' * 20 + '猜数字游戏' + '-' * 20"
counter = 0
while counter < 5:
x = input('请输入1-100的数字:\n')
if x == '':
prompt = '请输入!'
print(prompt)
else:
gamer = int(x)
if 1 <= gamer <= 100:
if gamer == num:
prompt = '恭喜猜对了!'
print(prompt)
break
else:
counter += 1
prompt = '猜大了!' if gamer > num else '猜小了'
print(prompt)
else:
prompt = '输入不合法!'
print(prompt)
else:
print('正确值为 %s' % num)
# 使用while的else格式,只有在break不触发时,else才会执行