Python简答题编程题

简答题

1.列表和元组之间的区别是什么?字典和列表的主要区别是什么?

  • 字符串:不可变、有序序列;可以索引切片;引号界定;

    ​ 单一字符的有序组合。例如,str=“python”

  • 列表:可变、有序序列;可以索引切片;[ ]界定;

    ​ 长度和内容都是可变的,可自由对列表中数据项进行增加、删除或替换。

    ​ 没有长度限制,元素类型可以不同,使用非常灵活。例如ls = [425, “BIT”, [10, “CS”], 425]

  • 元组:不可变、有序序列;可以索引切片;( )界定;

    ​ 包含0个或多个数据项的不可变序列类型。元组生成后是固定的,其中任何数据项不能替换或删除。

    ​ 例如,color = (“red”, 0x001100, “blue”, creature)

  • 集合:可变、无序;不可以索引切片;{ }界定;

    ​ 包含0个或多个数据项的无序组合。例如S = {425, “BIT”, (10, “CS”), 424}

  • 字典:可变、无序映射;不可以索引切片;{ }界定;

    ​ 包含0个或多个键值对的集合。

    ​ 字典是一个键值对的集合,该集合以键为索引,一个键信息只对应一个值信息;

    ​ key不重复,不可变; value可变

    ​ 例如,shoudu={“中国”:“北京”, “美国”:“华盛顿”, “法国”:“巴黎”}

2.简述list和tuple的区别?

相同点:都是有序集合

异同点:1.list是可变数据类型,tuple是不可变数据类型

​ 2.定义方式:list[] tuple()

​ 3.list有append(),insert(),extend();pop(),remove(),clear()等增删方法;tuple没有

3.什么是全局作用域?什么是局部作用域?

- 作用域——变量起作用的范围

- 全局作用域——变量在整个程序中都有效。

- 局部作用域——变量只在代码块中有效,比如函数内部。

4.简述定义函数的规则?

def 函数名称([参数]):

[函数注释]

[函数体]#创建语法

若有返回值,则用return返回;若无返回值,无需return,但是默认依然返回值:None

