Table of Contents

Author weiwu (victor.wuv@gmail.com)
Date 2018-08-28 07:34:55
Title  

http://www.10tiao.com/html/383/201801/2247486052/1.html

Yes
No



1 1000道Python题库系列分享一(17道)

1.1 到Python官方网站下载并安装Python解释器环境。

1.2 到Anaconda官方网站下载并安装最新的Anaconda3开发环境。

1.3 Python程序的_name_的作用是什么

每个Python程序都有一个__name__变量,用来表示程序的运行方式。当作为模块导入时,__name__变量的值等于程序文件名,当直接运行程序时其值为字符串’__main__’。
#!/usr/bin/python
# Filename: using_name.py

if __name__ == '__main__':
  print 'This program is being run by itself'
else:
  print 'I am being imported from another module'
$ python
>>> import using_name
I am being imported from another module

1.4 Python安装扩展库常用的工具是_____pip___和conda,其中后者需要安装Python集成开发环境Anaconda3之后才可以使用,而前者是Python官方推荐和标配的。

1.5 Python程序文件扩展名主要有____.py______.pyw______两种,其中后者常用于GUI程序。

1.6 Python源代码程序伪编译后的文件扩展名为__.pyc_______。

1.7 使用pip工具在线安装Excel文件操作扩展库openpyxl的完整命令是__________。

pip install openpyxl

1.8 使用pip工具在线升级科学计算扩展库numpy的完整命令是__________。

pip install numpy --update

1.9 使用pip工具把本机已安装的Python扩展库及版本信息输出到文本文件requirements.txt中的完整命令是__________。

pip freeze > requirements.txt

1.10 使用pip工具查看当前已安装的Python扩展库(不含版本号)的完整命令是__________。

pip list

1.11 判断对错:Python是一种跨平台、开源、免费的高级动态编程语言。

Yes

1.12 判断对错:Python 3.x完全兼容Python 2.x。

No

1.13 判断对错:在Windows平台上编写的Python程序无法在Unix平台运行。

No

1.14 判断对错:不可以在同一台计算机上安装多个Python版本。

No

1.15 判断对错:pip命令支持使用扩展名为whl的文件离线安装Python扩展库。

Yes

1.16 判断对错:下载whl文件进行离线安装扩展库时,因为whl文件的名字都比较长,可以改成短一些的名字再使用pip进行安装。

No

1.17 判断对错:用来安装Python扩展库的pip命令应该在命令提示符环境下运行,如果安装了多个版本的Python,最好切换至相应版本的Python安装目录下运行。

Yes

2 1000道Python题库系列分享二(48道)

2.1 表达式int('11111', 2)的值为__________。

In [210]: int?
Init signature: int(self, /, *args, **kwargs)
Docstring:
int(x=0) -> integer
int(x, base=10) -> integer

Convert a number or string to an integer, or return 0 if no arguments
are given.  If x is a number, return x.__int__().  For floating point
numbers, this truncates towards zero.

If x is not a number or if base is given, then x must be a string,
bytes, or bytearray instance representing an integer literal in the
given base.  The literal can be preceded by '+' or '-' and be surrounded
by whitespace.  The base defaults to 10.  Valid bases are 0 and 2-36.
Base 0 means to interpret the base from the string as an integer literal.
>>> int('0b100', base=0)
4
Type:           type
# binary 0b or 0B
print("For 1010, int is:", int('1010', 2))
print("For 0b1010, int is:", int('0b1010', 2))

# octal 0o or 0O
print("For 12, int is:", int('12', 8))
print("For 0o12, int is:", int('0o12', 8))

# hexadecimal
print("For A, int is:", int('A', 16))
print("For 0xA, int is:", int('0xA', 16))
此题为:base=2, 1+2+4+8+16=31

2.2 表达式chr(ord('D')+2)的值为__________。

In [253]: ord?
Signature: ord(c, /)
Docstring: Return the Unicode code point for a one-character string.
Type:      builtin_function_or_method

In [255]: chr?
Signature: chr(i, /)
Docstring: Return a Unicode string of one character with ordinal i; 0 <= i <= 0x10ffff.
Type:      builtin_function_or_method

2.3 简单解释Python基于值的内存管理模式。

Python采用的是基于值得内存管理方式,在Python中可以为不同变量赋值为相同值,这个值在内存中只有一份,多个变量指向同一个内存地址;

