Python基础之逻辑题(3)

  1.编写一个函数实现将IP地址转换成一个整数

  2.求结果:---lambda

  3.求a的结果

  4.求下面nums的输出

  5.求下面片段的输出

  6.写出程序的结果:------my_dict

  7.函数结果:---add_end

  8.写函数:data

  9.用两个队列来实现一个栈

  10.写出一下代码的结果并解释:parent

1.编写一个函数实现将IP地址转换成一个整数

如 10.3.9.12 转换规则为:
10 00001010
3 00000011
9 00001001
12 00001100
再将以上二进制拼接起来计算十进制结果: 00001010 00000011 00001001 00001100 = ? --------------------------------------------------------------------------- def func(ip):
a = ip.split('.')
s = ''
l = []
for i in a:
i = bin(int(i))[2:] # bin(10) = 0b1010
i = i.rjust(8, '') # 0000 1010 rjust():返回一个原子符串右对齐,并使用0填充空的新字符串,如果指定的长度小于字符串的长度则返回原字符串。
l.append(i)
s = s.join(l)
return s
ret = func('10.3.9.12 ')
print(int(ret, 2)) str.rjust(width[, fillchar])
-width -- 指定填充指定字符后中字符串的总长度.
-fillchar -- 填充的字符,默认为空格。 2进制 8进制 10进制 16进制
2进制 - bin(x, 8) bin(x, 10) bin(x, 16)
8进制 oct(x, 2) - oct(x, 10) oct(x, 16)
10进制 int(x, 2) int(x, 8) - int(x, 16)
16进制 hex(x, 2) hex(x, 8) hex(int(x, 10))

2.求结果:lambda

def num():
return [lambda x: i * x for i in range(4)] # 返回值是一个列表
print(num())
#[<function num.<locals>.<listcomp>.<lambda> at 0x00000000029726A8>, <function num.<locals>.<listcomp>.<lambda> at 0x0000000002972598>, <function num.<locals>.<listcomp>.<lambda> at 0x0000000002972730>, <function num.<locals>.<listcomp>.<lambda> at 0x00000000029727B8>]
print([m(2) for m in num()])
#[6,6,6,6] def num():
return (lambda x: i * x for i in range(4)) # 返回值是一个生成器
print(num())
#<generator object num.<locals>.<genexpr> at 0x0000000002944B48>
print([m(2) for m in num()])
#[0, 2, 4, 6]

3.求a的结果

a = 1
print(id(a))
def func(a):
a = 2
print(id(a)) #局部变量和全局变量的地址不相同
func(a)
print(a) # 1 对于a变量 在函数中定义了a=2 在函数执行完之后就销毁了 此时打印的a以旧是全局变量的a
a = []
def func(a):
a.append(1)
func(a)
print(a) #[1] 对于列表a 将a传入了函数中为a增加了一个数值 a的地址不变
#可变数据类型与不可变数据类型

4.求下面代码nums的值

num = range(2,20)
for i in num:
num =list(filter(lambda x:x==i or x%i ,num))
print(num) # 答案:[2, 3, 5, 7, 11, 13, 17, 19] num = range(2,20)
for i in num:
num =filter(lambda x:x==i or x%i ,num)
print(num)
print(list(num)) #<filter object at 0x000000000239C4E0>
#[2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]

5.请给出下面片段的输出

def say_hi(func):
def wrapper(*args,**kwargs):
print('HI') -----------------------------1 先执行
ret = func(*args,**kwargs)
print('BYE')-----------------------------4 后执行
return ret
return wrapper def say_yo(func):
def wrapper(*args,**kwargs):
print('YO')-----------------------------2 调用,所以在4之前
return func(*args,**kwargs)
return wrapper @say_hi
@say_yo
def func():
print('rock&roll')-------------------------------3 装饰器,等2执行完在4之前
func()
结果
HI
YO
rock&roll
BYE

6.请写出程序的输出结果

my_dict ={'a':0,'b':1}
def func(d):
d['a'] = 1 ---------把a的值变成了1
return d
func(my_dict)
my_dict['c'] = 2 -----添加了一个c
print(my_dict)
{'a': 1, 'b': 1, 'c': 2} 字典是可变数据类型

7.函数

def add_end(l=[]):
l.append("end")
return l add_end() # 什么都不输出
add_end() # 什么都不输出

8.写函数

'''
data:{"time":"2016-08-05T13:13:05",
"some_id":"ID1234",
"grp1":{"fld1":1,"fld2":2},
"xxx2":{"fld3":0,
"test":{‘fld5’:0.4}},"fld6":11,"fld7":7,"fld46":8 } fields:由"|"连接的以"fld"开头的字符串,如:fld2|fld3|fld7|fld19  
def select(data,fields):              
return result
'''
data = {
"time":"1989-05-06",
"some_id":123456,
"grp1":{"fld1":1, "fld2":2},
"xxx2":{"fld3":0, "fld4":0.4},
"fld6":11,
"fld7":7,
"fld45":8
} def select(data, field): # "fld2|fld7|fld29"
result = {}
lst = field.split("|") for item in lst:
result[item] = None for item in lst: # "fld2"
if item in data: #
result[item] = data[item] for value in data.values():
if type(value) == dict:
d = select(value, field)
for k, v in d.items():
if v:
result[k] = v
return result
print(select(data, "fld2|fld7|fld29"))

9.用两个队列实现一个栈

