year = eval(input(\输入年份:\ # 可用int()函数 if (year%4==0 and year0 !=0) or (year@0==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==0]) 三、程序练习 1.数据简单加密问题。 从前有一个称为”rot13”的简单加密方法,原理是:对于一个报文中出现的任何字母用其后(字母顺序)的第9个字母代替,循环实现。就是字母表的前9个字母用对应的后9个字母表示。举例说明:字母'A'用'J'代替,'B'用'K'代替,...,'M'用'L',...,'Z'用'I';小写字母同样类似。 问题是:用字符串给出一串报文,要求输出这串报文的密文。 首先建立一个字典,包含大小写52个字母作为键的字典,键对应的值也是字母,就是要代替的字母。第二步是根据字符串中的字母,在字典中查找键并返回对应的值。值记录在一个列表中。第三步,根据列表将列表中的元素整合字符串,这个串就是密文。 【参考代码】 txt = input(\请输入一段英文:\ # 原文 m1 = \m2 = \l1 = list(m1) l2 = list(m2) dict1 = dict(zip(m1,m2)) print(\字典1情况:\ #字典1情况 list1 = [] for i in txt : if i in dict1 : data = dict1.get(i) else : data = i list1.append(data) print(\列表1情况:\ #列表1情况 list2 = [''] for i in list1 : list2[0] = list2[0]+i
print(\列表2情况:\ #列表2情况 print(\原文是:\ #原文 print(\加密结果:\ #最终加密结果 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(\查看转换的数据列表:\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位相乘的结果和是:\s=sum print(\和除以11的余数为:\# 在下面的字典中,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(\余数对应的身份证校验码为:\ 3.设计一个字典dict1,name键为用户名,pwd键为密码。设计一个注册登录检查程序,将用户名和密码注册到字典中,然后进行登录,用户名和密码都正确时输出“欢迎(用户名)登录”信息,用户名或密码不正确则提示“用户或密码错误,请重新登录!”。 list1=[] dict1={} name=input(\请注册用户名:\pwd=input(\请添加密码:\if name!=\ dict1[\ dict1[\ list1.append(dict1) print(list1) print(\保存的字典数据是:\print(\请登录:\login_name=input(\请输入登录的用户名:\login_pwd=input(\请输入登录的密码:\f=False for i in list1: if login_name==i[\ f=True print(\欢迎%s登录!\if f==False: