admin 管理员组

文章数量: 1087139


2024年1月10日发(作者:resolve的近义词)

Python基础教程

习题(含答案)

第一章

一、判断题

1、Python是一种跨平台、开源、免费的高级动态编程语言。(对)

2、Python 3.x完全兼容Python 2.x。(错)

3、在Windows平台上编写的Python程序无法在Unix平台运行。(错)

4、不可以在同一台计算机上安装多个Python版本。(错)

5、pip命令也支持扩展名为.whl的文件直接安装Python扩展库。(对)

二、填空题

1、Python安装扩展库常用的是_______工具。(pip)

2、在IDLE交互模式中浏览上一条语句的快捷键是__________。(Alt+P)

3、Python程序文件扩展名主要有__________和________两种,其中后者常用于GUI程序。(py、pyw)

4、Python源代码程序编译后的文件扩展名为_________。(pyc)

5、使用pip工具升级科学计算扩展库Numpy的完整命令是______________。(pip install

--upgrade Numpy)

6、使用pip工具安装科学计算扩展库Numpy的完整命令是___________。(pip install

Numpy)

7、使用pip工具查看当前已安装的Python扩展库的完整命令是__________。(pip list)

8、现有一python文件为“”,ico文件为“”,两者均在同一目录下,现要将打包发布在此目录下,所发布的文件图标采用,需要使用的命令是_____________。(pyinstaller –I –F )

第二章

一、判断题

1、已知 x = 3,那么赋值语句 x = 'abcedfg' 是无法正常执行的。(错)

2、Python变量使用前必须先声明,并且一旦声明就不能再当前作用域内改变其类型。(错)

3、Python采用的是基于值得自动内存管理方式。(对)

4、Python不允许使用关键字作为变量名,允许使用内置函数名作为变量名,但这会改变函数名的含义。(对)

5、在Python中可以使用if作为变量名。(错)

6、在Python 3.x中可以使用中文作为变量名。(对)

7、Python变量名必须以字母或下划线开头,并且区分字母大小写。(对)

8、加法运算符可以用来连接字符串并生成新字符串。(对)

9、3+4j不是合法的Python表达式。(错)

10、0o12f是合法的八进制数字。(错)

11、不管输入什么,Python 3.x中input()函数的返回值总是字符串。(对)

12、在Python中0xad是合法的十六进制数字表示形式。(对)

13、Python使用缩进来体现代码之间的逻辑关系。(对)

14、Python代码的注释只有一种方式,那就是使用#符号。(错)

15、放在一对三引号之间的任何内容将被认为是注释。(错)

16、为了让代码更加紧凑,编写Python程序时应尽量避免加入空格和空行。(错)

17、Python变量名区分大小写,所以student和Student不是同一个变量。(对)

18、在Python 3.x中,使用内置函数input()接收用户输入时,不论用户输入的什么格式,一律按字符串进行返回。(对)

二、填空题

1、布尔类型的值包括________和________。(True、False)

2、Python的浮点数占________字节。(8)

3、00001100>>2的结果是________。(00000011或3)

4、若a=20,那么bin(a)的值为________。(0b10100)

5、a=60;b=13;c=13,a>b and bb or b

6、3.14E5表示的是________。(314000.0)

7、查看变量类型的Python内置函数是______________。(type())

8、查看变量内存地址的Python内置函数是_____________。(id())

9、以3为实部4为虚部,Python复数的表达形式为_________或________。(3+4j、3+4J)

