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 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:
版权声明:本文标题:Python基础教程-习题(含答案) 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/b/1704860628a464716.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论