Python具有自动内存管理功能,会自动跟踪内存中所有的值,对于没有任何变量指向的值,Python自动将其删除。

2.4 简单解释运算符/和//的区别。

/普通真除法,//取整数。

2.5 运算符%__________(可以/不可以)对浮点数进行求余数操作。

Yes

2.6 一个数字5__________(是/不是)合法的Python表达式。

Yes

2.7 判断对错:在Python 3.x中,内置函数input()把用户的键盘输入一律作为字符串返回。

Yes

2.8 在Python中关键字_________表示空类型

None

2.9 列表、元组、字符串是Python的___有序_____(有序、无序?)序列。

2.10 查看变量类型的Python内置函数是__________。

type

2.11 查看对象内存地址的Python内置函数是__________。

id()

2.12 以3为实部4为虚部,Python复数的表达形式为___________________。

3+4j, (3+4J)

2.13 Python运算符中用来计算整商的是_______//___。

2.14 Python运算符中用来计算集合并集的是_____|_____。

2.15 Python运算符中用来计算集合差集的是______-____。

2.16 Python运算符中用来计算集合交集的是_______&___。

2.17 使用运算符测试集合A是否为集合B的真子集的表达式可以写作__A<B_______。

2.18 __del______命令既可以删除列表中的一个元素,也可以删除整个列表或其他任意类型的Python对象。

2.19 表达式int('123', 16)的值为__________。

2.20 表达式int('123', 8)的值为__________。

2.21 表达式int('123')的值为______123___。

2.22 表达式int('101',2)的值为____101,2_____。

2.23 表达式abs(-3)的值为______3___。

2.24 Python 3.x语句print(1, 2, 3, sep=':')的输出结果为__________。

2.25 Python 3.x语句print(1, 2, 3, sep=',')的输出结果为__________。

2.26 表达式int(4**0.5)的值为_2________。

2.27 表达式8 ** (1/3)的值为___2.0______。

2.28 Python内置函数___len()_____可以返回列表、元组、字典、集合、字符串以及range对象中元素个数。

2.29 Python内置函数___max()_____用来返回序列中的最大元素

2.30 Python内置函数______min()__用来返回序列中的最小元素

2.31 Python内置函数_____sum()___用来返回数值型序列中所有元素之和

2.32 已知x = 3,那么执行语句x += 6之后,x的值为__9_______。

2.33 表达式13 / 4的值为_____3.25____。

2.34 表达式13 // 4的值为___3______。

2.35 表达式-13 // 4的值为___-4______。

2.36 表达式3 ** 2的值为___9______。

2.37 表达式chr(ord('a')-32) 的值为__________。

2.38 表达式abs(3+4j) 的值为___5.0______。

2.39 表达式16 ** 0.5的值为_4________。

2.40 表达式type({3})的值为__________。

set

2.41 表达式type({3:3})的值为__________。

dict

2.42 表达式isinstance('Hello world', str)的值为__________。

True

2.43 表达式isinstance('abc', int)的值为__________。

False

2.44 表达式isinstance(4j, (int, float, complex))的值为__________。

True

2.45 表达式isinstance('4', (int, float, complex))的值为__________。

False

2.46 表达式type(3) in (int, float, complex)的值为__________。

True

2.47 表达式type('3') in (int, float, complex)的值为__________。

False

2.48 表达式type(3) == int的值为__________。

True

3 1000道Python题库系列分享三(30道)

2.49 判断对错:已知x = 3,那么赋值语句x = 'abcedfg'是无法正常执行的。

No

2.50 判断对错:Python变量使用前必须先声明,并且一旦声明就不能在当前作用域内改变其类型了。

No

2.51 判断对错:Python不允许使用关键字作为变量名,但是允许使用内置函数名作为变量名,不过这会改变函数名的含义,所以不建议这样做。

Yes

2.52 判断对错:在Python中可以使用if作为变量名。

No

2.53 判断对错:在Python 3.x中可以使用中文作为变量名。

Yes

2.54 判断对错:Python变量名必须以字母或下划线开头,并且区分字母大小写。

Yes

2.55 判断对错:加法运算符可以用来连接字符串并生成新字符串。

Yes

2.56 判断对错:x = 9999**9999这样的语句在Python中无法运行,因为数字太大了超出了整型变量的表示范围。

No

2.57 判断对错:3+4j不是合法的Python表达式。

No

2.58 判断对错:0o12f是合法的八进制数字。

