新知识:
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)) #[]