1. 当两个整数相除时,其结果是一个浮点数,而整除运算符截去小数部分,只返回商的整数部分。
>>> 6/3
2.0
>>> 7/3
2.3333333333333335
>>> 7//3
2
>>> 7%3
1
  1. 快速初始化列表,可以通过重复运算来实现
>>> myList = [0] * 6
>>> myList
[0, 0, 0, 0, 0, 0]

  1. 重复运算返回的结果是序列中指向数据对象的引用的重复
>>> 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 处都随即改变。

  • 列表和字符串的主要区别在于,列表能够被修改,字符串则不能。

  • 由于都是异构数据序列,因此元组与列表非常相似。它们的区别在于,元组和字符串一样是不可修改的。


  1. input 函数返回的值是一个字符串,如果需要将这个字符串转换成其他类型,必须明确地提供类型转换
sradius = input("Please enter the radius of the circle ")
radius = float(sradius)
diameter = 2 * radius

  1. print 接受零个或者多个参数,并且将单个空格作为默认分隔符来显示结果。设置 sep 参数可以改变分隔符,设置参数 end 可以改变换行符。
>>> print("Hello")
Hello
>>> print("Hello","World")
Hello World
>>> print("Hello","World", sep="***")
Hello***World
>>> print("Hello","World", end="***")
Hello World***>>>

  1. 格式化字符串是一个模板,其中包含保持不变的单词或空格,以及之后插入的变量的占位符。
print(aName, "is", age, "years old.")

使用格式化字符串,可以将上面的语句重写成下面的语句。

print("%s is %d years old." % (aName, age))

%是字符串运算符,被称作格式化运算符。
表达式的左边部分是模板(也叫格式化字符串),右边部分则是一系列用于格式化字符串的值。
%s 声明了一个字符串, %d 则声明了一个整数。


  1. 列表解析式
>>> sqlist = [x*x for x in range(1,11) if x%2 != 0]
>>> sqlist
[1, 9, 25, 49, 81]
>>>

  1. 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 的参数非负。这意味着程序并不会终止,而是继续执行后续语句。


  1. 使用 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 参考手册,了解完整的异常类型以及如何自己创建异常。


  1. 用著名的牛顿迭代法,自己实现平方根函数。

$$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