No

2.59 判断对错:只有Python扩展库才需要导入以后才能使用其中的对象,Python标准库不需要导入即可使用其中的所有对象。

No

2.60 判断对错:在Python中0xad是合法的十六进制数字表示形式。

Yes

2.61 判断对错:4j 是合法Python数字类型。

Yes

2.62 判断对错:Python使用缩进来体现代码之间的逻辑关系,对缩进的要求非常严格。

Yes

2.63 判断对错:Python代码的注释只有一种方式,那就是使用#符号。

No

2.64 判断对错:放在一对三引号之间的任何内容将被认为是注释。

No

2.65 判断对错:尽管可以使用import语句一次导入任意多个标准库或扩展库,但是仍建议每次只导入一个标准库或扩展库。

Yes

2.66 判断对错:为了让代码更加紧凑,编写Python程序时应尽量避免加入空格和空行。

No

2.67 判断对错:在Python 3.5中运算符+不仅可以实现数值的相加、字符串连接,还可以实现列表、元组的连接和集合的并集运算。

No

2.68 判断对错:在Python中可以使用 for 作为变量名。

No

2.69 判断对错:在Python中可以使用 id 作为变量名,但是不建议这样做。

Yes

2.70 判断对错:一个数字5也是合法的Python表达式。

Yes

2.71 判断对错:执行语句from math import sin之后,可以直接使用sin()函数,例如 sin(3)。

Yes

2.72 判断对错:一般来说,Python扩展库没有通用于所有版本Python的,安装时应选择与已安装Python的版本对应的扩展库。

Yes

2.73 判断对错:Python变量名区分大小写,所以student和Student不是同一个变量。

Yes

2.74 判断对错:在Python 3.x中reduce()是内置函数。

No

2.75 判断对错:如果只需要math模块中的sin()函数,建议使用from math import sin来导入,而不要使用import math导入整个模块。

Yes

2.76 判断对错:表达式pow(3, 2) == 3 ** 2的值为True。

Yes

2.77 判断对错:已知x = 3,那么执行语句x+=6之后,x的内存地址不变。

No

2.78 判断对错:安装Python扩展库时只能使用pip工具在线安装,如果安装不成功就没有别的办法了。

No

4 1000道Python题库系列分享四(40道)

3.1 为什么应尽量从列表的尾部进行元素的增加与删除操作?

函数指针是增加的

3.2 Python 3.x的range()函数返回一个_____________。

iterator

3.3 编写程序,生成包含1000个0到100之间的随机整数,并统计每个元素的出现次数。

import defaults
dictionary_stat = defaults.default_dict()

3.4 表达式

[3] in [1, 2, 3, 4]

的值为___________。

False

3.5 编写程序,用户输入一个列表和2个整数作为下标,然后使用切片获取并输出列表中介于2个下标之间的元素组成的子列表。例如用户输入[1, 2, 3, 4, 5, 6]和2,5,程序输出[3, 4, 5, 6]。

a = [1, 2, 3, 4, 5, 6]
begin = input()
end = input()
a[begin:end+1]

3.6 列表对象的sort()方法用来对列表元素进行原地排序,该函数返回值为________。

None

3.7 列表对象的__________方法删除首次出现的指定元素,如果列表中不存在要删除的元素,则抛出异常。

remove()

3.8 假设列表对象aList的值为[3, 4, 5, 6, 7, 9, 11, 13, 15, 17],那么切片aList[3:7]得到的值是_____________________。

[6, 7, 9, 11]

3.9 设计一个字典,并编写程序,用户输入内容作为“键”,然后输出字典中对应的“值”,如果用户输入的“键”不存在,则输出“您输入的键不存在!”

d={"a":1,"b":2}
key = input()
d.get(key,"key not existed")

3.10 编写程序,生成包含20个随机数的列表,然后将前10个元素升序排列,后10个元素降序排列,并输出结果。

import numpy as np
a = np.random.randn(20)
print(sorted(a[:10]))
print(sorted(a[10:],reverse=True))

3.11 在Python中,字典和集合都是用一对___nil_______作为界定符,字典的每个元素有两部分组成,即___key_______value_____,其中__key____不允许重复

3.12 使用字典对象的_items()_______方法可以返回字典的“键-值对”,使用字典对象的____keys()_______方法可以返回字典的“键”,使用字典对象的__values()______方法可以返回字典的“值”。

