[Python] 碎片 - 列表、字符串、函数等运用以及异常处理
- 当两个整数相除时,其结果是一个浮点数,而整除运算符截去小数部分,只返回商的整数部分。
>>> 6/3
2.0
>>> 7/3
2.3333333333333335
>>> 7//3
2
>>> 7%3
1
- 快速初始化列表,可以通过重复运算来实现
>>> myList = [0] * 6
>>> myList
[0, 0, 0, 0, 0, 0]
- 重复运算返回的结果是序列中指向数据对象的引用的重复
>>> myList = [1,2,3,4]
>>> A = [myList]*3
>>> A
[[1, 2, 3, 4], [1, 2, 3, 4], [1, 2, 3, 4]]
>>> myList[2] = 45
>>> A
[[1, 2, 45, 4], [1, 2, 45, 4], [1, 2, 45, 4]]
>>>
变量 A 包含 3 个指向 myList 的引用。 myList 中的一个元素发生改变, A 中的 3 处都随即改变。
-
列表和字符串的主要区别在于,列表能够被修改,字符串则不能。
-
由于都是异构数据序列,因此元组与列表非常相似。它们的区别在于,元组和字符串一样是不可修改的。
input
函数返回的值是一个字符串,如果需要将这个字符串转换成其他类型,必须明确地提供类型转换
sradius = input("Please enter the radius of the circle ")
radius = float(sradius)
diameter = 2 * radius
print
接受零个或者多个参数,并且将单个空格作为默认分隔符来显示结果。设置sep
参数可以改变分隔符,设置参数end
可以改变换行符。
>>> print("Hello")
Hello
>>> print("Hello","World")
Hello World
>>> print("Hello","World", sep="***")
Hello***World
>>> print("Hello","World", end="***")
Hello World***>>>
- 格式化字符串是一个模板,其中包含保持不变的单词或空格,以及之后插入的变量的占位符。
print(aName, "is", age, "years old.")
使用格式化字符串,可以将上面的语句重写成下面的语句。
print("%s is %d years old." % (aName, age))
%是字符串运算符,被称作格式化运算符。
表达式的左边部分是模板(也叫格式化字符串),右边部分则是一系列用于格式化字符串的值。
%s 声明了一个字符串, %d 则声明了一个整数。
- 列表解析式
>>> sqlist = [x*x for x in range(1,11) if x%2 != 0]
>>> sqlist
[1, 9, 25, 49, 81]
>>>
- 在
try
语句块中调用print
函数处理异常。对应的except
语句块“捕捉”异常,并且为用户打印一条提示消息。
>>> try:
print(math.sqrt(anumber))
except:
print("Bad Value for square root")
print("Using absolute value instead")
print(math.sqrt(abs(anumber)))
Bad Value for square root
Using absolute value instead
4.79583152331
>>>
except
会捕捉到sqrt
抛出的异常并打印提示消息,然后会使用对应数字的绝对值来保证sqrt
的参数非负。这意味着程序并不会终止,而是继续执行后续语句。
- 使用
raise
语句来触发运行时异常。
>>> if anumber < 0:
... raise RuntimeError("You can't use a negative number")
... else:
... print(math.sqrt(anumber))
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
RuntimeError: You can't use a negative number
>>>
除了
RuntimeError
以外,还可以抛出很多不同类型的异常。请查看 Python 参考手册,了解完整的异常类型以及如何自己创建异常。
- 用著名的牛顿迭代法,自己实现平方根函数。
$$newguess = \frac{1}{2} \times (oldguess +\frac{n}{oldguess})$$
代码清单:
def squareroot(n):
root = n/2 #initial guess will be 1/2 of n
for k in range(20):
root = (1/2)*(root + (n / root))
return root
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
评论已关闭