文章目录

  • 1、实现一个方法get_missing_letter()来输出一个全英字符串缺少的字母
  • 2、python变量的作用域(变量查找顺序)
  • 3、'123'转换成123(不使用内置api)
  • 4、map函数
  • 5、numpy & list
  • 6、统计一个文本中单词频数最高的10个单词
  • 7、合并两个有序列表(不可使用extend)
  • 8、描述一下Flask
  • 9、比较Django与Flask
  • 10、Django,Pyramid和Flask之间的差异

1、实现一个方法get_missing_letter()来输出一个全英字符串缺少的字母

def get_missing_letter(string):
    s1 = set(string.lower())
    s2 = set("abcdefghijklmnopqrstuvwxyz")
    letter = "".join(sorted(s2 - s1))
    return letter


print(get_missing_letter("python java c"))

LetterBox python实现 python中letter函数_开发语言


其中生成26个字母的方法有:

import string
letters = string.ascii_lowercase
print(letters)

letters = "".join(map(chr, range(ord('a'), ord('z')+1)))
print(letters)

2、python变量的作用域(变量查找顺序)

【LEGB】
L —— local函数内部作用域
E —— enclosing函数内部与内嵌函数之间
G —— global全局作用域
B —— build-in 内置作用

3、'123’转换成123(不使用内置api)

【法一】利用str函数

def convert(s):
    num = 0
    for i in s:
        for j in range(10):
            if i == str(j):
                num = num * 10 + j
    return num

【法二】利用ord函数

def convert(s):
    num = 0
    for i in s:
        num = num * 10 + ord(i) - ord('0')
    return num

【法三】利用eval函数

def convert(s):
    num = 0
    for i in s:
        t = "%s * 1" % i
        n = eval(t)
        num = num * 10 + n
    return num

【法四】利用ord和reduce

reduce() 函数是functools模块中的一个函数,其作用是对参数序列中元素进行累积,返回值是一个数值

from functools import reduce


def convert(s):
    return reduce(lambda num, v: num * 10 + ord(v) - ord('0'), s, 0)

4、map函数

map函数会根据提供的函数对指定序列做映射。其中第一个参数 function 以参数序列中的每一个元素调用 function 函数,返回包含每次 function 函数返回值的新列表。

5、numpy & list

numpy相较于list的优点 :减少内存使用、快速且方便

6、统计一个文本中单词频数最高的10个单词

【法一】

import re


def test(file_path):
    distone = {}
    with open(file_path)as f:
        for line in f:
            line = re.sub("\w+", "", line)
            lineone = line.split()
            for keyone in lineone:
                if not distone.get(keyone):
                    distone[keyone] = 1
                else:
                    distone[keyone] += 1
    num_ten = sorted(distone.items(), key=lambda x: x[1], reverse=True)[:10]
    num_ten = [x[0] for x in num_ten]
    return num_ten

【法二】

import re
from collections import Counter


def test2(file_path):
    with open(file_path)as f:
        return list(map(lambda c: c[0], Counter(re.sub("\w+", "", f.read()).split()).most_common(10)))

7、合并两个有序列表(不可使用extend)

def loop_merge_sort(l1, l2):
    tmp = []
    while len(l1) > 0 and len(l2) > 0:
        if l1[0] < l2[0]:
            tmp.append(l1[0])
            del l1[0]
        else:
            tmp.append(l2[0])
            del l2[0]
    while len(l1) > 0:
        tmp.append(l1[0])
        del l1[0]
    while len(l2) > 0:
        tmp.append(l2[0])
        del l2[0]
    return tmp


l1 = [1, 2, 6, 8]
l2 = [2, 3, 5]
print(loop_merge_sort(l1, l2))

LetterBox python实现 python中letter函数_python_02

8、描述一下Flask

Flask是基于“Werkzeug,Jinja2和良好意图”BSD许可证的Python网络微框架。Werkzeug和Jinja2是它的两个依赖项。这意味着它对外部库几乎没有依赖性。它使框架轻松,同时有一点依赖更新和更少的安全漏洞。会话基本上允许您记住从一个请求到另一个请求的信息。在一个Flask中,会话使用签名的cookie,以便用户可以查看会话内容并进行修改。如果只有密钥Flask.secret_key,则用户可以修改会话。

9、比较Django与Flask

Django和Flask将Web浏览器中键入的URL或地址映射到Python中的函数。
与Django相比,Flask要简单得多,但Flask并没有为你做很多事情意味着你需要指定细节,而Django为你做了很多事情,你不需要做太多工作。
Django由预编写的代码组成,用户需要分析这些代码,而Flask则允许用户创建自己的代码,因此,使代码更容易理解。从技术上讲,两者都同样好,都有自己的优点和缺点。

10、Django,Pyramid和Flask之间的差异

Flask是一个“微框架”,主要用于具有更简单要求的小型应用程序。在烧瓶中,您必须使用外部库。Flask已准备好使用。
Pyramid适用于大型应用程序。它提供了灵活性,并允许开发人员为他们的项目使用正确的工具。开发人员可以选择数据库,URL结构,模板样式等。金字塔是可配置的。
Django也可以像Pyramid一样用于更大的应用程序。它包括一个ORM。