3.13 假设有列表a = ['name', 'age', 'sex']和b = ['Dong', 38, 'Male'],请使用一个语句将这两个列表的内容转换为字典,并且以列表a中的元素为“键”, 以列表b中的元素为“值”,这个语句可以写为_____________________。

dict(zip(a,b))

3.14 假设有一个列表a,现要求从列表a中每3个元素取1个,并且将取到的元素组成新的列表b,可以使用语句________________。

a = [3, 4, 5, 6, 7, 9, 11, 13, 15, 17]
b = a[::2]

3.15 使用列表推导式生成包含10个数字5的列表,语句可以写为__________________。

[5 for _ in range(10)]

3.16 ___________(可以、不可以)使用del命令来删除元组中的部分元素。

No

3.17 表达式[1, 2, 3]*3的值为______________________。

[1,2,3,1,2,3,1,2,3]

3.18 表达式list(map(str, [1, 2, 3]))的值为__________。

['1','2','3']

3.19 语句x = 3==3, 5执行结束后,变量x的值为__________。

(True, 5)

3.20 已知x = 3,并且id(x)的返回值为496103280,那么执行语句x += 6之后,表达式id(x) == 496103280的值为__________。

False

3.21 已知x = 3,那么执行语句x *= 6之后,x的值为__________。

18

3.22 表达式3 in [1, 2, 3, 4]的值为__________。

True

3.23 使用列表与整数的乘法生成包含10个数字5的列表,可以写为__________。

[5] * 10

3.24 任意长度的非空列表、元组和字符串中最后一个元素的下标为__________。

-1

3.25 表达式list(range(1, 10, 3))的值为__________。

[1,4,7]

3.26 表达式list(range(10, 1, -3))的值为__________。

[10, 7, 4]

3.27 表达式list(range(5))的值为________________。

[0,1,2,3,4]

3.28 已知a = [1, 2, 3]和b = [1, 2, 4],那么

id(a[1])==id(b[1])

的执行结果为True_________。

3.29 切片操作list(range(6))[::2]执行结果为__________。

[0, 2, 4]

3.30 使用切片操作在列表对象x的开始处增加一个元素3的代码为__________。

x[0:0] = [3]

3.31 语句sorted([1, 2, 3], reverse=True) == reversed([1, 2, 3])执行结果为__________。

False

3.32 表达式sorted([111, 2, 33], key=lambda x: len(str(x)))的值为________________。

[2, 33, 111]

3.33 表达式sorted([111, 2, 33], key=lambda x: -len(str(x)))的值为__________。

[111, 33, 2]

3.34 表达式max([111, 22, 3], key=str)的值为__________。

3

3.35 语句x = (3,)执行后x的值为__________。

(3,)

3.36 语句x = (3)执行后x的值为__________。

3

3.37 已知x=3和y=5,执行语句 x, y = y, x 后x的值是__________。

5

3.38 可以使用内置函数_________查看包含当前作用域内所有全局变量和值的字典

globals()

3.39 可以使用内置函数_________查看包含当前作用域内所有局部变量和值的字典

locals()

3.40 字典中多个元素之间使用___,______分隔开,每个元素的“键”与“值”之间使用______:___分隔开


5 1000道Python题库系列分享五(40道)

3.43 x = ?

x = {1:2}
x[2] = 3

3.44

{1,2,3,4} - {3,4,5,6}

3.46

[x for x in range(100) if x%13 == 0]

3.47

x = [1,2,3,4]

3.48

x[len(x):]=[1,2]

3.49

x = [1, 2, 3, 4, 1, 2]
x.sort(reverse=True)
In [314]: x
Out[314]: [4, 3, 2, 2, 1, 1]

3.50

x = [1, 2, 3, 4, 1, 2]
x = x.sort(reverse=True)
In [314]: x
Out[314]:

3.51

x = [1, 11, 111]
x.sort(key=lambda x:len(str(x)), reverse=True)
In [314]: x
Out[314]: [111, 11, 1]

3.55

In [348]: list(map(list, zip(*[[1,2,3],[4,5,6]])))
Out[349]: [[1, 4], [2, 5], [3, 6]]

3.60

In [350]: list(enumerate([1,2]))
Out[354]: [(0, 1), (1, 2)]

3.67

In [385]: x = [1,2,3,4,2]

In [389]: x.remove(2)

