你应该知道的python基础

1.解释一下Python 中的and-or 语法?
逻辑运算and-or,在计算机运算中的短路规则(以尽量少运算,得出正
确结果)可以提高计算效率,在result = a and b 运算中:
当a 为假时,无论b 为真或假,结果都为假,此时b 的运算就不会进行,
结果直接为a 即可;
当a 为真时,结果还得看b,b 为真则真,b 为假则假,此时结果即为b;
在result = a or b 运算中:
如果a 为真则无论b 为什么结果都会是真,结果即为b
如果a 为假则看b 的情况了,b 为真则结果为真,b 为假则结果为假,
即结果为b

2.用Python 匹配HTML tag 的时候,<.*>和<.*?>有什么区别?
<.*>是贪婪匹配,会从第一个“<”开始匹配,直到最后一个“>”中间
所有的字符都会匹配到,中间可能会包含“<>”
<.*?>是非贪婪匹配,从第一个“<”开始往后,遇到第一个“>”结束匹
配,这中间的字符串都会匹配到,但是不会有“<>”

3.已知路径path,写一个函数并以前向遍历的方式打印目录中
的所有文件
(可使用os.listdir,os.path.isdir,os.path.join 和递归的方式来
实现),比如如下的一个文件树结构:
root
|————a.file
|————b.dir
| |——ba.file
| ﹂——c.dir
| ﹂——d.file
|————e.file
﹂———f.dir
|———g.file
﹂——h.dir
﹂——i.file
将root 的绝对路径传递给函数lookup 后,打印的内容如下:
/root/testWork/test_dir/a.file
/root/testWork/test_dir/b.dir/ba.file
/root/testWork/test_dir/b.dir/c.dir/d.file
/root/testWork/test_dir/e.file
/root/testWork/test_dir/f.dir/g.file
/root/testWork/test_dir/f.dir/h.dir/i.file
请实现此函数。

import os

full_names = []


def lookup(path=None):
    global full_names
    if not path:
        dirs = os.getcwd()
    else:
        if os.path.isdir(path):
            dirs = path
        else:
            print(path)
            return
        # 遍历路径下的所有目录,并按顺序排序
        os.chdir(dirs)


dirs = os.getcwd()
dir_files = os.listdir(dirs)
dir_files.sort()


for dir_file in dir_files:
    if os.path.isfile(dir_file):
        full_name = os.path.join(dirs,dir_file)
        full_names.append(full_name)
    elif os.path.isdir(dir_file):
        lookup(dir_file)
        os.chdir('../')

if __name__ == '__main__':
    dir = input('请输入一个要遍历的目录:')
    lookup(dir)
    for full_name in full_names:
        print(full_name)

# 给定一个int list a,满足a[i + 1]>=a[i],给定int key
# 找出list a 中第一个大于等于key 的元素的index,无满足要求的元素
# 则返回-1

def findindex(int_list, int_key):
    int_list = sorted(int_list)
    for i in range(len(int_list)):
        if int_list[i] == int_key:
            return i
        return -1


if __name__ == "__main__":
    lista = [12, 3, 4, 5, 8, 6]
    index = findindex(lista, 5)
    print(index)

正则表达式
正则匹配中贪婪模式与非贪婪模式的区别?match、search 函数的使用
及区别?请写出以字母或下划线开始,以数字结束的正则表达式?
○1 贪婪模式:正则会尽量多的匹配字符串,被匹配到的字符串里面可能
包含多个可以终止匹配的字符,但是会匹配到最后一个字符才会停止;非贪
婪模式:正则会保证符合规则的情况下尽量少匹配字符,不会出现匹配到的
字符中包含可以终止匹配的字符的情况
○2 match 是从字符串的第一个字符开始依次往后匹配,中途若出现不匹
配的情况则立即终止匹配,返回寄过为空,匹配到第一个满足要求的字符串
也停止匹配并返回匹配到的字符串;search 也是有第一个字符开始,若第一
个字符不匹配则从下一个字符开始匹配(即可以从中间开始匹配),知道匹
配到第一个符合条件字符串,或者匹配到最后一个字符终止匹配
○3 r’^[A-Za-z]|[_]\.*\d$’

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值