Matrix工作室第六届纳新AI组考核题(A卷)

一、单选题

  1. Python不支持的数据类型有(A)
    A、char
    B、int
    C、float
    D、list

python 中的标准数据类型:
在这里插入图片描述
其中数字类型有:
在这里插入图片描述
注意:
string 不是 char!!!
可变数据类型:列表list[ ]、字典dict{ }
不可变数据类型:整型int、字符串str’ '、元组tuple()

  1. 下面哪个是Python中的不变的数据结构(C)
    A、set
    B、list
    C、tuple
    D、dict

Python标准的内置数据类型有:
Number(整数型 int , 浮点数型 float, 布尔型 bool , 复数 complex)
String List Tuple Set Dictionary


Python可变数据类型:可改变变量的值,且不会新建对象
List、Dictionary、Set
Python不可变数据类型:不允许变量的值发生改变,发生改变时会新建对象
Tuple、String、Number

  1. 下面哪个不是Python合法的标识符(B)
    A、int32
    B、40XL
    C、self
    D、name

python中的标识符:
1)第一个字符必须是字母表中字母或下划线 _ 。
2)标识符的其他的部分由字母、数字和下划线组成。
3)标识符对大小写敏感。
4)不可以是python中的关键字,如False、True、None、class等。
注意:self不是python中的关键字。类中参数self也可以用其他名称命名,但是为了规范和便于读者理解,推荐使用self。

  1. 下列代码输出为:(B)
str1 = "Hello,Python";
str2 = "Python";
print(str1.index(str2));

A、5
B、6
C、7
D、8

语法

index()方法语法:

str.index(str, beg=0, end=len(string))

参数

- str -- 指定检索的字符串
- beg -- 开始索引,默认为0。
- end -- 结束索引,默认为字符串的长度。
从Hello开始数到p截止,从下标0开始数
  1. 以下程序输出为:(A)
def w1():
   print('正在装饰')
   def inner():
        print('正在验证权限')
 
   return inner()
 
w1()

A、正在装饰 正在验证权限
B、正在装饰
C、正在验证权限
D、运行错误

如果外层函数返回的是一个函数名的话,运行结果应该是:正在装饰
如果外层函数返回的是函数调用的话,运行结果是:正在装饰 正在验证权限
  1. 以下程序输出为:(A)
info = {'name':'班长', 'id':100, 'sex':'f', 'address':'北京'}
age = info.get('age')
print(age)
age=info.get('age',18)
print(age)

A、None 18
B、None None
C、编译错误
D、运行错误

本题考查的是字典的 get 方法
dict.get(key, value=None)
当value的值存在时返回其本身,当key的值不存在时返回None(即默认参数)。

  1. 在python中,使用open方法打开文件,语法如下:open(文件名,访问模式),如果以二进制格式打开一个文件用于追加,则访问模式为(C)
    A、rb
    B、wb
    C、ab
    D、a

b 二进制模式
r 只读,指针将会放在文件的开头
rb 二进制只读,指针将会放在文件的开头
r+ 读写,指针将会放在文件的开头
rb+ 二进制读写,指针将会放在文件的开头
w 写入, 如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件
wb 二进制写入,如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等
w+ 读写,如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+ 二进制读写,如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等
a 追加,如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入
ab 二进制追加,如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入
a+ 读写,如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 二进制读写,如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

  1. 下列代码输出为(A)
str = "Hello,Python";
 suffix = "Python";
 print (str.endswith(suffix,2));

A、True
B、False
C、语法错误
D、F

str.endswith(suffix[, start[, end]]) 用于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回True,否则返回False。
可选参数"start"与"end"为检索字符串的开始与结束位置。

  1. Python调用(A)函数可实现对文件内容的读取
    A、read()
    B、readline()
    C、readlines()
    D、readclose()

1.read([size])方法从文件当前位置起读取size个字节,若无参数size,则表示读取至文件结束为止,它范围为字符串对象。
2.readline()方法每次读出一行内容,所以,读取时占用内存小,比较适合大文件,该方法返回一个字符串对象。
3.readlines()方法读取整个文件所有行,保存在一个列表(list)变量中,每行作为一个元素,但读取大文件会比较占内存。

  1. 下列哪个语句在Python中是非法的(B)
    A、x = y = z = 1
    B、x = (y = z + 1)
    C、x, y = y, x
    D、x += y

y = z + 1 的结果没有返回值,就无法赋值到 x

  1. 有如下函数定义,执行结果正确的是(A)
def dec(f):
    n = 3
    def wrapper(*args,**kw):
        return f(*args,**kw) * n
    return wrapper

@dec
def foo(n):
    return n * 2

A、foo(2) == 12
B、foo(3) == 12
C、foo(2) == 6
D、foo(3) == 6

@dec 装饰器,先执行dec(), 并将 @dec 下面的 函数 作为dec()的参数。 (装饰器的作用:为已经存在的对象添加额外的功能)
foo(n) = n * 2 * 3

  1. 已知print_func.py的代码如下:
print('Hello World!')
print('__name__ value: ', __name__)
 
def main():
   print('This message is from main function')
 
if __name__ == '__main__':
   main()

print_module.py的代码如下:

import print_func
print("Done!")

执行结果为(A)
A、Hello World! __name__ value: print_func Done!
B、Hello World! __name__ value: print_module Done!
C、Hello World! __name__ value: __main__ Done!
D、Hello World! __name__ value: Done!

自己运行自己的程序,__name__ 即为__main__
当程序当做脚本被别人调用运行时,其__name__ 为自己的模块名称
这里的print_func即被导入到print_module中当做脚本被运行时,则print_func的__name__即变为其自身的模块名。

  1. 下列代码运行结果是(C)