In [390]: x
Out[390]: [1, 3, 4, 2]
In [392]: x.remove?
Docstring:
L.remove(value) -> None -- remove first occurrence of value.
Raises ValueError if the value is not present.
Type:      builtin_function_or_method

3.71

In [411]: range(10,20)[4]
Out[416]: 14

3.74

In [420]: x=(3)

In [425]: x
Out[425]: 3

3.75

In [442]: x=(3,)

In [443]: x
Out[443]: (3,)

In [444]: type(x)
Out[445]: tuple

In [446]: x*3
Out[450]: (3, 3, 3)

3.80

In [456]: x=[1,2]*2

In [457]: x.insert(1,4)

In [463]: x
Out[463]: [1, 4, 2, 1, 2]

In [464]: x.insert?
Docstring: L.insert(index, object) -- insert object before index
Type:      builtin_function_or_method

6 1000道Python题库系列分享六(40道)

3.82

In [465]: x=[[1]]*3

In [469]: x
Out[470]: [[1], [1], [1]]

3.84

In [482]: y=x[:]

In [484]: id(x)
Out[485]: 140324141711560

In [486]: id(y)
Out[490]: 140324142182536

In [491]: x==y
Out[492]: True

In [497]: id(x)==id(y)
Out[497]: False

3.85

In [512]: sorted([13,1,237,89,100],key=lambda x:len(str(x)))
Out[532]: [1, 13, 89, 237, 100]

3.90

In [540]: {1,2,3} < {3,4,5}
Out[540]: False

In [541]: {1,2,3} < {1,2,4}
Out[541]: False

3.94

In [552]: random.randrange?
Signature: random.randrange(start, stop=None, step=1, _int=<class 'int'>)
Docstring:
Choose a random item from range(start, stop[, step]).

This fixes the problem with randint() which includes the
endpoint; in Python this is usually not what you want.
File:      ~/.virtualenvs/graph/lib/python3.6/random.py
Type:      method

3.95

In [557]: random.sample?
Signature: random.sample(population, k)
Docstring:
Chooses k unique random elements from a population sequence or set.

3.104

In [592]: x=[1,2]

In [594]: y=x

In [597]: y.append(3)

In [610]: x
Out[611]: [1, 2, 3]

3.114

x = [1,2]
x.append([3])
In [631]: x
Out[631]: [1, 2, [3]]

3.111

x = [[1,2,3],[4,5,6]]
[[row[i] for row in x] for i in range(len(x[0]))]
# 先从最右边起,i in range(3), 循环3次, row在x里面取两次,取[x[[0][0],x[[1],[0]]...

7 1000道Python题库系列分享七(30道)

3.121

In [666]: [1,2,3] == [1,3,2]
Out[672]: False

3.129

In [11]: x=[1.0,2.0,3.0]

In [12]: sum(x)/len(x)
Out[12]: 2.0

3.130

In [13]: x={1:2,2:3,3:4}

In [14]: sum(x)
Out[14]: 6
In [16]: sum(x.values())
Out[16]: 9

3.138

In [25]: map(int, ['1','2'])
Out[25]: <map at 0x11037ee80>

In [26]: x,y=map(int, ['1','2'])

In [27]: x
Out[27]: 1

In [28]: y
Out[28]: 2

3.140

In [35]: x=list(range(5))

In [36]: x.remove(3)

In [37]: x
Out[37]: [0, 1, 2, 4]

In [42]: x.index(4)
Out[42]: 3

3.141

In [43]: x
Out[43]: [0, 1, 2, 4]

In [44]: x.reverse()

In [45]: x
Out[45]: [4, 2, 1, 0]

In [46]: x=x.reverse()

