4.2 While循环
While True:#无限循环,使用break退出循环
break
初学者建议使用这种样式
讨论:两个print语句输出相等吗?
#两个print语句输出相等吗?
#加 0.01,0.02,0.03,...,0.99,1 to s
s=0
i=0.01
while i<=1.0:
s+=i
i=i+0.01
print("和是:{:.2f}".format(s))
s=0
i=0.01
for count in range(100):
s+=i
i=i+0.01
print("和是:{:.2f}".format(s))
输出:
和是:49.50
和是:50.50
浮点数不能直接比较
其中第一个while循环了99次,第二个for循环了100次
讨论:解释含义
解释含义
"""
一群猴子要选新猴王。新猴王的选择方法是:让N只候选猴子围成一圈,
从某位置起顺序编号为1~N号。从第1号开始报数,每轮从1报到3,凡报到3
的猴子即退出圈子,接着又从紧邻的下一只猴子开始同样的报数。如此不断
循环,最后剩下的一只猴子就选为猴王。
请问是原来第几号猴子当选猴王?
"""
N=int(input())
ls=[i for i in range(1,N+1)]
step=2 #步长
ptr=1
while len(ls) > 1:
#ptr表示列表中第几个元素,没有第0个元素,只有下标为0的元素
ptr=(ptr+step-1)%len(ls)+1
del ls[ptr-1]
print(ls[0])
#请解释这句话的含义:ptr=(ptr+step-1)%len(ls)+1,还要别的写法吗?
#修改代码by_fanxx
N=int(input())
ls=[i for i in range(1,N+1)]
step=2 #步长
ptr=0
while len(ls) > 1:
#ptr表示列表中第几个元素的下标ptr=0位第一个元素
ptr=(ptr+step-1)%len(ls)+1
del ls[ptr%len(ls)]
print(ls[0])
4.3 Python range()函数
python range() 函数可创建一个整数列表,一般用在 for 循环中。
函数语法
range(start, stop[, step])
参数说明:
- start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
- stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5
- step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
实例
>>>range(10) # 从 0 开始到 10
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> range(1, 11) # 从 1 开始到 11
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> range(0, 30, 5) # 步长为 5
[0, 5, 10, 15, 20, 25]
>>> range(0, 10, 3) # 步长为 3
[0, 3, 6, 9]
>>> range(0, -10, -1) # 负数
[0, -1, -2, -3, -4, -5, -6, -7, -8, -9]
>>> range(0)
[]
>>> range(1, 0)
[]
以下是 range 在 for 中的使用,循环出runoob 的每个字母:
>>> x='fanxx'
>>> for i in range(len(x)):
print(x[i])
f
a
n
x
x
讨论
表达式:range(-10,-20,-1)[-1] 的结果是什么?
-19
执行表达式:list(range(1,20,-1)) 会出现异常吗?
不会,返回[]
4.5 异常处理
语法格式
try:
语句块1
except 异常类型1:
语句块2
except 异常类型2:
语句块3
…
except 异常类型N:
语句块N+1
except:
语句块N+2
else:
语句块N+3
finally:
语句块N+4
说明
- 正常程序在语句块1中执行。
- 如果程序执行中发生异常,中止程序运行,跳转到所对应的异常处理块中执行。
- 在“except 异常类型 ”语句中找对应的异常类型,如果找到的话,执行后面的语句块。
- 如果找不到,则执行“except”后面的语句块N+2。
- 如果程序正常执行没有发生异常,则继续执行else后的语句块N+3。
- 无论异常是否发生,最后都执行finally后面语句块N+4。
Python常见的标准异常
异常名称 | 描述 |
---|---|
SystemExit | 解释器请求退出 |
FloatingPointError | 浮点计算错误 |
OverflowError | 数值运算超出最大限制 |
ZeroDivisionError | 除(或取模)零 (所有数据类型) |
KeyboardInterrupt | 用户中断执行(通常是输入^C) |
ImportError | 导入模块/对象失败 |
IndexError | 序列中没有此索引(index) |
RuntimeError | 一般的运行时错误 |
AttributeError | 对象没有这个属性 |
IOError | 输入/输出操作失败 |
OSError | 操作系统错误 |
KeyError | 映射中没有这个键 |
TypeError | 对类型无效的操作 |
ValueError | 传入无效的参数 |
实例
x = int(input())
t = [1,2,3,4,5]
try:
print(t[x])
print('hello')
except:
print('x is not a valid index')
else:
print('nothing')
finally:
print('anything')