a = map(lambda x: x**3, [1, 2, 3])
list(a)

A、[1, 6, 9]
B、[1, 12, 27]
C、[1, 8, 27]
D、(1, 6, 9)

map()接收两个参数,一个是功能函数f,一个list,并将f依次作用在list的每个元素上,并返回一个新的list,a**b是求a的b次方的意思

  1. 下列哪种类型是Python的映射类型?
    A、str
    B、list
    C、tuple
    D、dict

字典是 Python 语言中唯一的映射类型。

  1. 以下声明错误的是:(D)
    A、dic = {}
    B、dic = {100:200}
    C、dic = {(1,2,3):‘test’}
    D、dic = {[1,2,3]:‘test’}

字典的键值必须是不可变类型,如数字,字符串,元组,而列表是可变类型。

二、不定项选择题

  1. 以下python代码执行后:(BD)
foo = [1,2]
foo1 = foo
foo.append(3)

A、foo 值为[1,2]
B、foo 值为[1,2,3]
C、foo1 值为[1,2]
D、foo1 值为[1,2,3]

foo1 = foo为浅表复制,也称为浅拷贝,只是将foo1和foo指向相同存储地址。
在foo中追加3后,二者都改变。
如果不想改变foo1,我们可使用deepcooy进行深拷贝,复制出一份foo表在新的内存中存储,并由foo1指向该地址,此时再对foo进行操作,foo1不会改变。

  1. 若 a = (1, 2, 3),下列哪些操作是合法的(ABD)
    A、a[1:-1]
    B、a*3
    C、a[2] = 4
    D、list(a)

a[1:-1] ---->(2,)
a*3---->(1,2,3,1,2,3,1,2,3)
a是元组不可改变
list(a)----->[1,2,3]数组和列表可以相互转换

  1. 以下程序要求用户输入二进制数字0/1并显示之,请指出程序中代码第几行存在错误:(AC)
bit = int(input("Enter a binary digit:"))
if bit = 0 or 1:
    print("your input is" ,bit)
else
    print("your input is invalid")

A、2
B、3
C、4
D、5

2:if bit == 0 or bit == 1:
4:else:

  1. 解释型语言的特性有什么(AB)
    A、非独立
    B、效率低
    C、独立
    D、效率高

解释性语言和编译性语言的定义:
计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。
翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻译的时间不同。
解释性语言的定义:
解释性语言的程序不需要编译,在运行程序的时候才翻译,每个语句都是执行的时候才翻译。这样解释性语言每执行一次就需要逐行翻译一次,效率比较低。
现代解释性语言通常把源程序编译成中间代码,然后用解释器把中间代码一条条翻译成目标机器代码,一条条执行。
编译性语言的定义:
编译性语言写的程序在被执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高。

  1. Python中函数是对象,描述正确的是(ABCD)
    A、函数可以赋值给一个变量
    B、函数可以作为元素添加到集合对象中
    C、函数可以作为参数值传递给其它函数
    D、函数可以当做函数的返回值

https://www.cnblogs.com/smallmars/p/6936871.html

三、简答题

  1. 简述Python变量命名规则。
  • 变量名只能包含字母、数字和下划线。变量名可以字母或下划线开头,但不能以数字开头,例如,可将变量命名为message_1,但不能将其命名为1_message。
  • 变量名不能包含空格,但可使用下划线来分隔其中的单词。例如,变量名greeting_message可行,但变量名greeting message会引发错误。
  • 不要将Python关键字和函数名用作变量名,即不要使用Python保留用于特殊用途的单词,如print。
  • 变量名应既简短又具有描述性。例如,name比n好,student_name比s_n好,name_length比length_of_persons_name好。
  • 慎用小写字母l和大写字母O,因给他们可能被人错看成数字1和0;

注意:应使用小写的Python变量名。在变量名中使用大写字母虽然不会导致错误,但避免使用大写字母是个不错的注意。

  1. 简述Python的深浅拷贝以及应用场景?

深浅拷贝用法来自copy模块。

导入模块:import copy

浅拷贝:copy.copy

深拷贝:copy.deepcopy

对于 数字 和 字符串 而言,赋值、浅拷贝和深拷贝无意义,因为其永远指向同一个内存地址。

浅拷贝指仅仅拷贝数据集合的第一层数据,深拷贝指拷贝数据集合的所有层。所以对于只有一层的数据集合来说深浅拷贝的意义是一样的,比如字符串,数字,还有仅仅一层的字典、列表、元祖等。

深拷贝的时候python将所有数据在内存中新建了一份,所以如果你修改新的模版的时候老模版不会变。

四、编程题

  1. 请编写一个 Python 程序,输出9*9乘法表,代码行数越少越好。
print('\n'.join('   '.join(['%s * %s = %-2s' % (y,x,x*y) for y in range(1,x+1)]) for x in range(1,10)))
  1. 请编写一个 Python 程序,计算一个文件中的大写字母数量。
with open(file_name, 'r') as f:
    count = 0 
    for i in f.read():
        if i.isupper():
            count += 1
    print('大写字母数量为%d'%count)
  1. 实现用户输入用户名和密码,当用户名为 coco 或 alex 且 密码为 123456 时,显示登陆成功,否则登陆失败,失败时允许重复输入三次
count = 0

while count < 3:
    username = input("Please enter your username: ")
    password = input("Please enter your password: ")
    if username == "seven" and password == "123":
        print("%s login successful." %username)
        break
    elif username == "alex" and password == "123":
        print("%s login successful." %username)
        break
    else:
        print("login failed.")
    count += 1

if count == 3:
    print("the max input is 3 times. ")
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大风车滴呀滴溜溜地转

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值