吉首大学21级python暨大数据应用开发语言实验一PTA习题集解答

当当当……程序填空部分出来辣~

最后检查的时候有些地方有点错误,有时间了再改10-9

修改部分:

下面对以往参考博客答案有误已修正的部分进行再次声明

多选题3-2

python标识符不能由美元符号等特殊符号组成(除开下划线)

艹,这个道题的正确答案居然有A,貌似是吧java的题目照搬过来了

实际上python命名不应该有$

多选题3-4

后面查了一下,操作系统文件主要类型不包含视图

多选题3-8

LIKE字句的通配符没有*,在教材上

程序填空题

也进行了一些修改,一起来看看吧,这里修改的部分比较多

一、判断题

1.关键字可以用来作为变量名,函数名,类名等标识符。(F)

 关键字不能用于如上三种写法

2.在Python中的关系运算符可以连续使用。如:3<a<4.(T)

 记住就好,可以用到if里面

3.Python中条件表达式中不允许使用赋值运算符“=”。(T)

 一个靠谱的说法是避免像c/c++那样吧赋值写进判断条件里面不报错,于是干脆直接不允许赋值符号出现在条件表达式中

4.函数内的局部变量在函数执行结束后会自动释放而不可再访问。(T)

 是这样的

5.在python中,字符串属于不可变有序序列。(T)

 可变序列:可以对序列执行增删改操作,对象地址不发生更改。

例如:集合、列表、字典

不可变序列:没有增删改的操作。

例如:字符串、元组

结论:不可变序列在内存中是不会改变的,如果对不可变序列做出改变,会将该序列存储在新的地址空间中,而原来的序列因为垃圾回收机制,会被回收。可变序列发生改变时,是不会改变地址的,而是改变内存中的值,或者是扩展内存空间。

参考链接:

Python之可变序列和不可变序列

可变序列和不可变序列——python小练

6.在GBK和CP936编码中一个汉字需要2个字节;在UTF-8编码中一个汉字需要占用3个字节。(T)

 编码的历史

参考链接

根据参考链接可以知道UTF-8对于1-3字节表示的“字符”有不同的规则

而汉字满足的是2字节的规则

而UTF-8可以看做改良的(有前置标识信息的)Unicode字符集

在标识信息下只有三个字符组合才能表达一个汉字(两字节-16位)

不过文中描述还是比较模糊,真实性有待考证

7.Python 支持单字符类型,一个字符在 Python 中作为字符类型数据使用。(F)

 .Python 没有单字符类型,一个字母也当做字符串处理

8.在字符串前加字母r或R,表示原始字符串,其中的所有字符都表示原始的含义,而不会进行任何转义。(T)

 在字符串前添加r是的字符串中的转义符号失效

9.Python可以利用字符串方法replace()对字符串对象进行原地修改。(F)

 replace()方法对字符串进行处理,返回处理后的字符串,但是不改变原来的字符串

10.已知x为非空字符串,那么表达式 ''.join(x.split()) == x 的值一定为True。(F)

11.已知x为非空字符串,那么表达式 ','.join(x.split(',')) == x 的值一定为True。(T)

x="123 4 56"
print(''.join(x.split())==x )

#结果为False
x="123 4 56"
print(','.join(x.split(','))==x )

#结果为True

 split()

 join()

 split()按函数中目标符号(默认为空格、回车、制表符),对x进行分割,返回分割后元素组成的列表

join()函数按左边的符号参数对列表进行整合,返回一个字符串

所以第二种得到原字符串,永真

12.已知x=7和y=8,执行语句 x, y = y, x 后x的值是7。(F)

 简单的python交换语句

13.从python语言的角度来说,如果计算机的硬件允许,python能处理的整数没有最大值限制,浮点数有最大值限制。(T)

 一种可靠的说法:

Python浮点数的上限由您的操作系统和硬件平台决定,整数受可用内存的限制
浮点数超过上限表示为inf

print(9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999.99999999999999999)

#输出为inf

14.运算符+不仅可以实现数值的相加、字符串连接,还可以实现列表、元组的合并和集合的并集运算。(F)

a={'123','456'}
b={'789'}
c=a+b
print(c)

#出现报错

 集合的并集运算需要使用   ‘|’符号,不能直接使用‘+’符号

15.Python使用缩进来体现代码之间的逻辑关系。(T)

 使用缩进来取消花括号以此来代替逻辑性

二、单选题

1.以下最不合适作为Python语言用户标识符的是( )。

A.print   

print=3
print("123")

#输入以上代码会报错
#原因是print优先被认为是作为变量被调用

 max其实和print这类函数一样,但是max与print相比的频率更低,所以print最不适合作为标识符

