while循环

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,要求如下:

  1. 基于上节game.py程序
  2. 实现循环结构,要求游戏三局两胜
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,要求如下:

  1. 系统随机生成100以内数字
  2. 要求用户猜生成的数字是多少
  3. 最多猜5次,猜对结束程序
  4. 如果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才会执行

你可能感兴趣的:(while循环)