10、Python运算符中用来计算整商的是_________。(//)

11、语句x = 3==3, 5执行结束后,变量x的值为_____________。((True,

5))

12、已知 x = 3,并且id(x)的返回值为 496103280,那么执行语句 x += 6 之后,表达式 id(x) == 496103280 的值为___________。(False)

13、已知 x = 3,那么执行语句 x *= 6 之后,x的值为________。(18)

14、已知x=3和y=5,执行语句 x, y = y, x 后x的值是________。(5)

15、表达式 0 or 5的值为_________。(5)

16、表达式 3 and 5的值为__________。(5)

三、程序练习

1.用户通过键盘输入两个直角边的长度a和b,需要计算斜边c的长度,请用代码实现此功能。

a=int(input("请输入直角a边的值:"))

b=int(input("请输入直角b边的值:"))

c=(a**2+b**2)**(1/2)

#就本题而言,使用数学模块的sqrt()求平方根是比较好的写法

print("斜边长度是",c)

2.编写一个程序,判定用户输入的两个数a和b,如果用户输入的第一个数大,则两数互换,如果相等或第一个数小,那原样输出。

a=int(input("请输入数a:"))

b=int(input("请输入数b:"))

if a>b:

a,b=b,a

print("用户输入的数按小到大排序结果是:",a,b)

elif a==b:

print("用户输入的两个数相同,输入的数字是:",a)

else:

print("用户输入的数按小到大排序结果是:",a,b)

#本题不考虑用户需要的不是数字情况,在读者学完异常处理后,建议回头改写此题,实现异常处理。

第三章

一、判断题

1、在Python语言中,循环语句while的判断条件为“1”是永真条件。(对)

2、if...else语句的嵌套完全可以代替if...elif语句。(对)

3、break语句用在循环语句中,可以跳出二重循环结构。(错)

4、通过break语句跳出循环结构后,循环控制变量的值一定大于其设定的终点值。(错)

5、在循环语句中,如果没有子句else,也能同样完成程序的功能。(对)

6、在条件表达式中不允许使用赋值运算符“=”,会提示语法错误。(对)

7、Pass语句的出现是为了保持程序结构的完整性。(对)

8、Python中没有switch-case语句。(对)

9、每一个if条件表达式后都要使用冒号。(对)

10、While循环不可以和for循环嵌套使用。(错)

11、如果仅仅是用于控制循环次数,那么使用for i in range(20)和for i in

range(20, 40)的作用是等价的。(对)

12、在循环中continue语句的作用是跳出当前循环。(错)

13、在编写多层循环时,为了提高运行效率,应尽量减少内循环中不必要的计算。(对)

14、带有else子句的循环如果因为执行了break语句而退出的话,则会执行else子句中的代码。(错)

15、对于带有else子句的循环语句,如果是因为循环条件表达式不成立而自然结束循环,则执行else子句中的代码。(对)

二、填空题

1、在循环体中,可以使用__________语句跳出循环体。(break)

2、__________语句是if语句和else语句的组合。(elif)

3、在循环体中,可以使用__________语句跳过本次循环后面的代码,直接进入下一次循环。(continue)

4、Python中的__________表示空语句。(pass)

5、调试运行时,遇到死循环可以使用__________退出循环。(ctrl+c)

6、Python 3.x语句for i in range(3):print(i, end=',') 的输出结果为________。(0,1,2,)

7、对于带有else子句的for循环和while循环,当循环因循环条件不成立而自然结束时________(会?不会?)执行else中的代码。(会)

8、在循环语句中,__________语句的作用是提前结束本层循环。(break)

9、在循环语句中,_______语句的作用是提前进入下一次循环。(continue)

10、表达式5 if 5>6 else (6 if 3>2 else 5)的值为_________。(6)

三、程序练习

1.输入两个数x和y,如果x或y小于等于0,提示请输入正整数,求这两个数的最大公约数和最小公倍数。

【分析】

设x为被除数,y为除数,a为余数,采用欧几里得辗转相除算法来求最大公约数。x除以y得到余数a,如果a不等于0,把y赋值给x,把a赋值给y,继续x除以y得到余数a,直接a等于0为止,这时的y就是最大公约数。最小公倍数的计算方法是两数的乘积除以两数最大公约数的结果。

【操作实践】

x=eval(input("请输入一个数:"))

y=eval(input("请输入一个数:"))

t=x*y

if x

x,y=y,x

while x%y!=0:

a=x%y

x=y

y=a

print("最大公约数:",y)

print("最小公倍数:",t//y)

2.输入一个数,判断是否为质数。

【分析】

质数是除了1和它本身以外任何数都不能整除他的数,那求质数时,可以用这个数依次除比所输入的数的平方根小的数,如果不能除尽,那就是质数,否则不是质数。

【操作实践】

x=eval(input("请输入一个数:"))

i =2

while i

if x%i==0:

print(x,"不是质数")

break

i += 1

else:

print(x,"是质数")

3 输入一个年份year,判断是否为闰年。

【分析】

闰年能被4整除同时不能被100整除的数,但如果能被400整除,也是闰年。

【操作实践】

year = eval(input("输入年份:")) # 可用int()函数

if (year%4==0 and year%100 !=0) or (year%400==0):

print(year,"是闰年")

else:

print(year,"不是闰年")

第四章

一、判断题

1、Python支持使用字典的“键”作为下标来访问字典中的值。(对)

2、列表可以作为字典的“键”。(错)

3、元组可以作为字典的“键”。(对)

4、Python字典中的“键”不允许重复。(对)

5、Python字典中的“值”不允许重复。(错)

6、Python列表中所有元素必须为相同类型的数据。(错)

7、Python列表、元组、字符串都属于有序序列。(对)

8、已知A和B是两个集合,并且表达式AB的值一定为True。(错)

9、列表对象的append()方法属于原地操作,用于在列表尾部追加一个元素。(对)

10、使用Python列表的方法insert()为列表插入元素时会改变列表中插入位置之后元素的索引。(对)

11、使用del命令或者列表对象的remove()方法删除列表中元素时会影响列表中部分元素的索引。(对)

12、已知列表 x = [1, 2, 3],那么执行语句x = 3之后,变量x的地址不变。(错)

13、使用列表对象的remove()方法可以删除列表中首次出现的指定元素,如果列中不存在要删除的指定元素则抛出异常。(对)

14、元组是不可变的,不支持列表对象的inset()、remove()等方法,也不支持del命令删除其中的元素,但可以使用del命令删除整个元组对象。(对)

15、当以指定“键”为下标给字典对象赋值时,若该“键”存在则表示修改该“键”对应的“值”,若不存在则表示为字典对象添加一个新的“键-值对”。(对)

16、假设x是含有5个元素的列表,那么切片操作x[10:]是无法执行的,会抛出异常。(错)

17、只能对列表进行切片操作,不能对元组和字符串进行切片操作。(错)

18、只能通过切片访问列表中的元素,不能使用切片修改列表中的元素。(错)

19、表达式 {1, 3, 2} > {1, 2, 3} 的值为True。(错)

20、列表对象的extend()方法属于原地操作,调用前后列表对象的地址不变。(对)

二、填空题

1、表达式[1, 2, 3]*3的执行结果为__________。([1, 2, 3, 1, 2, 3, 1, 2, 3])

2、表达式[3] in [1, 2, 3, 4]的值为__________。(False)

3、列表对象的sort()方法用来对列表元素进行原地排序,该函数返回值为______。(None)

4、假设列表对象aList的值为[3, 4, 5, 6, 7, 9, 11, 13, 15, 17],那么切片aList[3:7]得到的值是______________。([6, 7, 9, 11])

5、使用列表推导式生成包含10个数字5的列表,语句可以写为_________。([5 for i in range(10)])

6、假设有列表a = ['name', 'age', 'sex']和b = ['小明', 18, '男'],请使用一个语句将这两个列表的内容转换为字典,并且以列表a中的元素为“键”,以列表b中的元素为“值”,这个语句可以写为_______________。(c = dict(zip(a, b)))

7、任意长度的Python列表、元组和字符串中最后一个元素的下标为_____。(-1)

8、Python语句list(range(1,10,3))执行结果为____________。([1, 4, 7])

9、表达式 list(range(5))的值为_____________。([0, 1, 2, 3, 4])

10、已知a = [1, 2, 3]和b = [1, 2, 4],那么id(a[1])==id(b[1])的执行结果为______。(True)

11、切片操作list(range(6))[::2]执行结果为___________。([0, 2, 4])

12、使用切片操作在列表对象x的开始处增加一个元素3的代码为______。(x[0:0] = [3])

13、字典中多个元素之间使用____________分隔开,每个元素的“键”与“值”之间使用________分隔开。(逗号、冒号)

14、字典对象的___________方法可以获取指定“键”对应的“值”,并且可以在指定“键”不存在的时候返回指定值,如果不指定则返回None。(get())

15、字典对象的_____________方法返回字典中的“键-值对”列表。(items())

16、字典对象的____________方法返回字典的“键”列表。(keys())

17、字典对象的______________方法返回字典的“值”列表。(values())

18、已知 x = {1:2},那么执行语句x[2] = 3之后,x的值为___________。

({1: 2, 2: 3})

19、表达式set([1, 1, 2, 3])的值为____________________。({1, 2, 3})

20、使用列表推导式得到100以内所有能被13整除的数的代码可以写作___________________________________。([i for i in range(100) if i%13==0])

三、程序练习

1.数据简单加密问题。

从前有一个称为”rot13”的简单加密方法,原理是:对于一个报文中出现的任何字母用其后(字母顺序)的第9个字母代替,循环实现。就是字母表的前9个字母用对应的后9个字母表示。举例说明:字母'A'用'J'代替,'B'用'K'代替,...,'M'用'L',...,'Z'用'I';小写字母同样类似。

问题是:用字符串给出一串报文,要求输出这串报文的密文。

首先建立一个字典,包含大小写52个字母作为键的字典,键对应的值也是字母,就是要代替的字母。第二步是根据字符串中的字母,在字典中查找键并返回对应的值。值记录在一个列表中。第三步,根据列表将列表中的元素整合字符串,这个串就是密文。

【参考代码】

txt = input("请输入一段英文:") # 原文

m1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"

m2 = "JKLMNOPQRSTUVWXYZABCDEFGHIjklmnopqrstuvwxyzabcdefghi"

l1 = list(m1)

l2 = list(m2)

dict1 = dict(zip(m1,m2))

print("字典1情况:",dict1) #字典1情况

list1 = []

for i in txt :

if i in dict1 :

data = (i)

else :

data = i

(data)

print("列表1情况:",list1) #列表1情况

list2 = ['']

for i in list1 :

list2[0] = list2[0]+i

print("列表2情况:",list2) #列表2情况

print("原文是:",txt) #原文

print("加密结果:",list2[0]) #最终加密结果

2.计算身份证的校验码。

计算身份证的校验码,根据身份证的前17位,输入数字,并将字符转换为数字,根据给定的权值表及相应的身份证检验码,进行校验码的计算。

【分析】身份证的校验码计算过程如下:

第一步:将身份证号码的第1位数字与7相乘;将身份证号码的第2位数字与9相乘;将身份证号码的第3位数字与10相乘;将身份证号码的第4位数字与5相乘;将身份证号码的第5位数字与8相乘;将身份证号码的第6位数字与4相乘;将身份证号码的第7位数字与2相乘;将身份证号码的第8位数字与1相乘;将身份证号码的第9位数字与6相乘;将身份证号码的第10位数字与3相乘;将身份证号码的第11位数字与7相乘;将身份证号码的第12位数字与9相乘;将身份证号码的第13位数字与10相乘;将身份证号码的第14位数字与5相乘;将身份证号码的第15位数字与8相乘;将身份证号码的第16位数字与4相乘;将身份证号码的第17位数字与2相乘。

第二步:将第一步身份证号码1~17位相乘的结果求和,全部加起来。

第三步:用第二步计算出来的结果除以11,这样就会出现余数为0,余数为1,余数为2,余数为3,余数为4,余数为5,余数为6,余数为7,余数为8,余数为9,余数为10共11种可能性。

第四步:如果余数为0,那对应的最后一位身份证的号码为1;如果余数为1,那对应的最后一位身份证的号码为0;如果余数为2,那对应的最后一位身份证的号码为X;如果余数为3,那对应的最后一位身份证的号码为9;如果余数为4,那对应的最后一位身份证的号码为8;如果余数为5,那对应的最后一位身份证的号码为7;如果余数为6,那对应的最后一位身份证的号码为6;如果余数为7,那对应的最后一位身份证的号码为5;如果余数为8,那对应的最后一位身份证的号码为4;如果余数为9,那对应的最后一位身份证的号码为3;如果余数为10,那对应的最后一位身份证的号码为2。

【参考代码】

str=input('输入您的身份证前17位:')

list1=list(str)

for i in range(17):

list1[i]=eval(list1[i]) # 将字符转换为数字列表

print("查看转换的数据列表:",list1)

wt=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2] # 定义权值表

sum=0

for i in range(17):

sum=sum+list1[i]*wt[i]

print("身份证号码1~17位相乘的结果和是:",sum)

s=sum%11

print("和除以11的余数为:",s)

# 在下面的字典中,s的值作为键,对应的值是身份证的校验码

dict1={0:'1',1:'0',2:'X',3:'9',4:'8',5:'7',6:'6',7:'5',8:'4',9:'3',10:'2'}

if s in dict1 :

print("余数对应的身份证校验码为:",(s))

3.设计一个字典dict1,name键为用户名,pwd键为密码。设计一个注册登录检查程序,将用户名和密码注册到字典中,然后进行登录,用户名和密码都正确时输出“欢迎(用户名)登录”信息,用户名或密码不正确则提示“用户或密码错误,请重新登录!”。

list1=[]

dict1={}

name=input("请注册用户名:")

pwd=input("请添加密码:")

if name!="" :

dict1["name"]=name

dict1["pwd"]=pwd

(dict1)

print(list1)

print("保存的字典数据是:",dict1)

print("请登录:")

login_name=input("请输入登录的用户名:")

login_pwd=input("请输入登录的密码:")

f=False

for i in list1:

if login_name==i["name"] and login_pwd==i["pwd"]:

f=True

print("欢迎%s登录!"%(login_name))

if f==False:


本文标签: 列表 使用 循环 语句 元素