5.简述如何使用xpath进行爬虫?

  1. 首先导入需要使用模块和库(lxml和requests
  2. 分析目标网站,拿到正确的url网址,发送网络请求
  3. 接受网络请求返回的数据,使用xpath语法解析网页内容
  4. 数据处理分析

6.请给出break和continue的定义和区别。

- break:退出整个循环,执行循环体外的语句;

是结束整个循环过程,不再判断执行循环的条件是否成立

- continue:退出本次循环,进入下一轮循环;

只结束本次循环,而不终止整个循环的执行

7.声明变量需要注意事项有哪些。

以字母、数字、下划线组成,不能以数字开头 ,大小写敏感,不能使用系统关键字

8. __new__和__init__的区别?
①__new__是一个静态方法,而__init__是一个实例方法.
②创建一个新实例时调用__new__,初始化一个实例时用__init__.
③__new__方法会返回一个创建的实例,而__init__什么都不返回.
④只有在__new__返回一个cls的实例时,后面的__init__才能被调用.

9.read,readline和readlines之间的区别?**

  • read 读取整个文件
  • readline 每次读取一行内容,使用生成器方法
  • readlines 一次性读取所有行内容,到一个迭代器,并按行返回形成一个列表,以供遍历

10.简单解释Python基于值的自动内存管理方式?

  • 基于值:在Python中可以为不同变量赋相同的值,这个值在内存中只有一份,多个变量指向同一个内存地址;
  • 自动内存管理功能:会自动跟踪内存中所有的值,对于没有任何变量指向的值,Python自动将其删除。

11.异常和错误有什么区别?

  • 异常是指因为程序执行过程中出错而在正常控制流以外采取的行为。

    严格来说,语法错误和逻辑错误不属于异常,但有些语法错误往往会导致异常。

    例如由于大小写拼写错误而访问不存在的对象,或者试图访问不存在的文件,等等。

  • 错误是语法或是逻辑上的。当检测到一个错误时,解释器会指出当前流已经无法继续执行下去,这个时候就会出现异常。

12.用两个元素之间有对应关系的list构造一个dict

names = ["zyh","xp"]
ages = [20, 23]
result = dict(zip(names,ages))
print(result)

编程题

1.输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。

def tongji(str):
    alpha = 0	# 统计字母
    space = 0	 # 统计空格
    digit = 0	# 统计数字
    qita = 0	# 统计其他字符
    for s in str:
        if s.isalpha():
            alpha += 1
        elif s.isspace():
            space += 1
        elif s.isdigit():
            digit += 1
        else:
            qita += 1
    print("字母:",alpha,";空格:",space,";数字:",digit,";其他:",qita)
ss = input("请输入一行字符:")
tongji(ss)
"""
    return letter, space,digit,other
ss = input("请输入字符串:")
print(call2(ss))"""

2.有四个数字:1、2、3、4,能组成多少个互不相同且无重复数字的三位数?各是多少?

count = 0
for i in range(1,5):
    for j in range(1,5):
        for k in range(1,5):
            if i != j and i != k and j != k:
                count += 1
                print(i,j,k)
print("共有%d种排列"%count)

3.猴子吃桃问题:猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。

x2=1    #第十天的剩下的桃子的个数
for day in range(9,0,-1):
    x1=(x2+1)*2 #第九天桃子的个数
    x2=x1
print("第一天个数%d"%x1)

4.定义一个函数 sum_numbers能够接收一个 num的正整数参数****计算1+2+3+…+num的结果并打印,使用两种方式解答

def sum_numbers(num):
    result = 0
    for i in range(1,num+1): #不包括num+1
        result += i
    return  result #缩进一定要注意
num = input("请输入一个正整数")
print(sum_numbers(int(num)))

def sum_numbers(num):
    if num == 1: #等于号不能写错
        return num #使得num不会到0 和负数
    else:
        return num +sum_numbers(num-1)
num = input("请输入一个正整数:")
print(sum_numbers(int(num)))

def jiecheng(num):
    result=1
    for i in range(1,num+1):
        result *= i
    return result
a = input("请输入一个正整数:")
print(jiecheng(int(a)))

def jiecheng(num):
    if num == 1:
        return 1
    else:
        return num * jiecheng(num-1)
a = input("请输入一个正整数:")
print(jiecheng(int(a)))

5.相传韩信才智过人,从不直接清点自己军队的人数,只要让士兵先后以三人一排、五人一排、七人一排地变换队形,而他每次只掠一眼队伍的排尾就知道总人数了。输入3个非负整数a,b,c ,表示每种队形排尾的人数(a<3,b<5,c<7),输出总人数的最小值(或报告无解)。已知总人数不小于10,不超过100 。(要求输入数据不符合要求,需要一直输入,程序不能结束)

#判断输入的队尾人数是否符合要求
#如果复合要求 duiwie=False 会跳出循环;否则会一直循环 直到输入正确的符合要求的数字
duiwei = True
while duiwei:
    a,b,c = input("请输入三个数,逗号分隔:").split(",") #这句不要忘记
    if int(a)<3 and int(b)<5 and int(c)<7:
        duiwei = False
#跳出循环
num = 10#总人数不小于10 不超过100
flag = True
while num<=100 and flag:
    if (num%3)==int(a) and (num%5)==int(b) and (num%7)==int(c):
        print("最少人数为:%d"%num)#满足要求之后输出人数 
        flag = False
        break #跳出循环
    num += 1
if flag:
    print("无解")

其他

1、请写出机器语言、汇编语言、高级语言的定义,并举例说明上述三种语言是如何执行数字2和3的加法。

  • 机器语言是一种二进制语言,它直接使用二进制代码表达指令,是计算机硬件可以直接识别和执行的程序设计语言。

    例如:执行数字2和3的加法,16位计算机上的机器指令为:11010010 00111011,不同计算机结构的机器指令不同。

  • 汇编语言使用助记符与机器语言中的指令进行一一对应,在计算机发展早期帮助程序员提高编程效率。

    例如:执行数字2和3的加法,汇编语言指令为:add 2, 3, result,运算结果写入result。

  • 高级语言是接近自然语言的一种计算机程序设计语言,更容易地描述计算问题并利用计算机解决计算问题。

    例如:执行数字2和3加法的高级语言代码为:result = 2 + 3

2、请简要回答continue语句和break语句的区别,并举例说明

  • continue语句只结束本次循环,而不终止整个循环的执行。
  • break语句则是结束整个循环过程,不再判断执行循环的条件是否成立

3、请简要回答文本文件和二进制文件的定义,并举例说明常用的文本文件和二进制文件有哪些?

  • 文本文件一般由单一特定编码的字符组成,如UTF-8编码。

    例如txt格式的文本文件。

  • 二进制文件直接由比特0和比特1组成,没有统一字符编码,文件内部数据的组织格式与文件用途有关。

    例如,png图片,avi格式视频。二进制文件和文本文件最主要的区别在于是否有统一的字符编码

4、请简要说明jieba库的分词原理,并写出jieba库支持的三种分词模式的应用场景。

利用一个中文词库,将待分词的内容与分词词库进行比对,通过图结构和动态规划方法找到最大概率的词组。

jieba库支持3种分词模式:

  • 精确模式,将句子最精确地切开,适合文本分析;
  • 全模式,把句子中所有可以成词的词语都扫描出来,速度非常快;
  • 搜索引擎模式,在精确模式基础上,对长词再次切分,提高召回率,适合用于搜索引擎分词。

5、大学排名爬虫的构建需要三个重要步骤:

  • 从网络上获取网页内容;
  • 分析网页内容并提取有用数据到恰当的数据结构中;
  • 利用数据结构展示或进一步处理数据。由于大学排名是一个典型的二维数据,因此,采用二维列表存储该排名所涉及的表单数据。

6、高级语言按照计算机执行方式的不同分为静态语言和脚本语言,请写出这两种语言的不同点,并分别说明上述两种语言的执行过程。

静态语言和脚本语言是高级语言按照计算机执行方式的不同进行的分类。

静态语言是使用编译方式执行的语言,脚本语言是使用解释方式执行的语言。

静态语言编译和执行过程如下:

Python简答题编程题_第1张图片
脚本语言程序的解释和执行过程如下:
Python简答题编程题_第2张图片

7、请简要回答while循环和for循环的区别,并写出打印输出字符串"PYTHON"中的每一个字符的while循环和for循环语句。

for是确定次数的遍历循环;

while是无限循环又称条件循环,while循环一直保持循环操作直到循环条件不满足才结束。

for 和 while 的例子分别如下:

for s in "PYTHON":
    print(s, end="") #PYTHON
idx = 0
while idx < len("PYTHON"):
    idx += 1
print("循环次数:{}".format(idx))   # 输出:循环次数:6

8、请写出python对文本文件和二进制文件操作的三个通用步骤,并分别写出以文本文件方式和二进制文件方式打开一个文件‘file.txt’的语句。

python对文本文件和二进制文件采用的统一操作步骤是:打开-操作-关闭。

以文本文件方式打开如下:textfile = open(‘file.txt’,‘rt’)

以二进制文件方式打开如下:binfile = open(‘file.txt’,‘rb’)

9、请回答网络爬虫应用一般分为哪两个步骤,并写出python中这两个步骤对应的常用函数库及对应库的pip安装指令。

网络爬虫应用一般分为两个步骤:

  1. 通过网络链接获取网页内容;
  2. 对获得的网页内容进行处理。

这两个步骤分别使用不同的函数库:requests 和 beautifulsoup4。

这两个库的pip安装指令如下:

  • pip install requests 或者 pip3 install requests
    打开如下:textfile = open(‘file.txt’,‘rt’)

以二进制文件方式打开如下:binfile = open(‘file.txt’,‘rb’)

9、请回答网络爬虫应用一般分为哪两个步骤,并写出python中这两个步骤对应的常用函数库及对应库的pip安装指令。

网络爬虫应用一般分为两个步骤:

  1. 通过网络链接获取网页内容;
  2. 对获得的网页内容进行处理。

这两个步骤分别使用不同的函数库:requests 和 beautifulsoup4。

这两个库的pip安装指令如下:

  • pip install requests 或者 pip3 install requests
  • pip install beautifulsoup4 或者 pip3 install beautifulsoup4

你可能感兴趣的:(期末复习,python)