Java自学者论坛

 找回密码
 立即注册

手机号码,快捷登录

恭喜Java自学者论坛(https://www.javazxz.com)已经为数万Java学习者服务超过8年了!积累会员资料超过10000G+
成为本站VIP会员,下载本站10000G+会员资源,会员资料板块,购买链接:点击进入购买VIP会员

JAVA高级面试进阶训练营视频教程

Java架构师系统进阶VIP课程

分布式高可用全栈开发微服务教程Go语言视频零基础入门到精通Java架构师3期(课件+源码)
Java开发全终端实战租房项目视频教程SpringBoot2.X入门到高级使用教程大数据培训第六期全套视频教程深度学习(CNN RNN GAN)算法原理Java亿级流量电商系统视频教程
互联网架构师视频教程年薪50万Spark2.0从入门到精通年薪50万!人工智能学习路线教程年薪50万大数据入门到精通学习路线年薪50万机器学习入门到精通教程
仿小米商城类app和小程序视频教程深度学习数据分析基础到实战最新黑马javaEE2.1就业课程从 0到JVM实战高手教程MySQL入门到精通教程
查看: 626|回复: 0

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

[复制链接]
  • TA的每日心情
    奋斗
    2024-11-24 15:47
  • 签到天数: 804 天

    [LV.10]以坛为家III

    2053

    主题

    2111

    帖子

    72万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    726782
    发表于 2021-7-12 14:02:58 | 显示全部楼层 |阅读模式
    输入若干个成绩,求所有成绩的平均分。每输入一个成绩后询问是否继续输入下一个成绩,回答“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()
    

      

    哎...今天够累的,签到来了1...
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|手机版|小黑屋|Java自学者论坛 ( 声明:本站文章及资料整理自互联网,用于Java自学者交流学习使用,对资料版权不负任何法律责任,若有侵权请及时联系客服屏蔽删除 )

    GMT+8, 2024-12-22 16:30 , Processed in 0.059012 second(s), 30 queries .

    Powered by Discuz! X3.4

    Copyright © 2001-2021, Tencent Cloud.

    快速回复 返回顶部 返回列表