2.Python语言中,运算对象最好都为整数的运算符是( )。

 A.*

对于乘法,我觉得两边数据要求都是整数有点不符合实际

B./

对于除法,可能是因为版本的问题,这里有一句话:

注意:Python2.x 里,整数除整数,只能得出整数。如果要得到小数部分,把其中一个数改成浮点数即可。

链接:运算符操作介绍 

现在3.0版本整数除以整数可能是小数

但是由于2.0+版本整数相除和c一样只能为整数,所以为了精确计算不建议两边写成整数 

链接:整除 

C.//

经过实验,其是3.0版本出现的产物,支持浮点数作为运算数,不必要都为整数

D.%

模操作对于极小的浮点数取模会丢失精度,如:

print(4%0.1)

#输出结果为0.09999999999999978

#运行软件为pycharm

所以建议两边都为整数 

3._______号表示同一行的后面部分是Python程序的注释。

D.#

你看它颜色都不一样,不选它选谁      ヾ(•ω•`)o 

4.以下哪句打印出smith\exam1\test.txt?

B.print("smith\\exam1\\test.txt")

在字符串中打印出'\'需要使用一个转义字符‘\’或者在字符串前加一个r

5.下面哪些不属于类型转换函数( )。

D.abs()

没什么好说的 

6.下列关于Python变量名的定义,下列选项不正确的是 ____ 。

B.变量名中可以有空格或标点符号

 不能有空格或标点符号

7.已知s1和s2两个字符串,

s1='abc' 
s2='123' 

欲得到新的字符串对象:'abc123',不可以使用如下哪种方式?( )

D.s1.concat(s2)

经实验,ABC皆可

concat()用于链接两个表格

8.对于字符串:str1='SDUTCSSEno1',欲获得切片:'1onESS' ,使用的方式是:

D.str1[-1:-7:-1]

可以知道,我们应该要倒着来截取字符串

经过实验,我们可以知道,对于str[start:end:step]来说

step是具有方向的,我们不应该仅仅说‘他’的步长为step,还应该加上他的方向

例如,当start>end的时候,我们应该称其为步长为负step

另外[start:end]依旧是左闭右开区间,需要注意!

9.对于字符串进行操作,如下语句执行结果为:

var1 = 'Hello World!'
print (var1[:6] + 'SDUT!')

 A.Hello SDUT!

varl[:6]为从varl开始到下标为5(左闭右开)的子字符串

+为链接字符串操作

10.下面运算符中可以支持字符串和整数进行运算的是?

C.*

字符串的乘法操作 

11.下面哪个不是字符串提供的方法?

 B.search

A.split        B.index        C.format

A字符串按指定字符切片

B返回指定字符下标

C格式化输出

12.字符串对象的capitalize()方法是用来将字符串( )。

 C.将字符串首字母变为大写

A.转换为大写字符串        str.upper()

B.转换为小写字符串        str.lower()

D.将字符串中每个单词首字母变为大写        str.title()

链接:字符串操作函数

13.字符串对象的title()方法是用来将字符串( )。

D.将字符串中每个单词首字母变为大写 

14.已知列表对象x = ['21', '2', '7', '3'],则表达式 max(x) 的值为。

 D.'7'

对字符串比较大小,返回最大的,min()同理

链接:max函数

15.Str1 ="Python is beautiful!",表达式 str1.isnumeric() 的结果是。

D.False

isnumeric()返回字符串是否是有数字组成的结果

可知str1不是由数字组成所以结果为False

链接:isnumeric()函数

三、多选题

1.关于五大部件

从传统理论来讲,计算机由 ▁▁▁▁▁ 五大功能部件构成。

C.输入设备        E.输出设备

H.运算器        A.储存器        F.控制器

2.关于标识符的命名规则,哪些语法是正确的?

A.由字母、下划线、美元符号和数字组成

答案里面有A,但是实际上python并不能用$当做标识符

B.长度不受限制

C.if、true、while等关键字不能做标识符

3.T-SQL 中用于控制程序的流程的语句有:

全部

4.在物理层面上,SQL Server 数据库由多个操作系统文件组成,其中操作系统文件主要包括哪些类型?

A.主要数据文件

B.事务日志文件

C.视图

C.事务日志文件

5.SQL Server 数据库的备份方式主要包括哪些?

全部

6.SQL SERVER 中,完整性约束可以分为哪几种方式?

A.列级约束

B.表级约束

7.SQL SERVER 中创建表的方式有哪几种?

A.通过 SQL 命令创建数据表

D.利用 sql server management studio 创建数据

8.LIKE 短语中可以包含哪些通配符?

_         %        *

没有*号,应该是版本问题,有些地方可以使用,但是翻看教材发现没有

9.ORDER BY子句中关键字包含?

A.ASC 表示按列值从大到小的降序排列

C.DESC 表示按列值从大到小的降序排列

10.对于下面的存储过程:

CREATE PROCEDURE MYP1 
@P DATETIME 
AS 
SELECT StudentName,EntranceTime FROM Student 
WHERE EntranceTime=@P

如果在Student 表中查找报道时间为2009-09-10的学生,正确调用存储过程的是:

B.EXEC MYP1 @P= '2009-09-10'

C.EXEC MYP1  '2009-09-10'

11.事务具有哪些属性?

全部

12.身份验证的内容包括哪些?

A.用户的帐号是否有效

B.能否访问系统

C.能访问系统的哪些数据库

13.关于输入设备

下列外部设备中,▁▁▁▁▁ 为输入设备。

B.键盘

C.鼠标

E.扫描仪

H话筒.

I.摄像头

14.关于输出设备

下列外部设备中,▁▁▁▁▁ 为输出设备。

A.显示器

D.打印机

F.音箱

G.耳机

J.绘图仪

15.函数的构成

C 函数是由 ▁▁▁▁▁ 构成的。

D.函数首部

G.函数体

四、填空题

1.join()函数连接字符串(高教社,《Python编程基础及应用》习题10-1)
请写出下述程序的执行结果:

s = [str(x) for x in range(2,35,7)]
print(",".join(s))

 解析:

该语句为python特有的推导句,语义为返回一个从2开始步长为7,到34为止的数字数组,并同时将每一个数字转换为字符串类型存储到s列表中,

而join语句即为将列表中的元素加入空字符串‘’中并用,(逗号)隔开

答案:

2,9,16,23,30

2.格式化输出(高教社,《Python编程基础及应用》习题10-2)
请写出下述程序的执行结果:

print("pi={pi:10.3f}".format(pi=3.1415926))
print("2^10={:,}".format(2**10))

 解析:

对于语句:

{pi:10.3f}

{}其实相当于c语言当中的占位符的功能

pi表示从参数列表(format)中选取变量名为pi的数值加入语句

如果没有变量名而且有多个{}和列表里有多个数值,那么按参数列表的顺序来对{}进行赋值

:10.3f表示见一个数值以10个宽度,保留三位小数的形式输出

对于语句:

{:,}

 我查了半天文档,居然没有找到这个冒号加逗号的使用语法,

在经过几次实验后发现:

1.该语句对整数及整数部分采取美元计数的方法用逗号划分

如:1234567表示成1,234,567

2.该语句对小数的小数部分无效

答案:

pi=     3.142
2^10=1,024

3.Python 表达式 3**2**3 的值为

解析:

语句在同等级的情况下从左到右

则答案为3的平方的三次方

答案:

6561

4.下面程序执行后,输出的结果是:

a=34
b=23
print("{first}-{second}={0}".format(34-23,first=a,second=b))

 参考链接:python的输入输出

翻看{}占位符的用法就好了

 答案:

34-23=11

5.下面程序执行的结果是:

a=34
b=23
print("{1}-{2}={0}".format(34-23,a,b))

 答案:

34-23=11

6.print("{:>08s}".format(bin(31)[2:]))的输出是

解析:

对于语句:

bin(31)[2:]

意为吧10进制的31翻译为二进制,并且截取第二位到最后的字符串作为结果

 对于语句:

{:>08s}

 <^>分别为左对齐、右对齐、居中对齐

0表示空格用0填充

8代表所占长度

s表示数据为str字符串类型

答案:

00011111

7.print("programming".find("r")) 输出结果是: 

print("programming".find("r",2)) 输出结果是:

8.print("programming".find("x"))的输出是

解析:

find()函数有三个参数,按顺序来分别是

1.目标字符

2.第几个,默认为1

3.结束下标,默认为len(str)

返回目标下标,没有找到返回-1

答案:

1
4

-1

9.print("a123".isdigit())的输出是

10.print("aABC".isalpha())的输出是

解析:

判断字符串是否全为数字和全为字母,返回值逻辑型 

答案:

False
True

11.print("   xyz  ".strip(),"   xyz  ".rstrip(), "   xyz  ".lstrip()) 的输出是

解析:

三个strip函数是用来去除空格

 按顺序,分别是

1.去除两边空格(中间不管)

2.去除右空格

3.去除左空格

问了一下老师答案直接用空格 就行了

答案:

xyz    xyz xyz

由于每个输出项额外用一个空格隔开,看起来是会多一个空格的样子 

12.Python 表达式 0 and 1 or not 2<True 的值为

 解析:

优先级:非>且>或

答案:

True

13.Python 语句 print(hex(16), bin(10))的输出结果是

答案:

0x10 0b1010

14.Python输出 print("hello" 'world')的结果是

 太水辣!!!

答案:

helloworld

15.下述代码从键盘读入了以逗号分隔的两个整数a,b:

a,b = eval(input())
print(a,b,type(a),type(b))

当操作者输入 4,5 时,程序的执行结果如下:

4,5 
4 5 <class 'int'> <class 'int'>

注意:4,5中间的逗号必须是英文逗号。

不写了,又臭又长,没有什么要奇特的语法,注意审题就行了

四、程序填空题

都没人人提醒我更新这个,鼠鼠我要生气了QAQ

正则表达式戳这里!!!

5-1择数

n=0
#for i in range( 100,999 ):
for i in range( 100,1000 ):
  gw= i%10
  sw= i//10%10
  if    (gw+sw)%2==1:
      n=n+1
print(n)

5-2 正则表达式-匹配多个单词

p = re.compile(r'[Rr]ub[ye]')
for line in p.findall(contents):
    print(line)

 5-3正则表达式-取反练习

#p = re.compile(r'[^a-z\n]+ ')  加号后面没有空格,我的锅
p = re.compile(r'[^a-z\n]+')
for line in p.findall(contents):
    print(line)

5-4 正则表达式--规律

p = re.compile(r'[a-f0-3]+')#复制太急了,格式没调好
for line in p.findall(contents):
    print(line)

#解释  吧字符串分成两边 左边是纯小写字母  右边是纯数字  

 5-5循环输入

s=input(  )
while s!='Y'  and  s!='y'    :
       print(s.title(),end="  ")   
s=input( )    

 5-6反转

def   change(s):
          return  s[::-1]  
n=input( )
print(change(n) )

 5-7三个数排序

a,b,c  = eval(input())
if a<=b:
    if b<=c:
        print(f"{a},{b},{c}")

    else:
        if a<=c:
            print(f"{a},{c},{b}")
        else:
            print(f"{c},{a},{b}")

else:
    if a<=c:
        print(f"{b},{a},{c}")
    else:
        if b<=c:
            print(f"{b},{c},{a}")
        else:
            print(f"{c},{b},{a}")

5-8 range函数练习 

print(list(range(4)))    期望输出:[0, 1, 2, 3]
print(list(range(7,11)))       期望输出:[7, 8, 9, 10]
print(list(range(1,16,3)))     期望输出:[1, 4, 7, 10, 13]
print(list(range(15,2,-4)))     期望输出:[15, 11, 7, 3]
print(list(range(-20,20,6)))    期望输出:[-20, -14, -8, -2, 4, 10, 16]
print(list(range(-1,-22,-7)))   期望输出:[-1, -8, -15]

五、编程题

又到了大家喜闻乐见的编程环节了[狗头]

7-1转换函数的使用

输入一个整数和进制,转换成十进制输出

输入格式:

在一行输入整数和进制

输出格式:

在一行十进制输出结果

输入样例:

在这里给出一组输入。例如:

45,8

输出样例:

在这里给出相应的输出。例如:

37

代码:

a,b=map(int,input().split(','))

print(int(str(a),b))

解析:

将以逗号分隔的字符串数据用split()函数根据逗号分隔返回一个列表

再使用map将列表的字符串数据转化为数值赋值给a和b

最后由于int语法:

int(str,int)

功能是将int进制的str字符串转换为十进制的数值

7-2求两个整数的和与平均值

本题目要求读入2个整数A和B,然后输出它们的和。

输入格式:

程序运行后输入任意两个整数m和n

输出格式:

求出两个数的和以及平均数的值是多少?sum=m+n avg=(m+n)/2

输入样例:

在这里给出一组输入。例如:

44
24

输出样例:

在这里给出相应的输出。例如:

68
34

 代码:

x=eval(input())
y=eval(input())
t=x+y
print(t)
print("{:.0f}".format(t/2))

解析:

使用eval函数将接收到的数值智能地转换到特定类型

然后使用占位符对浮点数进行保留小数位输出(会四舍五入)

7-3交换两个整数

输入两个整数,交换位置后输出。

输入格式:

在一行中用空格分隔输入两个整数a,b。

输出格式:

交换a,b的值后,按“a=? b=?”的格式输出

输入样例:

在这里给出一组输入。例如:

3 5

输出样例:

在这里给出相应的输出。例如:

a=5 b=3

代码: 

a,b=map(int,input().split())

print("a=%d b=%d"%(b,a))

解析:

这是一种占位符的用法----使用%+数据类型字母进行占位,交换两个字母的输出顺序

或者使用a,b=b,a进行交换顺序输出也行

7-4计算两个整数的差

计算两个整数的差。

输入格式:

在一行中用空格分隔输入两个整数a,b。

输出格式:

计算a-b的结果,按“s=?”的格式输出。

输入样例:

在这里给出一组输入。例如:

3 5

输出样例:

在这里给出相应的输出。例如:

s=-2

代码:

a,b=map(int,input().split())

print("s=%d"%(a-b))

解析: 

 和之前的题目一样,转化为数值,进行占位输出(可以同时运算!!!)

7-5 从键盘输入两个数,求他们的和并输出

读入2个整数A和B,然后输出它们的和。

输入格式:

在第一行中给出一个被加数A;

在第二行中给出一个加数B。

输出格式:

在一行中输出A与B的和。

输入样例:

在这里给出一组输入。例如:

1
2

输出样例:

在这里给出相应的输出。例如:

3

代码:

a=int(input(),10)
b=int(input(),10)
print(a+b)

解析: 

 由于这里的输入时分开两行的,所以考虑用两个input()接受两个数据

使用int函数将字符串转化为十进制数值

然后运算加减打印输出

7-6分苹果

现有n个苹果,均分给5位同学,剩下的苹果交还老师。请编写程序,解决下述问题:

  1. 每位同学能分得几个苹果?

  2. 一共分出去多少个苹果?

  3. 交还老师的苹果有几个?

输入样例:

输入苹果总数n。例如:

17

输出样例:

每人分得3个苹果.
一共分出去15个苹果.
交还老师2个苹果.

代码: 


a=int(input(),10)

print("每人分得{}个苹果.".format(a//5))
print("一共分出去{}个苹果.".format(a-a%5))
print("交还老师{}个苹果.".format(a%5))

 解析:

简单的整除操作和取余操作,会使用占位符即可

占位符种类:

%d占位符

{}占位符(使用format格式化输出)

7-7火车相遇

甲列火车长a米,速度为m米/秒;乙列火车长b米,速度为n米/秒。两列火车相向而行,从车头相遇开始至两车车尾分离,共需要多少时间?请编程求解,输出结果保留两位小数,以秒为单位。

下图是a = 150, b = 200, m = 15, n = 12时的两车交汇过程示意图。

输入格式:

a

b

m

n

输出格式:

两车交汇时长为x.yz秒.

其中,x.yz为保留两位小数的浮点数。

输入样例:

150.34
200.21
15.1
12

输出样例:

两车交汇时长为12.94秒.

 代码:


a=float(input())
b=float(input())
m=float(input())
n=float(input())
ans=(a+b)/(m+n)

print("两车交汇时长为%.2f秒."%ans)

解析: 

看明白题目,明确物理量,

由题分析可知,此题是求相遇问题

获得总路程除以相对速度就是时间

实际上是简单的物理题

7-8英文字母

在计算机内部,英文字母依ASCII码分别由连续的整数来表示。比如,大写的英文字母A的ASCII码值为65,B的码值为66,然后依次递增,Z的码值为90。

请编程计算:

  1. 从键盘读取大写字母Q(代号,其值由具体输入确定),请问Q所代表的大写字母是字母表中的第几个字母(从1开始计数,即A为第1个字母)?

  2. 从键盘读取整数N,求字母表中的第N个字母(从1开始计数)是什么?

输入格式:

Q
N

说明:是一个字符的大写字母;N的取值范围为1~26。

输出格式:

请参考输出样例。

输入样例:

B
3

输出样例:

B是字母表中第2个字母.
字母表中第3个字母是C.

提示:使用ord()及chr()函数来完成。

代码:

a=input()

b=int(input())
#c=int(96,10)
print("{}是字母表中第{}个字母.".format(a,ord(a)-64))
#print(ord(a)-64)
print("字母表中第{}个字母是{}.".format(b,chr(64+b)))
#print(chr(96+b))chr(96+b)

解析:

ord()函数--将字符串翻译为对应ASCII值(int)

chr()函数将对应ASCII值转换为对应字符串

实际上是一道函数应用题

广告

拼尽全力还是不会?参考观方指定用书:

《c语言从入门到入土》         -999        ¥

《python从初学到跑路》        999        ¥

《数据库从建库到删库》         0            ¥


作者每天分享一篇关于C/C++/Python的劝退文章,学习编程保证迷路!!!

  • 6
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

JSU_曾是此间年少

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

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

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

打赏作者

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

抵扣说明:

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

余额充值