In [47]: x
Out[47: None

3.142

In [5]: x=[1,2,3,4,5,6]

In [12]: x==x[:5]+x[5:]
Out[16]: True

In [17]: y = [1,2,3,4,5,6]

In [22]: x==y
Out[22]: True

In [23]: id(x)==id(y)
Out[26]: False

In [27]: id(x)==id(x[:5]+x[5:])
Out[31]: False

8 1000道Python题库系列分享八(29道)

3.153

In [40]: '%c'%65
Out[46]: 'A'

In [47]: str(65)
Out[51]: '65'

3.157

In [56]: x='abcd'

In [63]: y='abcde'

In [67]: list(zip(x,y))
Out[70]: [('a', 'a'), ('b', 'b'), ('c', 'c'), ('d', 'd')]

In [71]: [i==j for i,j in zip(x,y)]
Out[76]: [True, True, True, True]

3.163

In [104]: list(str([3,4]))==[3,4]
Out[104]: False

In [105]: list(str([3,4]))
Out[105]: ['[', '3', ',', ' ', '4', ']']

3.165

In [110]: sorted({'a':3,'b':9})
Out[123]: ['a', 'b']

In [124]: sorted({'a':3,'b':9}.values())
Out[126]: [3, 9]

3.174

In [199]: [1,2,3]>[1,3,2]
Out[211]: False

In [212]: [1]>[2]
Out[218]: False

In [219]: [1]<[2]
Out[219]: True

In [220]: [1,2,3]<[1,3,2]
Out[220]: True

3.178

In [221]: type({})
Out[222]: dict

In [223]: type({1})
Out[226]: set

9 1000道Python题库系列分享九(31道)

10 Hackerrank

10.1 string validator

s = "aA2"
#In the first line, print True if  has any alphanumeric characters. Otherwise, print False.
print("True" if any(k.islower() or k.isnum() for k in s) else "False")

#In the second line, print True if  has any alphabetical characters. Otherwise, print False.
print("True" if any(k.isalpha() for k in s) else "False")

#In the third line, print True if  has any digits. Otherwise, print False.
print("True" if any(k.isdigit() for k in s) else "False")

#In the fourth line, print True if  has any lowercase characters. Otherwise, print False.
print("True" if any(k.islower() for k in s) else "False")

#In the fifth line, print True if  has any uppercase characters. Otherwise, print False.
print("True" if any(k.isupper() for k in s) else "False")

10.2 find a string

# Output the integer number indicating the total number of occurrences of the substring in the original string.

# Sample Input

string = 'ABCDCDC'
sub_string = 'CDC'
counter = 0
for i in range(0, len(string)):
    print(string[i:len(sub_string)+i])
    if sub_string == string[i:len(sub_string)+i]:
        counter += 1

10.3 calendar-module

You are given a date. Your task is to find what the day is on that date.

Input Format

A single line of input containing the space separated month, day and year, respectively, in    format.

Constraints

Output Format

Output the correct day in capital letters.

Sample Input

date = '08 05 2015'
Sample Output

WEDNESDAY

import calendar
date = raw_input()
#MM, DD, YYYY = map(int,raw_input().split())
#print calendar.day_name[calendar.weekday(YYYY,MM,DD)].upper()
month, day, year = date.split()
weekday = calendar.weekday(int(year), int(month), int(day))
weekday_dict = {0:"MONDAY",
1:"TUESDAY",
2:"WEDNESDAY",
3:"THURSDAY",
4:"FRIDAY",
5:"SATURDAY",
6:"SUNDAY"}
print(weekday_dict[weekday])

10.4 python mutation

nput Format
The first line contains a string, .
The next line contains an integer , denoting the index location and a character  separated by a space.

Output Format
Using any of the methods explained above, replace the character at index  with character .

Sample Input

s = 'abracadabra'
index, value = "5 k".split()

l = list(s)
l[int(index)] = value
string = ''.join(l)
print(string)

10.5 door mat

N = 7
M = 21
welcome = 'WELCOME'
middle = '.|.'
slash = '-'

for i in range(1,N/2):
  s = M - i*3

  print(i)
  print(slash*((s)/2) + middle*i + slash*((s)/2))

for i in range(N/2,N-1):
  if i == N/2:
    wel = (M - 7)/2
    print(slash*wel + welcome + slash*wel)
  print(i)

10.6 leap year

add Febuary 29
The year can be evenly divided by 4, is a leap year, unless:
The year can be evenly divided by 100, it is NOT a leap year, unless:
The year is also evenly divisible by 400. Then it is a leap year.

def is_leap(year):
    leap = False
    # Write your logic here
    if year % 4 == 0:
        if year % 100 == 0:
            if year % 400 == 0:
                leap = True
                return leap
            leap = False
            return leap
        leap = True
    return leap

10.7 find angle MBC

在直角三角形ABC, <B=90 degree,斜边上找到一中点M, 输入AB, BC 长度, 找MBC角度。
import math
ab = float(raw_input())
bc = float(raw_input())
tang = ab / bc
rad = math.atan(tang)
print '{}°'.format(int(round(math.degrees(rad))))

10.8 Print the palindromic triangle of size N

n = 5
for i in range(1, n + 1):
    print((111111111//(10**(9-i)))**2)

10.9 list-comprehensions

print a list of all possible coordinates given by  on a 3D grid where the sum of  is not equal to .
print [ [ i, j, o] for i in range( x + 1) for j in range( y + 1) for o in range(z + 1) if ( ( i + j + z) != n )]

10.10 timedelta

t1 = 'Sun 10 May 2015 13:54:36 -0700'
t2 = 'Sun 10 May 2015 13:54:36 -0000'
t1 = 'Sat 02 May 2015 19:54:36 +0530'
t2 = 'Fri 01 May 2015 13:54:36 -0000'

def time_delta(t1, t2):
    t1_p1 = datetime.datetime.strptime(t1[:-5],'%a %d %b %Y %H:%M:%S ')
    if t1[-5]=='+':
       t1_p1-=datetime.timedelta(hours=int(t1[-4:-2]),minutes=int(t1[-2:]))
    elif t1[-5]=='-':
       t1_p1+=datetime.timedelta(hours=int(t1[-4:-2]),minutes=int(t1[-2:]))

    t2_p1 = datetime.datetime.strptime(t2[:-5],'%a %d %b %Y %H:%M:%S ')
    if t2[-5]=='+':
       t2_p1-=datetime.timedelta(hours=int(t2[-4:-2]),minutes=int(t2[-2:]))
    elif t2[-5]=='-':
       t2_p1+=datetime.timedelta(hours=int(t2[-4:-2]),minutes=int(t2[-2:]))

    return str(abs(int(((t2_p1-t1_p1).total_seconds()))))

delta = time_delta(t1, t2)
print(delta)

10.11 text wrapper

string = 'bscnksbcjscksbcjksbckjdscsbdcbsdkjbcsdjcbsdjkcbsdkjbckjdsbjksd'
max_width = 9

for i in range(0, len(string), max_width):
  print(string[i:i+max_width])

10.12 words score

n = 3
words = 'programming is awesome'.split()

def is_vowel(letter):
    return letter in ['a', 'e', 'i', 'o', 'u', 'y']

def score_words(words):
    score = 0
    for word in words:
        num_vowels = 0
        for letter in word:
            if is_vowel(letter):
                print(letter)
                num_vowels += 1
        if num_vowels % 2 == 0:
            score += 2
        else:
            score += 1
        print(num_vowels)
    return score

print(score_words(words))

10.13 words capital

s = '1 w 2 r 3g'
s = 'hello   world  lol'
s = s.capitalize()
l = []
for i,v in enumerate(s):
  if v != ' ' and s[i-1] == ' ':
    l.append(v.upper())
  else:
    l.append(v)
print(''.join(l))

10.14 calculate Karl Person's coefficient of correlation:

import numpy as np
Physics_Scores = [15,  12,  8,   8,   7,   7,   7,   6,   5,   3]
History_Scores = [10,  25,  17,  11,  13,  17,  20,  13,  9,   15]

coef = np.corrcoef(Physics_Scores,History_Scores)[0][1]
print('%.3f'%coef)

10.15 Bot saves princess

m = 3
grid = [
'---',
'-m-',
'p--']

def displayPathtoPrincess(n,grid):
  #print all the moves here
  for row, rv in enumerate(grid):
    for col, cv in enumerate(rv):
      if cv == 'p':
        pos_x = row
        pos_y = col


  if pos_x > 0:
    for x in range(n-pos_x):
      print('DOWN')
  else:
    for x in range(n//2-pos_x):
      print('UP')
  if pos_y > 0:
    for y in range(n-pos_y):
      print('RIGHT')
  else:
    for y in range(n//2-pos_y):
      print('LEFT')

m = input()

grid = []
for i in xrange(0, m):
    grid.append(raw_input().strip())

displayPathtoPrincess(m,grid)

10.16 find the second smallest in nested list:

name = ['Harry', 'Berry', 'Tina', 'Akriti', 'Harsh']
score = [37.21, 37.21, 37.2, 37.2, 39]


scores = dict(zip(name, score))
sorted_score = sorted(score)
#print(min(scores, key=scores.get))
min_score = min(score)
for _ in sorted_score:
  try:
    sorted_score.remove(min_score)
  except:
    break
reversed_second_score = sorted_score[0]
for name, s in scores.items():    # for name, age in list.items():  (for Python 3.x)
    if s == reversed_second_score:
        print(name)