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()
python 关于异常处理 try...except... 的两个案例的更多相关文章
- python的异常处理及异常类定义
python的异常处理语法和大多数语言相似: try: try块的语句... except exceptiontype1 as var:#使用as语句获得本次捕获到的异常的实例var except块语 ...
- python的异常处理机制
异常机制己经成为衡量一门编程语言是否成熟的标准之一,使用异常处理机制的 Python 程序有更好的容错性,更加健壮. 对于计算机程序而言,情况就更复杂了一一没有人能保证自己写的程序永远不会出辛苦!就算 ...
- python 读取wav 音频文件的两种方式
python 中,常用的有两种可以读取wav音频格式的方法,如下所示: import scipy from scipy.io import wavfile import soundfile as sf ...
- python中如何调用函数交换两个变量的值
python中如何调用函数交换两个变量的值 所有代码来在python3.7.1版本实现 以下实例通过用户输入两个变量,并相互交换: 方法一: def swap(a,b): # 创建临时变量,并交换 ...
- Python进阶----异常处理
Python进阶----异常处理 一丶错误和异常 错误: 语法错误(这种错误,根本过不了python解释器的语法检测,必须在程序执行前就改正) #语法错误示范一 if #语法错误示范二 ...
- Python 数据库的Connection、Cursor两大对象
Python 数据库的Connection.Cursor两大对象 pymysql是Python中操作MySQL的模块,其使用方法和py2的MySQLdb几乎相同. Python 数据库图解流程 Con ...
- Python 多进程异常处理
前言 最近项目用到了Python作为网站的前端,使用的框架是基于线程池的Cherrypy,但是前端依然有一些比较‘重’的模块.由于python的多线程无法很好的利用多核的性质,所以觉得把这些比较‘重’ ...
- Python模块、包、异常、文件(案例)
Python模块.包.异常.文件(案例) python.py #模块 # Python中的模块(Module),是一个Python文件,以.py文件结尾,包含了Python对象定义和Python语句, ...
- [python]python try异常处理机制
#python的try语句有两种风格 #一:种是处理异常(try/except/else) #二:种是无论是否发生异常都将执行最后的代码(try/finally) try/except/else风格 ...
随机推荐
- 02.当构造参数过多时使用builder模式
前言 <Effective Java>中文第三版,是一本关于Java基础的书,这本书不止一次有人推荐我看.其中包括我很喜欢的博客园博主五月的仓颉,他曾在自己的博文<给Java程序猿们 ...
- Redis数据库与python的交互
1.安装redis模块:pip install redis 2.安装好以后主要使用redis模块中的StrictRedis对象,用于连接redis服务器 3.代码如下: from redis impo ...
- java 8时间使用LocalDateTime,ZonedDateTime,LocalDate
前言 java 8的时间已经能够满足日常的使用,也方便理解.joda-time作为一个有优秀的时间组件也不得不告知使用者在java 8以后使用自带的时间 LocalDateTime以及ZonedDat ...
- Linux命令:ip命令
ip命令功能:配置网络属性 一.ip link 系列 ip link ip [-s] link show # 查看默认信息 ip link show eth0 ip link show ...
- MyBatis的2个核心对象:SqlSessionFactory、SqlSession
SqlSessionFactory SqlSessionFactory是单个数据库映射关系经过编译后的内存镜像,主要作用是创建SqlSession. InputStream inputStream = ...
- Steam游戏《Zengeon(神明在上)》修改器制作-[先使用CE写,之后有时间的话改用C#](2020年寒假小目标06)
日期:2020.01.30 博客期:138 星期四 [温馨提示]: 只是想要修改器的网友,可以直接点击此链接下载: 只是想拿CT文件的网友,可以直接点击此链接下载: 没有博客园账号的网友,可以将页面下 ...
- 题解 P3950 【部落冲突】
树链剖分吼啊 一看就看出是LCT模板题啦 前记 见这么多人写LCT,却很少人写树链剖分,于是我就来一发树链剖分(其实是因为自己不会LCT) 本蒟蒻的写法和诸位写树链剖分的大神有点不同 思路 树链剖分, ...
- linux系统下安装两个或多个tomcat(转)
tomcat不用添加到环境变量中 直接解压两个tomcat 来到第二个tomcat的conf目录下 打开server.xml更改端口: 修改server.xml配置和第一个不同的启动.关闭监听端口 ...
- Python学习第三课——运算符
# 运算符 + - * / **(幂) %(取余) //(取整) num=9%2 print("余数为"+(str)(num)) #运算结果为 1 num1=9//2 print( ...
- 神机iPhone6停产,苹果产业链应该感谢它还是痛恨它?
据国内媒体报道,一些苹果上游供应商已经接到通知,iPhone6系列将会在5月底彻底停产,一时间,竟在网络上引发汹涌的怀念之情.iPhone6的特别之处在于它是苹果第一款大屏幕的智能手机,标志着库克彻底 ...