思路:
1.任何时候两个队列总有一个是空的。
2.添加元素总是向非空队列中 add 元素。
3.取出元素的时候总是将元素除队尾最后一个元素外,导入另一空队列中,最后一个元素出队。
伪代码:
class StackWithTwoQueues(object):
def __init__(self):
self.q1 = []
self.q2 = []
def push(self,item):
self.q1.append(item)
def pop(self):
if len(self.q1) == 0:
return None
while len(self.q1) != 1:
self.q2.append(self.q1.pop(0))
self.q1,self.q2 = self.q2,self.q1
return self.q2.pop(0)

10请给出正确答案

class Parent(object):
x = 1
class Child1(Parent):
pass
class Child2(Parent):
pass print(Parent.x,Child1.x,Child2.x) #1,1,1 Child1.x = 2
print(Parent.x,Child1.x,Child2.x) #1,2,1 Parent.x = 3
print(Parent.x,Child1.x,Child2.x) #3,2,3 #当子类有值的时候不继承父类,想继承用super()

python基础之逻辑题(3)的更多相关文章

  1. python基础之逻辑题(2)

    python基础之逻辑题(2) 1.若k为整数,下列while循环执行的次数为? 2.请输出正确结果-----numbers? 3.求结果-----math?   4.求结果-----sum? 5.输 ...

  2. python基础之逻辑题(1)

    python基础之逻辑题(1) 1.用一行代码实现数值交换? 2.求结果--fromkeys? 3.1,2,3,4,5能组成多少个互不相同且无重复的三位数? 4.有两个字符串列表a和b,每个字符串是逗 ...

  3. 面试题之第一部分(Python基础篇) 80题

    第一部分(python基础篇)80题 为什么学习Python?==*== # 1. python应用于很多领域,比如后端,前端,爬虫,机器学习(人工智能)等方面,几乎能涵盖各个开发语言的领域,同时它相 ...

  4. python面试题解析(python基础篇80题)

    1.   答:出于编程的喜爱,以及行业本身的前瞻性,创造性,优越性,越是综合的科目越能检验一个人的能力,喜欢这种有挑战的事情. 2.   答:跟随老师学习,以及自己查询资料,结合实战,进行输入输出以及 ...

  5. python(9)- python基础知识刷题

    1.  执行 Python 脚本的两种方式 交互方式:命令行 Windows操作系统下,快捷键cmd,输入“python”启动交互式python解释器. 文件方式:python文件 2.  简述位.字 ...

  6. python基础语法170题

    语言特性 1.谈谈对 Python 和其他语言的区别2.简述解释型和编译型编程语言3.Python 的解释器种类以及相关特点?4.说说你知道的Python3 和 Python2 之间的区别?5.Pyt ...

  7. python基础面试常见题

    1.为什么学习Python? Python是目前市面上,我个人认为是最简洁.最优雅.最有前途.最全能的编程语言,没有之一. 2.通过什么途径学习的Python? 通过自学,包括网上查看一些视频,购买一 ...

  8. python基础易错题

    1.以下代码输入什么: class Person: a = 1 def __init__(self): pass def getAge(self): print(__name__) p = Perso ...

  9. python基础技巧综合训练题2

    1,判断一个字符串中的每一个字母是否都在另一个字符串中,可以利用集合的特性来解,集合的元素如果存在,再次更新(update) 是添加不进集合的,那么集合的长度还是跟原来一样,如果添加进去,集合长度就会 ...

随机推荐

  1. Python3入门机器学习 经典算法与应用

    Python3入门机器学习 整个课程都看完了,这个课程的分享可以往下看,下面有链接,之前做java开发也做了一些年头,也分享下自己看这个视频的感受,单论单个知识点课程本身没问题,大家看的时候可以关注下 ...

  2. ssh连接超时中断问题解决方案

    当在终端使用ssh命令连接到服务器时,如果一段时间没有活动连接会被中断,以下有两种方案可以解决: 一.修改ssh客户端配置 编辑客户端 /etc/ssh/ssh_config (或~/.ssh/con ...

  3. 【CodeVS】2750 心系南方灾区

    2750 心系南方灾区 时间限制: 1 s 空间限制: 2000 KB 题目等级 : 青铜 Bronze 题目描述 Description 现在我国南方正在承受百年不遇的大雪.冻雨灾害.北京市已经开始 ...

  4. 杨柳絮-Info:太原市多部门通力合作科学治理杨柳飞絮效果好

    ylbtech-杨柳絮-Info:太原市多部门通力合作科学治理杨柳飞絮效果好 1.返回顶部 1. 太原市多部门通力合作科学治理杨柳飞絮效果好 2016-04-21 07:16 4月10日,随着气温升高 ...

  5. No.6 Verilog 其他论题

    (1)任务  **任务类似于一段程序,可以提供一种能力,使设计者可以从设计描述的不同位置执行共同的代码段.任务可以包含时序控制, 可以调用其它任务和函数.  任务的定义格式: task[automat ...

  6. JS DOM节点的增删改查

    合并拆分 行内样式  script写在html里面

  7. java 日期合法

    try { String date_str = "5555-22-33"; SimpleDateFormat format=new SimpleDateFormat("y ...

  8. JQuery--mouseover()与moseout()的区别

    mouseover()与mouseout()区别 普通鼠标移入移出事件 语法: mouseover()/mouseout() 功能: 当鼠标移入/移出到添加事件的元素或其子元素的时候,都会被触发!!m ...

  9. MySQL——自定义[存储]函数、触发器

    一. 编程基础 1)        结束符 2)        代码块 Begin 相当于 { end;  相当于 } 1.    变量 系统变量 Show variables; 查看系统变量sql_ ...

  10. typora 使用

    菜单 输入+换行键,产生标题,自动更新 [toc] [TOC] 段落 按换行键建立新的一行可在行尾插入打断线,禁止向后插入 按换行键建立新的一行<br/> 标题 开头#的个数表示,空格+文 ...