新知识:

1、

  实数:

     有理数 有限小数  1.2

        无限循环小数1.23232323

     无理数:无限不循环小数

  虚数    3j 

2、浮点数的特点:当小数部分过于长的时候会出现取值误差

  浮点数--小数:   1.2=12*0.1

a=1.23253464576563453457854
print(a)#1.2325346457656345

3、复数

  复数 a+bj  实部+虚部

  特点:复数之间不能比较大小

  共轭复数 :两个实部相等,虚数部分互为相反数的为共轭复数

4、float  字符串转换为数字

print(float("1.2345"))

试卷讲解:

1、char 数据类型是属于C语言  不支持Python

2、字典的特点

(1)字典是无序的;

(2)数据关联性强

(3)键值对,唯一一个映射的数据类型

(4)字典的键必须是可哈希的(不可变的数据类型;字符串,数字,布尔值,元祖)并且是唯一的

                           不可哈希的(可变的数据类型:列表,字典,set)

3、进制之间的转换

print(bin(20))  #2进制
print(oct(20))  #8进制
print(hex(20))  #16进制
# 0b10100
# 0o24
# 0x14

4、

  表示复数的语法是 real+image j

  虚部必须后缀j且j不区分大小写

  方法conjugate 返回复数的共轭复数

5、比较运算符的优先级大于逻辑运算符

     有优先级 not>and>or

6、填空题

l=range(100)
#取第一到第三个元素
print(list(l[:3]))
#去倒数第二个元素
print(l[-2])
#取后十个元素
print(list(l[-10:]))
#把l复制给l1用
l1=l.copy()

7、判断一个变量是不是字符串

type(a) is str

8、

  如何得到列表list 的交集和差集

     先转换成集合 s&b  a-b

9、

  *args 和**kwargs  在参数不确定的时候会使用到,

  *args 是接收按位置传参的所有参数,

  **kwargs是接收按照关键字传参的所有参数

10、打印字典的键值对   (避免使用items)

d={"a":1,"c":3}
for k in d:
    print(k,d[k])
# a 1
# c 3

11、写出一段python 代码实现删除一个list里面的重复元素

mew_l=[]
for i in list:
    if i not in new_l:
        new_l.append(i)
#列表里面如果有字典,转化为集合会错误

12、

  斐波那契数列1,2,3,5,8,13,21.....根据这样的规律,

  求出400万以内最 大的斐波那契数,并求出他是第几 个斐波那契数。

 

count=2
a,b=1,2
while a+b<4000000:
    c=a+b
    a=b
    b=c
    count+=1
print(c)
print(count)
# 3524578
# 32

 

13、

dicta = {"a":1,"b":2,"c":3,"d":4,"f":"hello"} dictb = {"b":3,"d":5,"e":7,"m":9,"k":"world"}

要求写 段代码,实现两个字典的相加,不同的key对应的值保留,相同的key对应的值相加后保留,

如果是字符串就拼接,如上 例得到结果为: dictc = {"a":1,"b":5,"c":3,"d":9,"e":7,"m":9,"f":"hello","k":"world"}

dicta={"a":1,"b":2,"c":3,"d":4,"f":"hello"}
dictb={"b":3,"d":5,"e":7,"m":9,"k":"world"}
dictc=dicta
for key in dictb:
    if key in dictc:
        dictc[key]=dictc[key]+dictb[key]
    else:
        dictc[key]=dictb[key]
print(dictc)
 

14、没搞明白的一道

def add(n,i):
    return n+i
def tes():
    for i in range(4):
        yield i
g=tes()
for n in [1,5]:
    g=(add(n,i)for i in g)
print(list(g))

15、

个数据结构如下所 ,请编写 个函数从该结构数据中返回由指定的字段和对应的值组成的字典。如果指定字段不存在,则跳过该字段。(10分)

data:{"time":"2016-08-05T13:13:05", "some_id":"ID1234", "grp1":{ "fld1":1,

"fld2":2}, "xxx2":{ "fld3":0,

"fld5":0.4},

"fld6":11,

"fld7":7,

"fld46":8} fields:由"|"连接的以"fld"开头的字符串,如:fld2|fld3|fld7|fld19

def select(data,fields):

# TODO:implementation return result

 

data={"time": "2016-08-05T13:13:05", "some_id": "ID1234",
       "grp1": {"fld1": 1,"fld2": 2},
       "xxx2": {"fld3": 0, "fld5": 0.4},
       "fld6": 11, "fld7": 7, "fld46": 8}
fields="fld2|fld3|fld7|fld9"
fields_lst=fields.split("|")
result={}
data_lst=[1]
while data!=1:
    for key in data:
        if key in fields_lst:
            result[key]=data[key]
        if type(data[key])==dict:
            data_lst.append(data[key])
    data=data_lst.pop()
print(result)
附加题

 

16、面试题

生成器里面的值只能被取一次:

def demo():
    for i in range(4):
        yield i
g=demo()
g1=(i for i in g)
g2=(i for i in g1)
print(list(g1))     #[0, 1, 2, 3]
print(list(g2))  #[]
生成器表达式的应用