Python练习题

Python高级语法阶段-练习题

文 / 大炳哥 来源 / 原创 阅读 / 2999 1年前

1、 列举出10个常用的Linux命令

答:pwd、cd、ls、touch、mkdir、rm、clear、tree、cp、cat、grep、find、echo、ping、
shutdown、ifconfig、exit

2、 这两个参数是什么意思:*args,**kwargs?我们为什么要使用它们?

答:定义函数时,如果不确定要接受的位置参数有几个,那么可以使用*args,接受不定长的位置参数;同理**kwargs接收不定长的关键词参数

3、 Python列表与元组的区别是什么?分别在什么情况下使用?

答:Python中列表和元祖都是序列,因此都能进行添加,删除,更新,切片等操作。但列表是可变对象,元祖是不可变对象。  
元祖主要用于函数赋值,字符串格式化等。但列表中的方法更多些,也是PYTHON中更常用的数据结构。

4、 用户在浏览器地址栏中输入www.baidu.com 后整个过程中发生了什么?

   答:浏览器通过本机访问DNS域名解析服务器
   DNS域名解析服务器解析域名并向客户端回复百度服务器IP地址
   客户端拿到百度服务器IP地址,即向服务器发起http请求
   百度服务器收到http请求,然后返回响应

5、 要求:用 python 写一个正则表达式实现电话号码的提取功能,下面是需要满足条件:

a. 匹配(123)-456-7890 和 123-456-7890 b. 不匹配(123-456-7890 和 123)-456-7890

import re
def get_tel(text):
    pattern = r'\(\d{3}\)-\d{3}-\d{4}|\d{3}-\d{3}-\d{4}'
    tels = re.search(pattern,text)
    if tels:
        tels = tels.group()
    print('提取到的电话号码为:',tels)

text = input('请输入字符串:')
get_tel(text)
(只要有正则模板即可)

6、 请简要描述ngnix 的正向代理与反向代理

答:正向代理 是一个位于客户端和原始服务器(originserver) 之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个 请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将 获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使 用正向代理。 
反向代理正好相反,对于客户端而言它就像是原始服务器,并且 客户端不需要进行任何特别的设置。客户端向反向代理的命名空间中 的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交 请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己 的一样。 

7、 请简述装饰器的作用,并实现是一个装饰器,要求被装饰的函数的名称不改变。

from functools import wraps
def decorator(func):
    @wraps(func)
    def inner(self, *args, **kwargs):
        return func(*args, **kwargs)
    return inner
@decorator
def test():
    pass
print(test)

8、 创建一个简单tcp服务器需要的流程

参考答案:
1.socket创建一个套接字
2.bind绑定ip和port
3.listen使套接字变为可以被动链接
4.accept等待客户端的链接
5.recv/send接收发送数据

9、 MySQL数据库中事务的特性有哪些?

1、原子性( ):事务中的全部操作在数据库中是不 可分割的,要么全部完成,要么均不执行。 
2、一致性( ):几个并行执行的事务,其执行结果必 须与按某一顺序串行执行的结果相一致。 
3、隔离性( ):事务的执行不受其他事务的干扰,事务 执行的中间结果对其他事务必须是透明的。 
4、持久性( ):对于任意已提交事务,系统必须保证该 事务对数据库的改变不被丢失,即使数据库出现故障 

10、通配符是 shell 命令中的重要功能,? 表示匹配任意 1 个字符,*表示匹配 0 个或多个字符。请使用你熟悉的编程语言实现一个字符串匹配函数,支持 ?* 通配符。如 a?cd*d 匹配 abcdaccd

def wildcard(rule,strs):
    match = ''
    i = 0
    for j in range(len(strs)):
        while i < len(rule) and j<len(strs):
            if rule[i] == '?':
                match += strs[j]
                i += 1
                j += 1
                continue
            elif rule[i] == '*':
                if i == len(rule)-1:
                    match += strs[j:]
                    return match
                else:
                    index = strs[j:].find(rule[i+1])
                    if index < 0:
                        return 0
                    else:
                        match += strs[j:j+index]
                        i += 1
                        j += index
                        continue
            else:

                if rule[i] == strs[j]:
                    match += strs[j]
                    i += 1
                    j += 1
                    if i == len(rule):
                        return match
                else:
                    if len(match):
                        return 0
                    else :
                        j += 1
                        continue
                    # print(rule,'和',strs,'不匹配')
    return match

if __name__ == '__main__':
    strs = input('请输入要从中查找的字符串:')
    rule = input('请输入查找规则:')
    character = wildcard(rule,strs)
    if not character:
        print(rule,'和',strs,'不匹配')
    else:
        print(rule,'和',strs,'匹配的是:',character)

5

评论

共0条评论
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~

站点声明:本站转载作品版权归原作者及来源网站所有,原创内容作品版权归作者所有,任何内容转载、商业用途等均须联系原作者并注明来源。

© 2019 The Pride & Joy of an Artisan. · Designed By duoguyu · Powered By Django京ICP备19006898号-1
相关侵权、举报、投诉及建议等,请发E-mail:lemont0086@163.com

友情链接: 大炳哥的博客 逐梦个人博客 微微的博客 daixu 十年之约