大学慕课_《Python程序设计》_第四章_条件、循环和其他语句_笔记

本文详细介绍了Python编程中的while循环,强调了浮点数比较的注意事项,并探讨了range()函数的用法及其参数含义。此外,还深入讲解了Python异常处理的语法格式,列举了常见标准异常及实例分析。
摘要由CSDN通过智能技术生成

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:
语句块3except 异常类型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')

输入为4时

在这里插入图片描述

输入为10时

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值