• python 关于异常处理 try...except... 的两个案例


    输入若干个成绩,求所有成绩的平均分。每输入一个成绩后询问是否继续输入下一个成绩,回答“yes”就继续输入下一个成绩,回答“no”就停止输入成绩。
    numbers = []                           #使用列表存放临时数据
    while True:
        x = input('请输入一个成绩:')
        try:                               #异常处理结构           
            numbers.append(float(x))
        except:
            print('不是合法成绩')
        while True:
            flag = input('继续输入吗?(yes/no)').lower()
            if flag not in ('yes', 'no'):  #限定用户输入内容必须为yes或no
                print('只能输入yes或no')
            else:
                break
        if flag=='no':
            break
    
    print(sum(numbers)/len(numbers))
    

      

    假设一共有一排5个洞口,小狐狸最开始的时候在其中一个洞口,然后人随机打开一个洞口,如果里面有小狐狸就抓到了。如果洞口里没有小狐狸就明天再来抓,但是第二天小狐狸会在有人来抓之前跳到隔壁洞口里。

    from random import choice, randrange
    
    def catchMe(n=5, maxStep=10):
        '''模拟抓小狐狸,一共n个洞口,允许抓maxStep次
           如果失败,小狐狸就会跳到隔壁洞口'''
        # n个洞口,有狐狸为1,没有狐狸为0
        positions = [0] * n
        # 狐狸的随机初始位置
        oldPos = randrange(0, n)
        positions[oldPos] = 1
        # 抓maxStep次
        while maxStep >= 0:
            maxStep -= 1
            # 这个循环保证用户输入是有效洞口编号
            while True:
                try:                                                                #异常处理部分
                    x = input('你今天打算打开哪个洞口呀?(0-{0}):'.format(n - 1))
                    # 如果输入的不是数字,就会跳转到except部分
                    x = int(x)
                    # 如果输入的洞口有效,结束这个循环,否则就继续输入
                    assert 0 <= x < n
                    break
                except:
                    # 如果输入的不是数字,就执行这里的代码
                    print('要按套路来啊,再给你一次机会。')
    
            if positions[x] == 1:
                print('成功,我抓到小狐狸啦。')
                break
            else:
                print('今天又没抓到。')
                print(positions)
            if oldPos == n - 1:
                newPos = oldPos - 1
            elif oldPos == 0:
                newPos = oldPos + 1
            else:
                newPos = oldPos + choice((-1, 1))
            positions[oldPos], positions[newPos] = 0, 1
            oldPos = newPos
        else:
            print('放弃吧,你这样乱试是没有希望的。')
    
    # 启动游戏,开始抓狐狸吧
    catchMe()
    

      

  • 相关阅读:
    :nth-child(n)选择器
    lable标签的用途
    输入框事件处理
    2D转换与3D转换的区别
    vertical-align  css属性
    linux下nginx整合php
    利用crontab定时备份nginx访问日志(也可以说是定时切分日志)
    关于nginx配置虚拟主机
    linux下nginx编译安装
    正则表达式解决结巴字符串
  • 原文地址:https://www.cnblogs.com/jiaxinwei/p/11623343.html
Copyright © 2020-2023  润新知